poudriere icon indicating copy to clipboard operation
poudriere copied to clipboard

Cannot update CURRENT snapshot jail (-m ftp) with -u

Open koobs opened this issue 9 years ago • 6 comments

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

koobs avatar Aug 05 '15 03:08 koobs

Same issue here. Running poudirere-3.2.6 on FreeBSD 11.1-RELEASE-p9.

norrland avatar Apr 05 '18 12:04 norrland

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.

PkgBase - FreeBSD Wiki

grahamperrin avatar May 01 '18 19:05 grahamperrin

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.

grahamperrin avatar May 13 '18 12:05 grahamperrin

Just creating a new 12.0-current is quite quick:

poudriere jail -c -j 120-amd64-2 -v 12.0-ALPHA9 -m http

girgen avatar Oct 11 '18 22:10 girgen

… 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

grahamperrin avatar Jan 09 '19 06:01 grahamperrin

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.

grahamperrin avatar Jan 09 '19 06:01 grahamperrin