Message ID | 20170714100450.5223-1-list@eworm.de |
---|---|
State | Superseded |
Headers | show |
Series | [devtools,1/1] arch-nspawn: get mirror url from chroot's pacman.conf | expand |
Christian Hesse <list@eworm.de> on Fri, 2017/07/14 12:04: > From: Christian Hesse <mail@eworm.de> > > My system has a mirror configuration where only the host can access a > special url from pacman.conf but chroots and containers fail. > > Instead of host's pacman.conf use $pac_conf or pacman.conf from chroot. > This still uses host's /etc/pacman.d/mirrorlist and should achieve the > expected results. Oh, this breaks if the chroot has repositories configured that the host does not have. *sigh*
On Fri, 14 Jul 2017 06:04:50 -0400, Christian Hesse wrote: > -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') > +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') > # shellcheck disable=2016 > [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') While we're at it: what is the point of setting host_mirror anyway? I've had users complain about it causing problems like this and others.
On Sat, Jul 15, 2017, 01:10 Luke Shumaker <lukeshu@lukeshu.com> wrote: > On Fri, 14 Jul 2017 06:04:50 -0400, > Christian Hesse wrote: > > -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools > 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') > > +host_mirror=$(pacman --config > "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp > extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') > > # shellcheck disable=2016 > > [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo > "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') > > While we're at it: what is the point of setting host_mirror anyway? > I've had users complain about it causing problems like this and > others. > Our build server also hosts a compete rsync'ed mirror, so the first server in the mirrorlist has a file:// URL, while additional cache dirs point into the mirror package pool. > <div class="gmail_quote"><div dir="ltr">On Sat, Jul 15, 2017, 01:10 Luke Shumaker <<a href="mailto:lukeshu@lukeshu.com">lukeshu@lukeshu.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, 14 Jul 2017 06:04:50 -0400,<br> Christian Hesse wrote:<br> > -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')<br> > +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')<br> > # shellcheck disable=2016<br> > [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')<br> <br> While we're at it: what is the point of setting host_mirror anyway?<br> I've had users complain about it causing problems like this and<br> others.<br></blockquote></div><div><br></div><div>Our build server also hosts a compete rsync'ed mirror, so the first server in the mirrorlist has a file:// URL, while additional cache dirs point into the mirror package pool.</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> </blockquote></div>
diff --git a/arch-nspawn.in b/arch-nspawn.in index c21b2ce..ffc7267 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -59,7 +59,7 @@ else fi # shellcheck disable=2016 -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +host_mirror=$(pacman --config "${pac_conf:-$working_dir/etc/pacman.conf}" --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') # shellcheck disable=2016 [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')