poudriere
poudriere copied to clipboard
Cannot update CURRENT snapshot jail (-m ftp) with -u
I create CURRENT and STABLE jails via -c -m ftp, which creates jails via snapshots (either official, or otherwise: allbsd, etc)
Jail configuration for these are:
poudriere jail -i -j 11amd64
Jail name: 11amd64
Jail version: 11.0-CURRENT
Jail arch: amd64
Jail method: ftp
Jail mount: /storage/poudriere/jails/11amd64
Jail fs: storage/poudriere/jails/11amd64
Jail updated: 2015-08-04 20:38:22
Tree name: default
Tree method: portsnap
When attempting to upgrade these jails via -u [-m ftp]
, the following output is observed:
poudriere jail -u -j 11amd64 -m ftp
[00:00:00] ====>> Upgrading using ftp
/etc/resolv.conf -> /storage/poudriere/jails/11amd64/etc/resolv.conf
Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching public key from update2.freebsd.org... failed.
Fetching public key from update5.freebsd.org... failed.
Fetching public key from update4.freebsd.org... failed.
Fetching public key from update6.freebsd.org... failed.
Fetching public key from update3.freebsd.org... failed.
No mirrors remaining, giving up.
11.0-CURRENT
[00:00:03] ====>> Recording filesystem state for clean... done
I'm not sure whether this is a bug, a regression, or unsupported. Suffice it to say, poudriere should be able to update jails based on snapshots from ftp's using the -u flag, without "-m ftp" arguments if the jail has already been created/set to use that method.
The following cases should work:
- Update jail using same method it was created with (eg: official -> newer official snapshot)
- Update jail using same method but different url (eg: official -> newer allbsd snapshot)
- Update jail (that wasn't created using snapshots), using a new/different method and/or url
Same issue here. Running poudirere-3.2.6 on FreeBSD 11.1-RELEASE-p9.
… CURRENT … a bug, a regression, or unsupported. …
Something at the back of my mind tells me, unsupported As far as I know, it's not yet supported.
From design · freebsd/poudriere Wiki:
Via ftp
The update of the jail is done by calling
freebsd-update
…
– and base is not yet packaged.
svn
method works, e.g.
root@momh167-gjp4-hpelitebook8570p-freebsd:~ # poudriere jail -l
JAILNAME VERSION ARCH METHOD TIMESTAMP PATH
current 12.0-CURRENT 1200062 r333256 amd64 svn 2018-05-05 00:35:35 /usr/local/poudriere/jails/current
root@momh167-gjp4-hpelitebook8570p-freebsd:~ # poudriere jail -u -j current
– but seems to take a long time (like, more than five hours here). I guess the length is to be expected when building.
Just creating a new 12.0-current is quite quick:
poudriere jail -c -j 120-amd64-2 -v 12.0-ALPHA9 -m http
… jails via snapshots (either official, …
https://download.freebsd.org/ftp/snapshots/amd64/13.0-CURRENT/ for example, the most recent snapshot is 2019-Jan-03.
I could occasionally revisit the address to tell whether there's something more recent, but is there a more methodical approach to knowing when new snapshots become available?
Postscript
Found: http://beefy18.nyi.freebsd.org/jail.html?mastername=main-amd64-default
OT from this issue … if your host -CURRENT system is head – and if you take time to update the host from /usr/src/
– then (a hint from https://forums.freebsd.org/threads/does-poudriere-update-its-jails.39625/#post-404486) creation might take around five minutes:
root@momh167-gjp4-8570p:~ # date ; uname -v
Wed Jan 9 05:41:16 GMT 2019
FreeBSD 13.0-CURRENT r342851 GENERIC-NODEBUG
root@momh167-gjp4-8570p:~ # time poudriere jail -c -j head -v head -a amd64 -m src=/usr/src
[00:00:00] Creating head fs at /usr/local/poudriere/jails/head... done
[00:00:00] Copying /usr/src to /usr/local/poudriere/jails/head/usr/src... done
[00:01:52] Starting make installworld
--- installworld ---
make[1]: "/usr/obj/usr/src/amd64.amd64/toolchain-metadata.mk" line 1: Using cached toolchain metadata from build at momh167-gjp4-8570p on Mon Jan 7 19:41:47 GMT 2019
--- _installcheck_world ---
--------------------------------------------------------------
>>> Install check world
--------------------------------------------------------------
--- installworld ---
mkdir -p /tmp/install.uRrVXKkI
progs=$(for prog in [ awk cap_mkdb cat chflags chmod chown cmp cp date echo egrep find grep id install ln make mkdir mtree mv pwd_mkdb rm sed services_mkdb sh sort strip sysctl test true uname wc zic tzsetup makewhatis; do if progpath=`which $prog`; then echo $progpath; else echo "Required tool $prog not found in PATH." >&2; exit 1; fi; done); libs=$(ldd -f "%o %p\n" -f "%o %p\n" $progs 2>/dev/null | sort -u | while read line; do $line; if [ "$2 $3" != "not found" ]; then echo $2; else echo "Required library $1 not found." >&2; exit 1; fi; done); cp $libs $progs /tmp/install.uRrVXKkI
cp -R ${PATH_LOCALE:-"/usr/share/locale"} /tmp/install.uRrVXKkI/locale
cd /usr/src; MACHINE_ARCH=amd64 MACHINE=amd64 CPUTYPE= CC="cc -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" CXX="c++ -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" CPP="cpp -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" AS="as" AR="ar" LD="ld" LLVM_LINK="" NM=nm OBJCOPY="objcopy" RANLIB=ranlib STRINGS= SIZE="size" PATH=/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin::/tmp/install.uRrVXKkI LD_LIBRARY_PATH=/tmp/install.uRrVXKkI PATH_LOCALE=/tmp/install.uRrVXKkI/locale make -f Makefile.inc1 INSTALL="install -N /usr/src/etc" MTREE_CMD="mtree -N /usr/src/etc" __MAKE_SHELL=/tmp/install.uRrVXKkI/sh reinstall; MACHINE_ARCH=amd64 MACHINE=amd64 CPUTYPE= CC="cc -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" CXX="c++ -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" CPP="cpp -target x86_64-unknown-freebsd13.0 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin" AS="as" AR="ar" LD="ld" LLVM_LINK="" NM=nm OBJCOPY="objcopy" RANLIB=ranlib STRINGS= SIZE="size" PATH=/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin::/tmp/install.uRrVXKkI LD_LIBRARY_PATH=/tmp/install.uRrVXKkI PATH_LOCALE=/tmp/install.uRrVXKkI/locale rm -rf /tmp/install.uRrVXKkI
--- reinstall ---
--------------------------------------------------------------
>>> Making hierarchy
--------------------------------------------------------------
cd /usr/src; make -f Makefile.inc1 LOCAL_MTREE= hierarchy
--- hierarchy ---
…
--- installconfig_subdir_usr.sbin/wpa/ndis_events ---
===> usr.sbin/wpa/ndis_events (installconfig)
[00:05:03] Recording filesystem state for clean... done
[00:05:03] Jail head 13.0-CURRENT 1300008 amd64 is ready to be used
145.971u 70.271s 5:03.07 71.3% 810+2288k 238517+198950io 15856pf+0w
root@momh167-gjp4-8570p:~ # clear
root@momh167-gjp4-8570p:~ # date
Wed Jan 9 06:20:17 GMT 2019
root@momh167-gjp4-8570p:~ # poudriere jail -i -j head
Jail name: head
Jail version: 13.0-CURRENT 1300008
Jail arch: amd64
Jail method: src=/usr/src
Jail mount: /usr/local/poudriere/jails/head
Jail fs: copperbowl/poudriere/jails/head
Jail updated: 2019-01-09 05:41:28
Tree name: default
Tree method: portsnap
Status: stopped:done:
Building started: 2019-01-08 21:20:12
Elapsed time: 03:22:22
Packages built: 3
Packages failed: 0
Packages ignored: 0
Packages skipped: 0
Packages total: 3
Packages left: 0
root@momh167-gjp4-8570p:~ #
An update (from the same local source) e.g.
poudriere jail -u -j head
– can be remarkably quick. Two minutes in my case.