[Haifux] Announcing a new project - fakeroot-ng
shachar at shemesh.biz
Mon Dec 31 08:01:41 MSK 2007
alon at 8ln.org wrote:
> That being said, I don't really know why fake a chroot jail within
> fakeroot. I can understand why you'd like a userspace chroot jail, but
> you won't usually need to fake root at the time.
Actually, the two really come together. You use the same technology for
both chroot and fakeroot.
The real issue here, however, is testing embedded setups. I have a
script that builds a directory structure (with different owners and
device files), that then gets automatically compressed into a SQUASHFS
image and saved. When you boot from it, it turns into a real
environment. It's real useful, however, to test whether this environment
has all the devices, libraries and mounts that are required to, say, run
a certain program. The obvious solution is to chroot into it, and try
running the program.
With fakeroot I can run the entire build script as a regular user, which
is great because I don't want to compile a whole system as root, I don't
want to leave a passwordless sudo on my machines, the script runs for so
long (ever times compiling of wxWidgets or glibc? They take a LONG time
to compile) that a sudo with password expires, and that's before I start
talking about bugs in the DESTDIR mechanism, which, if run as real root,
may hose your entire system. fakeroot is ideal for those cases. I had to
write a whole set of wrapper scripts around fakeroot to make it store
its state (i.e. - the lies it tells the programs) between runs in a
reliable way (and let me tell you, that stretches fakeroot's abilities
to the limit).
However, once the environment is set up using fakeroot two things
happen. The first is that you don't want to use a real root in order to
chroot into it. You get used to good things :-). The second, and more
important one, is that you cannot use a real root. All the files there
have the wrong owners and none of the device files are actual devices.
Sometimes it doesn't matter. Sometimes it does.
And that, actually, is the real reason fakeroot-ng was written.
More information about the Haifux