Comment 4 for bug 1890263

Revision history for this message
Bryce Harrington (bryce) wrote :

For testing method C, I've backported all the relevant PHP pieces to this PPA:

    https://launchpad.net/~bryce/+archive/ubuntu/modphp-upgrade-lp1890263-unfixed-backports

(C.1) Considering only bionic, installation style 1 works as expected:

$ sudo apt-get install libapache2-mod-php
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.2 libaprutil1-dbd-sqlite3
  libaprutil1-ldap liblua5.2-0 libsodium23 php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache
  php7.2-readline ssl-cert
0 upgraded, 17 newly installed, 0 to remove and 0 not upgraded.

$ sudo add-apt-repository -yus ppa:bryce/modphp-upgrade-lp1890263-unfixed-backports
...

$ sudo apt-get full-upgrade
The following packages were automatically installed and are no longer required:
  php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libapache2-mod-php7.2
The following NEW packages will be installed:
  libapache2-mod-php7.4 libpcre2-8-0 php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline
The following packages will be upgraded:
  libapache2-mod-php php-common

Notably, this successfully moved from the old modphp to the new one, but did not uninstall other php7.2 binary packages. The system ended with both php7.2 and php7.4, but only with libapache2-mod-php7.4. I think this is what we want.

To verify, I also purged all of the aforementioned packages, and re-installed libapache2-mod-php with the backport PPA still enabled. As expected and as desired, it directly installs libapache2-mod-php7.4 (7.4.3-4ubuntu2.11~bionic1).

(C.2) Next, in a clean new bionic container fully up to date, I installed the versioned modphp:

$ sudo apt-get install libapache2-mod-php7.2
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.2 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  liblua5.2-0 libsodium23 php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline ssl-cert
0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded.

Notice that one fewer package is installed in this situation, namely the virtual package libapache2-mod-php. (This fact will cause problems later.)

$ sudo add-apt-repository -yus ppa:bryce/modphp-upgrade-lp1890263-unfixed-backports
...

$ sudo apt-get full-upgrade
The following packages will be upgraded:
  php-common
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

So in upgrading with the PPA enabled, php-common gets upgraded but this does not trigger any php components to upgrade, so we're left with php7.2 and the old modphp.