Upgrading sets of packages?

Ivan Voras ivoras at freebsd.org
Fri Jan 31 09:35:39 UTC 2014


Hello,

An example of a very common operation I have to do is to upgrade PHP.
Here's what I have one one of my machines:

# pkg info -q | grep php
php5-5.3.8
php5-bcmath-5.3.8
php5-bz2-5.3.8
php5-ctype-5.3.8
php5-curl-5.3.8
php5-dom-5.3.8
php5-exif-5.3.8
php5-extensions-1.6
php5-fileinfo-5.3.8
php5-filter-5.3.8
php5-ftp-5.3.8
php5-gd-5.3.8
php5-hash-5.3.8
php5-iconv-5.3.8
php5-json-5.3.8
php5-ldap-5.3.8
php5-mbstring-5.3.8
php5-mcrypt-5.3.8
php5-mysql-5.3.8
php5-mysqli-5.3.8
php5-openssl-5.3.8
php5-pcntl-5.3.8
php5-pdo-5.3.8
php5-pdo_sqlite-5.3.8
php5-pgsql-5.3.8
php5-phar-5.3.8
php5-posix-5.3.8
php5-session-5.3.8
php5-snmp-5.3.8
php5-soap-5.3.8
php5-sockets-5.3.8
php5-sqlite-5.3.8
php5-sqlite3-5.3.8
php5-tokenizer-5.3.8
php5-xml-5.3.8
php5-xmlreader-5.3.8
php5-xmlrpc-5.3.8
php5-xmlwriter-5.3.8
php5-zip-5.3.8
php5-zlib-5.3.8

All of the module packages depend on the php package.

Simply running "pkg install php5" only wants to upgrade the php5
package, which will obviously break everything:

----
Updating repository catalogue
The following 2 packages will be installed:

    Upgrading libxml2: 2.7.8_1 -> 2.8.0_3
    Upgrading php5: 5.3.8 -> 5.4.24

The installation will require 2 MB more space
----

Trying to upgrade the php5-extensions package which depends on all the
rest also doesn't work as it wants to upgrade only a subset of the
packages:

----
Updating repository catalogue
The following 21 packages will be installed:

    Upgrading libxml2: 2.7.8_1 -> 2.8.0_3
    Upgrading sqlite3: 3.8.0.2 -> 3.8.2
    Upgrading php5: 5.3.8 -> 5.4.24
    Upgrading php5-xmlwriter: 5.3.8 -> 5.4.24
    Upgrading php5-dom: 5.3.8 -> 5.4.24
    Upgrading php5-xml: 5.3.8 -> 5.4.24
    Upgrading php5-simplexml: 5.3.8 -> 5.4.24
    Upgrading php5-ctype: 5.3.8 -> 5.4.24
    Upgrading php5-posix: 5.3.8 -> 5.4.24
    Upgrading php5-hash: 5.3.8 -> 5.4.24
    Upgrading php5-filter: 5.3.8 -> 5.4.24
    Upgrading php5-tokenizer: 5.3.8 -> 5.4.24
    Upgrading php5-json: 5.3.8 -> 5.4.24
    Upgrading php5-sqlite3: 5.3.8 -> 5.4.24
    Upgrading php5-pdo: 5.3.8 -> 5.4.24
    Upgrading php5-iconv: 5.3.8 -> 5.4.24
    Upgrading php5-phar: 5.3.8 -> 5.4.24
    Upgrading php5-session: 5.3.8 -> 5.4.24
    Upgrading php5-xmlreader: 5.3.8 -> 5.4.24
    Upgrading php5-pdo_sqlite: 5.3.8 -> 5.4.24
    Upgrading php5-extensions: 1.6 -> 1.7

The installation will require 3 MB more space
----

For example, the php5-gd package isn't included in the above list even
though it is depended on by php5-extenions:

# pkg info -d php5-extensions | grep gd
    php5-gd-5.3.8

and it depends on php5:

# pkg info -r php5 | grep gd
    php5-gd-5.3.8

My question is: what is the correct way to upgrade (in this case) all
of the php5-* packages? Running "pkg install `pkg info -q | grep php`"
doesn't work because it tries to install packages by including the
full version number, and those old packages are neither what I want
nor available, and I can't find an argument to "pkg info" which only
shows the base package names without the extensions.

Further, it looks like "pkg upgrade" doesn't accept package names,
which seems odd.


More information about the freebsd-pkg mailing list