grml / grml-debootstrap

wrapper around debootstrap
59 stars 27 forks source link

Implement clean_chroot to avoid host env variables like TMP to leak into the chroot #280

Open mika opened 4 weeks ago

mika commented 4 weeks ago

Some implementation notes:

If we use env -i, then we can no longer export shell functions. So export -f "error_handler" had to be removed.

PATH needs to be set, otherwise clean_chroot "$MNTPOINT" grub-install would fail, because grub-install is in /usr/sbin/grub-install in the chroot.

http_proxy has to be passed otherwise apt-cacher-ng would be broken by this commit. While at it, I completed it and added https_proxy, and ALL_PROXY there too for completeness sake.

Which environment variables are passed into the chroot is currently hardcoded.

FTR, I was also wondering if it was better to use a similar mechanism to the one you're using for CHROOT_VARIABLES, but that would not work because only the chroot-script reads those. But we're not only using that but also other calls from grml-debootstrap to chroot (now clean_chroot), so the environment variables need to be set at the grml-debootstrap level.

Closes: grml/grml-debootstrap#232

mika commented 4 weeks ago

This is the result of squashing the commits from https://github.com/grml/grml-debootstrap/pull/267 and extending the commit message accordingly.

What I'm not entirely sure about yet is the usage of calls like:

clean_chroot "$MNTPOINT" DEBIAN_FRONTEND=$DEBIAN_FRONTEND apt-get [...]

@adrelanos are you sure this behaves as expected? :thinking: Would it make sense to support DEBIAN_FRONTEND via the additional_vars you implemented in clean_chroot()? :thinking: