Is it possible to run debootstrap within a fakeroot environment?

7,974

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.

Share:
7,974

Related videos on Youtube

Petr
Author by

Petr

Updated on September 18, 2022

Comments

  • Petr
    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 without root privileges, as it really shouldn't need any privileged resources. I thought that I'd just run the whole script using fakeroot, but debootstrap fails with

    W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc
    

    Is there a way around that?

  • Petr
    Petr almost 9 years
    The problem is that debootstrap itself is calling chroot, and I couldn't find a way how to tell it it needs to use fakechroot.
  • Gilles 'SO- stop being evil'
    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
    bnewbold almost 9 years
    @PetrPudlák: the fakechroot man page gives an example invocation as fakechroot fakeroot debootstrap sid /tmp/sid
  • user268396
    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
    Admin almost 2 years