14.04 Czysta aktualizacja do ppa: ondrej / php z ppa: ondrej / php5-5.6

10

Dzisiaj przeszedłem moje zwykłe aktualizacje pakietów serwerowych i odkryłem, że ppa:ondrej/php5-5.6zostało ono stracone i teraz musimy je zaktualizować ppa:ondrej/php.

Podstawowe dostarczone instrukcje to:

sudo add-apt-repository ppa:ondrej/php

I wtedy:

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

Patrząc na nowe repozytorium, nazwy nie wydają się całkowicie zrównane, więc myślę, że muszę wykonać kilka instalacji apt-get, aby zainstalować wszystkie odpowiednie pakiety. Wygląda również na to, że sub-paczki (tj. Php-gd) zostaną zainstalowane dla wszystkich wersji php i mogą również zainstalować php 5.5 i php 7.0 ( /programming/37197539/an-issue-after-ppaondrej- php5-deprecation )

Moje pytanie brzmi: jaki jest najczystszy sposób na „przełączenie” ppas i wyczyszczenie istniejących pakietów, biorąc pod uwagę, że jest to serwer produkcyjny? Czy powinienem spróbować usunąć wszystkie pakiety zainstalowane z poprzedniego PPA i / lub usunąć PPA z mojego systemu?

Nie ma go jeszcze na stronie głównej PPA, ale komunikat o aktualizacji podał datę wycofania w czerwcu 2016 r., Więc odbudowa obrazu naszego serwera nie jest zbyt długa.

Znalazłem tę stronę, która zawiera instrukcje wyłączania wersji PHP używanej przez apache: https://dzone.com/articles/php-70-and-56-on-ubuntu

Loren
źródło
1
Napiszę trochę tekstu na ten temat na wiki repo tutaj: github.com/oerdnj/deb.sury.org/wiki Muszę tylko znaleźć trochę wolnego czasu. Tymczasem każdy może rozpocząć i wesprzeć :)
oerdnj

Odpowiedzi:

12

Stare php5-*pakiety można zainstalować ponownie z nowym phpX.Y-*schematem, więc pierwszą rzeczą, którą musisz zrobić, to zainstalować i włączyć nowe pakiety:

Apache 2.4

Musisz zainstalować nowe libapache2-mod-phpX.Ypakiety, a następnie wyłączyć stary php5 i włączyć nowy moduł wersji, np. Dla PHP 5.6:

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

NGINX / Apache 2.4 z PHP-FPM

Jest to jeszcze prostsze, po prostu zainstaluj phpX.Y-fpmi zmień ścieżkę gniazda w konfiguracji serwera WWW /run/php/phpX.Y-fpm.socki skopiuj starą konfigurację, np. Dla PHP 5.6:

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

Jeśli zdefiniowałeś więcej pul FPM, musisz skopiować starą konfigurację do nowej ścieżki, ponownie dla PHP 5.6:

# 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

Teraz, jeśli chcesz usunąć stare pakiety, możesz napotkać pewne problemy, ponieważ nie może być pakiety, które wymagają stary PHP5 * imiona, warto dodać ppa:ondrej/php5-compat, że zapewniają cienką warstwę opakowań z kompatybilnością, że mapa php5-<foo>się php5.6-<foo>na głównej PHP5 * pakiety:

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

Zdecydowanie wypróbuj to pierwsze w środowisku nieprodukcyjnym ! Dobrą stroną jest to, że utrzymuje /etc/php5nietkniętą starą konfigurację , dzięki czemu można migrować stare ustawienia.

Po zaktualizowaniu głównych pakietów PHP możesz odszukać resztę php5-*pakietów i zainstalować ich ekwiwalent, np

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

Przygotuję aktualizację repozytorium zgodnego z php5, która spowoduje automatyczne mapowanie.

Bardziej aktualny tekst zawsze można znaleźć na stronach DEB.SURY.ORG PPA Wiki .

oerdnj
źródło
1
Dzięki za całą pracę! Mamy serwer pośredni, na którym najpierw spróbuję wszystkiego. W instrukcjach możesz chcieć dołączyć coś o uruchamianiu, dpkg --get-selections | grep phpaby wyświetlić listę wszystkich bieżących pakietów, aby pomóc ludziom mapować rzeczy (chociaż mapowanie ppa będzie bardzo przydatne, ponieważ nie musisz tego robić i pozwolić, aby po prostu działało). Może to również być dobre w tymsudo add-apt-repository --remove ppa:whatever/ppa5-5.6
Loren
Dobry pomysł z usunięciem starego PPA.
oerdnj
1
Hej, @oerdnj. Czy nie powinien to być a2dismod zamiast phpdismod? A a2enmod zamiast phpenmod?
Wojtek Naruniec
Dobry chwyt, naprawiony.
oerdnj
rozszerzenie dbase nie działa z twoim modułem 5.6, mógłbym go skompilować wcześniej dla starej wersji 5.6, ale nie dla nowego repozytorium. Zostaje skompilowany dla starej wersji 5.5. ale wersja 5.6 jest uruchomiona, więc utracony moduł. Czy są szanse, że w jakiś sposób nie wyłączysz starej wersji 5.6 ppa?
Tebe,