Home

wrpseudo edited this page Apr 30, 2012 · 6 revisions
Clone this wiki locally

Home

NOTE: With pseudo’s adoption by the Yocto project, this repository is no longer the master. I’ll try to remember to keep it updated, but the official master repo is now git://git.yoctoproject.org/pseudo.

pseudo — an analogue to sudo

OVERVIEW:

The pseudo utility offers a way to run commands in a virtualized “root” environment, allowing ordinary users to run commands which give the illusion of creating device nodes, changing file ownership, and otherwise doing things necessary for creating distribution packages or filesystems. People have asked why we don’t just use fakeroot: WhyNotFakeroot?

To configure, run the provided configure script. Note that this is NOT an autoconf script.

Configure options:

--prefix=/path/to/install/dir
--with-sqlite=/path/to/sqlite/dir
--bits={32,64}
--suffix=<text>

There is no default prefix. The default for sqlite is /usr, and for bits is 32. You need a reasonably modern sqlite3 — it has to have sqlite3_clear_bindings(), which at least one default sqlite3 install did not. (But that was dated 2006, so I’m not sure this will affect most readers.)

The suffix value can be used to append a particular text string to file names (such as libpseudo.so). This was used in the WR environment to create libpseudo-.so, to ensure that libpseudo was rebuilt if the host libc changed.

This code is not particularly portable, but works on both Linux and Darwin (64-bit Intel only, for now).

Limited user documentation is provided in the given man page files (these are not currently installed, merely provided in the source directory), and some documentation on internals is provided in the doc/ directory.

FUTURE DIRECTIONS:

  • There may be more work to do on the chroot() functionality.
  • I have no intention of converting to autoconf. It is the wrong tool for the job.

Please feel free to send bug feedback, change requests, or general commentary.

ACKNOWLEDGEMENTS:

My various coworkers, both engineering and management, made this possible. While I did most of the actual typing, this code has benefitted greatly from detailed code reviews, excellent reproducers for bugs, and the consistent support of the whole group for the project. It’s been a great deal of fun, and I’m pretty happy that we’re finally ready to make it available for other people to look at.

Also, I think it’s safe to say that this project owes its success to sqlite. As their web site puts it: “Small. Fast. Reliable. Choose any three.”