"pkg upgrade" doesn't
Dag-Erling Smørgrav
des at des.no
Tue Jul 1 09:12:13 UTC 2014
I have two package repos, des-freebsd (freebsd ports tree) and des-local
(home-made packages). Since poudriere is unable to build from a ports
tree that has external dependencies, I have copies of pkg and pkg-devel
in des-local.
poudriere is set up to use pkg 1.2 (WITH_PKGNG=yes, not devel) to build
packages, but I assume it still uses whatever is installed locally to
generate the repo.
I am running:
poudriere-devel-3.0.99.20140619_1 (from des-freebsd)
pkg-devel-1.3.0.b8_2 (from des-local)
des-freebsd has pkg-devel-1.3.0.b8_1, which is 1.3.0.b8 + the repopath
patch (103236), while des-local has 1.3.0.b8_2, which is 1.3.0.b8 + a
larger set of patches from git, equivalent to e230daa (which is
essentially equivalent to 1.3.0.b9).
After 1.3.0.b9 came out, I reverted my local changes, updated my ports
tree and tried a partial bulk:
# poudriere bulk -j 100amd64 ports-mgmt/{pkg,poudriere}{,-devel}
which built poudriere-devel-3.0.99.20140626 and pkg-devel-1.3.0.b9 in
the des-freebsd repository.
However, pkg upgrade did not offer to upgrade pkg-devel. So:
# pkg-update -f
[...]
# pkg rquery %n-%v pkg-devel
pkg-devel-1.3.0.b8_2
pkg-devel-1.3.0.b8_1
(the first is des-local, the second is des-freebsd)
Wait, what? I just built b9!
# ls /poudriere/data/packages/100amd64-default/.latest/All/pkg-devel-1.3.0.b*
/poudriere/data/packages/100amd64-default/.latest/All/pkg-devel-1.3.0.b8_1.txz
/poudriere/data/packages/100amd64-default/.latest/All/pkg-devel-1.3.0.b9.txz
Question 1: why did poudriere not remove b8_1 before building b9?
Let's regenerate the repo, but to be on the safe side, use 1.2:
# ./pkg-static-1.2 -v
1.2.7_3
# ./pkg-static-1.2 repo /poudriere/data/packages/100amd64-default/.latest/
Generating repository catalog in /poudriere/data/packages/100amd64-default/.latest/: done!
Now the repo looks good:
# pkg update -f
[...]
# pkg rquery %n-%v pkg-devel
pkg-devel-1.3.0.b8_2
pkg-devel-1.3.0.b9
but still:
# pkg upgrade
Updating repository catalogue
pkg: http://pkg.des.no/local/freebsd:10:x86:64/meta.txz: Not Found
pkg: repository des-local has no meta file, using default settings
des-local repository catalogue is up-to-date, no need to fetch fresh copy
pkg: http://pkg.des.no/freebsd/freebsd:10:x86:64/meta.txz: Not Found
pkg: repository des-freebsd has no meta file, using default settings
des-freebsd repository catalogue is up-to-date, no need to fetch fresh copy
Your packages are up to date
Maybe it doesn't want to upgrade a package installed from des-local to a
newer version from a different repo? Let's force it:
# pkg install -r des-freebsd -f pkg-devel
Updating "des-freebsd" repository catalogue
pkg: http://pkg.des.no/freebsd/freebsd:10:x86:64/meta.txz: Not Found
pkg: repository des-freebsd has no meta file, using default settings
des-freebsd repository catalogue is up-to-date, no need to fetch fresh copy
The most recent version of packages are already installed
BTW, it would be nice to have a) a query pattern that prints the
repository a package was installed from and b) a "pkg set" option to
change that.
DES
--
Dag-Erling Smørgrav - des at des.no
More information about the freebsd-pkg
mailing list