Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Jul 2014 11:12:11 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        pkg@freebsd.org
Subject:   "pkg upgrade" doesn't
Message-ID:  <864mz1fno4.fsf@nine.des.no>

next in thread | raw e-mail | index | archive | help
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=3Dyes, 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=20=20=20=20=20=20
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=20=20
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
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?864mz1fno4.fsf>