"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