binary package maintenance tool

Dominic Fandrey kamikaze at
Sat May 9 18:52:59 UTC 2009

Alexey V. Degtyarev wrote:
>>> The port sysutils/bsdadminscripts has just been updated to
>>> version 6.0, which features pkg_upgrade, a binary only
>>> package maintenance tool.
>>> It makes no use of the ports tree, so unlike other build
>>> oriented tools, you do not need a copy of the ports tree
>>> to keep your packages up to date.
>>> It only requires an INDEX file from pointyhead or your
>>> personal Tinderbox.
>> Great! T've done some tests at my home machine and I really
>> like this tool. I was deaming for it for a long time. And
>> it works much faster than "portupgrade -PP".
>  pkg_upgrade works very good for me too, except one thing:
>  Assume package pkg-1.1 installed on the system and is going to upgrade.
>  The pkg-1.2 version of package requires a little bit more packages that
>  required by pkg-1.1: + a new one package newpkg-1.1 for example. After
>  pkg_upgrade upgrades package `pkg', there is no newpkg-1.1 installed on
>  the system and there is a error occured while updating. Here is the
>  illustration with some names screened:
> $ export PACKAGESITE=
> $ pkg_upgrade -na
> Update <pkg-1.1> to <pkg-1.2>(nice/pkg)
> $ pkg_upgrade -a
> /usr/ports/packages/All/pkg-1.2.tbz        100% of 3537  B 5464 kBps
> ===> Update <pkg-1.1> to <pkg-1.2>
> (nice/pkg)
> pkg_add: could not find package newpkg-1.1  (proceeding anyway)
> pkg_add: can't open dependency file '/var/db/pkg/newpkg-1.1/+REQUIRED_BY'!
> dependency registration is incomplete
> => Update <pkg-1.1> to <pkg-1.2>
> (nice/pkg) succeeded
> $ pkg_info -Ex newpkg
> $ pkg_info -Ex pkg
> pkg-1.2
>  I think that pkg_upgrade should respect a new package's dependency list
>  and pre-fetch all the new dependencies before pkg_add.

This means that the missing dependency is not listed in the index and hence
not available for download or the index file provided by pointyhead is
simply broken. Because pkg_upgrade does in deed download all dependencies
(that are also listed in the index) and does not install a single package
until all required packages have been downloaded.

At least it did that in many, many tests I have performed.

More information about the freebsd-ports mailing list