I recently needed to install the beets media organiser on Gentoo and found it needed a lot of packages to be unmasked. Rather than install it directly from pip
and opted to install it inside a small Arch Linux container. I consider this a trial run before I move my Firefox installation from the VM I’m authoring this post to a container on the host.
Note that this method of working means you’ll have duplicate packages on your host system but, as they say, space is cheap, right?
Step 1: Acquiring the packages
Go ahead and download the bootstrap image from one of your favourite mirrors. The file name as of writing is ‘archlinux-bootstrap-2020.12.01-x86_64.tar.gz’. Note that I use the xattrs command line option for wget so I can remember from where I got the file. You can view the extended attributes by using `getfattr -d $FILENAME`.
$ wget --xattrs https://$HOST/archlinux/iso/2020.12.01/archlinux-bootstrap-2020.12.01-x86_64.tar.gz
Step 2: Creating the container directories
I always find this a bit of a chicken and egg problem – how do you name the directory in a way that reflects what you’re going to use it for. I’ve general stuck with writing the date of the initial creation as the directory name.
$ mkdir $HOME/containers/archlinux/2020-12-06 $ cd !$
Step 3: Launching the container and copying in the bootstrap directory.
Note that you need to run this as root.
# tar xzpf archlinux-bootstrap-2020.12.01-x86_64.tar.gz --strip-components=1
Step 4: Selecting a nearby mirror
Edit the mirrorlist file and uncomment the appropriate mirror.
# vim etc/pacman.d/mirrorlist
Step 5: Launching the container
This is where the magic of systemd-nspawn comes in. You can simply run the following (as root unfortunately)…
# systemd-nspawn -D ~user/containers/archlinux/2020-12-06