От: Dan McDonald <[email protected]> Дата: Wednesday, July 1, 2015 19:43 > > > On Jul 1, 2015, at 9:20 AM, Jim Klimov <[email protected]> wrote: > > > > The corresponding part of the script (and exact command-lines > involved) are here: > > > > > > ... > > > > { echo "===== > Updating PKG software itself" > > > ### This clause should fail if no 'pkg' updates were available, > or if a > > > ### chrooted upgrade attempt with the new 'pkg' failed - both > ways fall > > > ### through to altroot upgrade attempt > > if > /usr/bin/pkg -R "$BENEW_MNT" update --no-refresh --accept --deny- > new-be --no-backup-be pkg; then \ > > echo "===== Updating the image with new PKG software via chroot" > > chroot "$BENEW_MNT" /usr/bin/pkg -R / image-update --no-refresh > >--accept --deny-new-be --no-backup-be > > > else false; fi; } || \ > > { echo "===== > Updating the image with old PKG software via altroot" > > > /usr/bin/pkg -R "$BENEW_MNT" image-update --no-refresh --accept - > -deny-new-be --no-backup-be; } || \ > > { echo "===== > Updating the image with old PKG software via altroot and allowed > refresh"> /usr/bin/pkg -R "$BENEW_MNT" image-update --accept > --deny-new-be --no-backup-be; } > > Can you run these, one at a time, by hand, so we all can see the > exact output per command that's run? It'll help at least > me get a better bead on what's wrong. > > Thanks, > Dan
Most of the output was in the screenshot just above that, and I guess I found a workaround that should suffice (will test more today), but for the sake of completeness, here goes: The old BE was OmniOS bloody updated a month ago (20150602Z070407), new one with an updated pkg program was made yesterday, starting as the old one's clone (export BENEW=omnios-20150701Z065339-test) and the relevant tree was mounted into "/a" with my splitroot scripts from github: ############################### :; ./beadm-mount.sh omnios-20150701Z065339-test does not exist or appear to be a valid BE. Please check that the name of the BE provided is correct. === Will clone omnios-20150602Z070407 into omnios-20150701Z065339-test, ok? Using these settings: BENEW=omnios-20150701Z065339-test BENEW_DS=rpool/ROOT/omnios-20150701Z065339-test BENEW_MNT=/a BENEW_MPT=/a BEOLD=omnios-20150602Z070407 BEOLD_DS=rpool/ROOT/omnios-20150602Z070407 BEOLD_MNT=/ BEOLD_MPT=/ EXCLUDE_ATTRS='org.opensolaris.libbe:uuid|canmount|mountpoint' RPOOL=rpool RPOOLALT= RPOOL_ROOT=rpool/ROOT RPOOL_SHARED=rpool/SHARED (Press ENTER or CTRL+C) Created successfully === Created omnios-20150701Z065339-test based on omnios-20150602Z070407 === Trying to replicate ZFS attributes from original to new BE... ===== '' org.opensolaris.libbe:policy=static org.openindiana.caiman:install=ready ===== '/opt' compression=gzip-9 ===== '/opt/local' compression=gzip-9 ===== '/usr' compression=gzip-9 ===== '/usr/local' compression=gzip-9 ===== '/var' compression=gzip-9 ===== '/var/db' ===== '/var/db/pkgin' ===== '/var/pkg' compression=gzip-9 ===== '/var/pkg/publisher' === Replicated custom ZFS attributes Mounted successfully on: '/a' === Mounted omnios-20150701Z065339-test at /a rpool/ROOT/omnios-20150701Z065339-test 153387008 721348 124154515 1% /a rpool/ROOT/omnios-20150701Z065339-test/usr 153387008 758981 124154515 1% /a/usr rpool/ROOT/omnios-20150701Z065339-test/usr/local 153387008 28 124154515 1% /a/usr/local rpool/ROOT/omnios-20150701Z065339-test/opt 153387008 1207927 124154515 1% /a/opt rpool/ROOT/omnios-20150701Z065339-test/opt/local 153387008 811058 124154515 1% /a/opt/local rpool/ROOT/omnios-20150701Z065339-test/var 153387008 18600 124154515 1% /a/var rpool/ROOT/omnios-20150701Z065339-test/var/db 153387008 33 124154515 1% /a/var/db rpool/ROOT/omnios-20150701Z065339-test/var/db/pkgin 153387008 665190 124154515 1% /a/var/db/pkgin rpool/ROOT/omnios-20150701Z065339-test/var/pkg 153387008 38370 124154515 1% /a/var/pkg rpool/ROOT/omnios-20150701Z065339-test/var/pkg/publisher 153387008 9364 124154515 1% /a/var/pkg/publisher === BE clone completed! === To upgrade from upstream do: pkg -R "/a" image-update --deny-new-be --no-backup-be && touch "/a/reconfigure" && bootadm update-archive -R "/a" && beadm umount "omnios-20150701Z065339-test" TS="`date -u "+%Y%m%dZ%H%M%S"`" zfs snapshot -r "rpool/SHARED@postupgrade-$TS" zfs snapshot -r "rpool/ROOT/omnios-20150701Z065339-test@postupgrade-$TS" beadm activate "omnios-20150701Z065339-test" === INFO: Unmounting any previous traces (if any - may fail), just in case === Unmounting BE omnios-20150701Z065339-test under '/a'... ===== beadm-unmounting omnios-20150701Z065339-test (/a)... Unmounted successfully Mounted successfully on: '/a' BE Active Mountpoint Space Policy Created omnios-20150701Z065339-test - /a 15.0K static 2015-07-01 17:09 ===== lofs-mount '/tmp' at '/a/tmp' ===== lofs-mount '/proc' at '/a/proc' ===== lofs-mount '/dev' at '/a/dev' ===== lofs-mount '/devices' at '/a/devices' ===== lofs-mount '/var/adm' at '/a/var/adm' ===== lofs-mount '/var/cores' at '/a/var/cores' ===== lofs-mount '/var/crash' at '/a/var/crash' ===== lofs-mount '/var/log' at '/a/var/log' ===== lofs-mount '/var/mail' at '/a/var/mail' ===== lofs-mount '/var/spool/clientmqueue' at '/a/var/spool/clientmqueue' ===== lofs-mount '/var/spool/mqueue' at '/a/var/spool/mqueue' ===== lofs-mount '/var/tmp' at '/a/var/tmp' BE Active Mountpoint Space Policy Created omnios-20150701Z065339-test - /a 15.0K static 2015-07-01 17:09 rpool/ROOT/omnios-20150701Z065339-test 153387008 721348 124154491 1% /a rpool/ROOT/omnios-20150701Z065339-test/usr 153387008 758981 124154491 1% /a/usr rpool/ROOT/omnios-20150701Z065339-test/usr/local 153387008 28 124154491 1% /a/usr/local rpool/ROOT/omnios-20150701Z065339-test/opt 153387008 1207927 124154491 1% /a/opt rpool/ROOT/omnios-20150701Z065339-test/opt/local 153387008 811058 124154491 1% /a/opt/local rpool/ROOT/omnios-20150701Z065339-test/var 153387008 18600 124154491 1% /a/var rpool/ROOT/omnios-20150701Z065339-test/var/db 153387008 33 124154491 1% /a/var/db rpool/ROOT/omnios-20150701Z065339-test/var/db/pkgin 153387008 665190 124154491 1% /a/var/db/pkgin rpool/ROOT/omnios-20150701Z065339-test/var/pkg 153387008 38370 124154491 1% /a/var/pkg rpool/ROOT/omnios-20150701Z065339-test/var/pkg/publisher 153387008 9364 124154491 1% /a/var/pkg/publisher /tmp 14744832 16 14744816 1% /a/tmp /proc 0 0 0 0% /a/proc /dev 0 0 0 0% /a/dev /devices 0 0 0 0% /a/devices /var/adm 124172025 3071 124168954 1% /a/var/adm /var/cores 5241366 19 5241347 1% /a/var/cores /var/crash 5242880 19 5242861 1% /a/var/crash /var/log 124173841 337 124173504 1% /a/var/log /var/mail 124173921 114 124173807 1% /a/var/mail /var/spool/clientmqueue 2096461 26 2096435 1% /a/var/spool/clientmqueue /var/spool/mqueue 2096392 30 2096362 1% /a/var/spool/mqueue /var/tmp 124515436 360944 124154491 1% /a/var/tmp === SUCCESS, (un)mounting operations completed for BE 'omnios-20150701Z065339-test' at '/a' ############################### So, the tree above is mounted. Updating pkg under /a altroot itself (note the script does this via "pkg -R /a update pkg", but in the example below I do it via chroot to verify it generally works for this): ############################### :; chroot /a /usr/bin/pkg -R / update pkg WARNING: The boot environment being modified is not the active one. Changes made will not be reflected on the next boot. Packages to update: 1 Create boot environment: No Create backup boot environment: Yes DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 16/16 0.3/0.3 183k/s PHASE ITEMS Removing old actions 1/1 Updating modified actions 18/18 Updating package state database Done Updating package cache 1/1 Updating image state Done Creating fast lookup database Done Reading search index Done Updating search index 1/1 ############################### Now, trying to update packages inside that altroot in different ways... What the script tries in the chroot: ############################### :; chroot /a /usr/bin/pkg -R / image-update --no-refresh --accept --deny-new-be --no-backup-be Creating Plan (Package planning: 425/427): / pkg update: The proposed operation cannot be performed on a live image. ############################### Trying to cheat with a non-verbatim "/" altroot string in the chroot: ############################### :; chroot /a /usr/bin/pkg -R /// image-update --no-refresh --accept --deny-new-be --no-backup-be pkg update: The proposed operation cannot be performed on a live image. ############################### Trying the two other ways the script attempts (original BE's old pkg over a new BE's packages) ############################### :; /usr/bin/pkg -R /a image-update --no-refresh --accept --deny-new-be --no-backup-be Checking that pkg(5) is up to date - WARNING: pkg(5) appears to be out of date, and should be updated before running update. Please update pkg(5) by executing 'pkg install pkg:/package/pkg' as a privileged user and then retry the update. ############################### ############################### :; /usr/bin/pkg -R /a image-update --accept --deny-new-be --no-backup-be WARNING: pkg(5) appears to be out of date, and should be updated before running update. Please update pkg(5) by executing 'pkg install pkg:/package/pkg' as a privileged user and then retry the update. ############################### Finally, reading through the sources at /usr/bin/pkg and /usr/lib/python2.*/vendor-packages/pkg/ I tracked the error message to decision points to is_liveroot() to obscure envvars and/or configuration settings that cause some boolean regarding required new BE's to be true or false regardless of package-reboot settings. Here is a piece which made me think it is intended for debug and so might not be a piece of committed API (would love to be wrong on this point): https://java.net/projects/ips/sources/pkg-gate/content/src/tests/api/t_bootenv.py#62 So, using PKG_LIVE_ROOT envvar, but no -R for altroot - no banana: ############################### :; PKG_LIVE_ROOT=/ chroot /a /usr/bin/pkg image-update --no-refresh --accept --deny-new-be --no-backup-be pkg update: The proposed operation cannot be performed on a live image. ############################### Using both PKG_LIVE_ROOT envvar and -R for altroot - this is what ultimately succeeded, though only with a non-verbatim-"/" root directory string in this envvar: ############################### :; PKG_LIVE_ROOT=/ chroot /a /usr/bin/pkg -R / image-update --no-refresh --accept --deny-new-be --no-backup-be pkg update: The proposed operation cannot be performed on a live image. :; PKG_LIVE_ROOT=/// chroot /a /usr/bin/pkg -R /// image-update --no-refresh --accept --deny-new-be --no-backup-be Packages to remove: 1 Packages to install: 2 Packages to update: 424 Services to change: 1 DOWNLOAD PKGS FILES XFER (MB) SPEED SUNWcs 1/427 476/7699 6.4/418.8 1.1M/s^C :; PKG_LIVE_ROOT=/// chroot /a /usr/bin/pkg -R / image-update --no-refresh --accept --deny-new-be --no-backup-be Packages to remove: 1 Packages to install: 2 Packages to update: 424 Services to change: 1 DOWNLOAD PKGS FILES XFER (MB) SPEED SUNWcs 1/427 96/7699 1.2/418.8 516k/s^C ###############################
_______________________________________________ OmniOS-discuss mailing list [email protected] http://lists.omniti.com/mailman/listinfo/omnios-discuss
