14.04 Sauberes Upgrade von ppa: ondrej / php5-5.6 auf ppa: ondrej / php

10

Ich habe heute meine üblichen Serverpaket-Upgrades durchlaufen und festgestellt, dass ppa:ondrej/php5-5.6diese abgeschrieben wurden und wir jetzt auf aktualisieren müssen ppa:ondrej/php.

Die grundlegenden Anweisungen lauten wie folgt:

sudo add-apt-repository ppa:ondrej/php

Und dann:

sudo apt-get update
sudo apt-get upgrade --show-upgraded

Wenn ich mir das neue Repository anschaue, scheinen die Namen nicht vollständig zu stimmen, daher denke ich, dass ich einige apt-get-Installationen durchführen muss, um alle richtigen Pakete zu installieren. Es scheint auch, dass die Unterpakete (dh php-gd) für alle PHP-Versionen installiert werden und möglicherweise auch PHP 5.5 und PHP 7.0 installieren ( /programming/37197539/an-issue-after-ppaondrej- PHP5-Verwertung )

Meine Frage ist also, was ist der sauberste Weg, um ppas zu "wechseln" und die vorhandenen Pakete zu bereinigen, wenn man bedenkt, dass dies ein Produktionsserver ist? Sollte ich versuchen, alle von der vorherigen PPA installierten Pakete zu entfernen und / oder die PPA von meinem System zu entfernen?

Es befindet sich noch nicht auf der Hauptseite für die PPA, aber die Upgrade-Meldung war im Juni 2016 veraltet. Daher ist es keine sehr lange Zeitspanne, um unser Server-Image neu zu erstellen.

Ich habe diese Seite gefunden, die Anweisungen zum Auswechseln der von Apache verwendeten PHP-Version enthält: https://dzone.com/articles/php-70-and-56-on-ubuntu

Loren
quelle
1
Ich werde hier im Repo-Wiki einen Text zum Thema schreiben: github.com/oerdnj/deb.sury.org/wiki Ich muss nur ein bisschen Freizeit finden. Jeder ist herzlich
eingeladen, in der

Antworten:

12

Die alten php5-*Pakete können zusammen mit dem neuen phpX.Y-*Schema installiert werden. Das erste, was Sie tun müssen, ist, neue Pakete zu installieren und zu aktivieren:

Apache 2.4

Sie müssen neue libapache2-mod-phpX.YPakete installieren und dann das alte PHP5 deaktivieren und das neue versionierte Modul aktivieren, z. B. für PHP 5.6:

sudo apt-get install libapache2-mod-php5.6
sudo a2dismod php5
sudo a2enmod php5.6

NGINX / Apache 2.4 mit PHP-FPM

Dies ist noch einfacher. Installieren phpX.Y-fpmund ändern Sie einfach den Socket-Pfad in Ihrer Webserver-Konfiguration /run/php/phpX.Y-fpm.sockund kopieren Sie die alte Konfiguration, z. B. für PHP 5.6:

sudo apt-get install php5.6-fpm
# now change the socket path in your nginx/apache2 configuration
# and restart the server

Wenn Sie mehr FPM-Pools definiert haben, müssen Sie die alte Konfiguration erneut in den neuen Pfad für PHP 5.6 kopieren:

# keep the new www.conf
sudo mv /etc/php/5.6/fpm/pool.d/www.conf /etc/php/5.6/fpm/pool.d/www-5.6.conf
# copy the old configuration to the new path
sudo cp /etc/php5/fpm/pool.d/* /etc/php/5.6/fpm/pool.d/
sudo update-rc.d php5-fpm disable # or uninstall php5-fpm package
# restart PHP 5.6 FPM to read the new configuration
sudo service php5.6-fpm restart

Nun , wenn Sie die alten Pakete entfernen möchten, können Sie in einige Probleme laufen , da es möglicherweise Pakete sein , die alte php5 * Namen benötigen, möchten Sie vielleicht hinzufügen , ppa:ondrej/php5-compatdass dünne Schicht aus Kompatibilitätspaketen bieten die Karte , php5-<foo>um php5.6-<foo>für Haupt php5 * Pakete:

sudo add-apt-repository ppa:ondrej/php5-compat
sudo apt-get update
sudo apt-get dist-upgrade

Versuchen Sie dies auf jeden Fall zuerst in einer nicht produktiven Umgebung! Die gute Seite ist, dass dadurch die alte Konfiguration /etc/php5unberührt bleibt , sodass Sie die alten Einstellungen migrieren können.

Nach dem Aktualisieren der Haupt-PHP-Pakete möchten Sie möglicherweise die restlichen php5-*Pakete nachschlagen und deren Entsprechung installieren, z

apt-get install php-apcu # for php5-apcu
apt-get install php-memcached # for php5-memcached

Ich werde ein Update für PHP5-kompatibles Repo vorbereiten, das diese Zuordnungen automatisch vornimmt.

Den aktuelleren Text finden Sie immer in den DEB.SURY.ORG PPA Wikis .

oerdnj
quelle
1
Danke für all deine Arbeit! Wir haben einen Staging-Server, auf dem ich zuerst alles anprobieren werde. In Ihre Anweisungen möchten Sie möglicherweise etwas über das Ausführen aufnehmen, dpkg --get-selections | grep phpum alle aktuellen Pakete aufzulisten, damit Benutzer die Dinge zuordnen können (obwohl die Zuordnung ppa sehr nützlich ist, wenn Sie dies nicht tun müssen und es einfach funktionieren lassen). Es könnte auch gut sein zu enthaltensudo add-apt-repository --remove ppa:whatever/ppa5-5.6
Loren
Gute Idee mit der Entfernung von altem PPA.
Oerdnj
1
Hey @oerdnj. Sollte es dort nicht a2dismod statt phpdismod sein? Und a2enmod statt phpenmod?
Wojtek Naruniec
Guter Fang, behoben.
Oerdnj
Die Datenbankerweiterung funktioniert nicht mit Ihrem 5.6-Modul. Ich könnte sie früher für die alte 5.6-Version kompilieren, aber nicht für das neue Repository. Es wird für die alte 5.5-Version kompiliert. aber 5.6 Version läuft so Modul verloren. Gibt es irgendwelche Chancen, dass Sie alte 5,6 ppa irgendwie nicht deaktivieren könnten?
Tebe