| tags:Arch Linux Ubuntu bootstrap container chroot categories:Linux
Building Arch Linux packages under Ubuntu
A few times I had the need to build Arch Linux AUR packages which took a long time on my notebook. I had access to some faster hosts but they were all running Ubuntu (16.04 and later). To keep this in mind I write down how to create a Arch Linux build chroot inside an Ubuntu host.
Bootstrapping Arch Linux
First we need to get the Arch Linux base filesystem and extract it to a directory.
cd /var/lib/machines/
wget http://mirrors.dotsrc.org/archlinux/iso/2020.12.01/archlinux-bootstrap-2020.12.01-x86_64.tar.gz
btrfs subvolume create archlinux-builder
tar -zxvf archlinux-bootstrap-2020.12.01-x86_64.tar.gz
mv root.x86_64/* archlinux-builder
rmdir root.x86_64
Afterwards we can configure the DNS settings and chroot to it
cd archlinux-builder
cp /etc/resolv.conf etc
bin/arch-chroot .
Finally we can configure pacman inside the chroot and install/build software under a separate user
# select a mirror
vim /etc/pacman.d/mirrorlist
vim /etc/pacman.conf
pacman-key --init
pacman-key --refresh-keys
pacman -Syu
pacman -S --needed base-devel git
pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
useradd builder
echo "builder ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/builder
chown builder: -R yay
cd yay
su builder
makepkg -si
Now we can build Arch Linux AUR packages inside that chroot with makepkg or yay.
I usually save the freshly configured state of such a chroot with
# either with BTRFS
btrfs subvolume snapshot archlinux-builder archlinux-builder-fresh
# or with systemds machinectl
machinectl export-tar archlinux-builder archlinux-builder-fresh.tar