Is it possible to run debootstrap within a fakeroot environment?
Solution 1
In general, yes, it is possible to run debootstrap
as a non-root user by way of fakeroot
, but there are more details to it than that.
The immediate problem you seem to be having is trying to use chroot
as a non-root user; you need to use fakechroot
instead, in addition to fakeroot
. For example:
fakechroot fakeroot debootstrap sid /tmp/sid
Later problems you may run in to include creating loopback mounts or creating disk image partition tables as a non-root user.
Instead of working through all these details one by one, you may find it easier to use a debootstrap variant like polystrap, which also handles cross-compilation (eg, generate an armhf image from x86-64) if you end up wanting that some day.
Solution 2
I am surprised that nobody mentioned that debootstrap has an option --variant=fakechroot
to do exactly what you are trying to do.
Related videos on Youtube
Petr
Updated on September 18, 2022Comments
-
Petr over 1 year
I have a script that prepares an installation image by running
debootstrap
, does some modifications on the files and then copies the files to a disk image backed up by a file.This works under
root
, but I wanted to be able to run the script withoutroot
privileges, as it really shouldn't need any privileged resources. I thought that I'd just run the whole script usingfakeroot
, butdebootstrap
fails withW: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc
Is there a way around that?
-
Petr almost 9 yearsThe problem is that
debootstrap
itself is callingchroot
, and I couldn't find a way how to tell it it needs to usefakechroot
. -
Gilles 'SO- stop being evil' almost 9 years@PetrPudlák Did you try fakerootng instead of fakeroot? They operate differently, so sometimes one works when the other one doesn't. I don't know if fakerootng makes chroot work.
-
bnewbold almost 9 years@PetrPudlák: the fakechroot man page gives an example invocation as
fakechroot fakeroot debootstrap sid /tmp/sid
-
user268396 over 8 years@PetrPudlák: --variant=fakechroot should do that. Beyond that: unshare/lxc-userns-exec are a 'better' way to do this in combination with multistrap (i.e. the idea behind polystrap, which was rolled into brickstrap).
-
Admin almost 2 years