diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2018-12-01 19:36:23 -0500 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-08-18 21:11:12 +0200 |
commit | 2c1965614264a8550f843bbc18234aa2ae5f6122 (patch) | |
tree | 61bbba044b1222317ac53f7c0fe0f301020cb516 /arch-nspawn.in | |
parent | 206983235a046fccd55e37d09d733314174033ba (diff) | |
download | devtools32-2c1965614264a8550f843bbc18234aa2ae5f6122.tar.xz |
arch-nspawn: don't delete the guest gpg configuration
It's important to ensure the guest has up to date data because updating
a chroot after quite some time can potentially rely on updated
archlinux-keyring, something which the host machine either kept up to
date on or manually fixed, but it kills automation to mess around with
chroot configs like that. Alternatively, signed packages added with -I
need to work, and we assume the host is configured to accept these.
That is *not* a good reason to completely nuke whatever is in the guest,
though. A guest might have been manually configured to accept keys which
aren't accepted by the host; one example of this happening in practice,
is archlinux32 when building 32-bit packages from an archlinux host.
A simple solution is to use pacman-key's native facility to dump the
known keys and trust status from one gpg configuration, and import it
into another. Use this to append to, rather than overwrite, the chrooted
guest's pacman keyring.
While we are at it, fix a bug where we didn't respect the host's
pacman.conf settings for the GpgDir. While it isn't wildly likely a user
will choose to customize this, it is a valid and supported use case and
we must think about this ourselves.
Diffstat (limited to 'arch-nspawn.in')
-rw-r--r-- | arch-nspawn.in | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch-nspawn.in b/arch-nspawn.in index 6157685..929a6f5 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -102,6 +102,7 @@ copy_hostconf () { printf 'Server = %s\n' "${host_mirrors[@]}" | \ tee "$working_dir/etc/pacman.d/mirrorlist" > \ "$working_dir/etc/pacman.d/mirrorlist32" + gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1 [[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf" [[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf" |