14.04 Actualización limpia a ppa: ondrej / php desde ppa: ondrej / php5-5.6

10

Revisé mis actualizaciones habituales de paquetes de servidor hoy y descubrí que ppa:ondrej/php5-5.6se ha depreciado y ahora debemos actualizar a ppa:ondrej/php.

Las instrucciones básicas proporcionadas son para ejecutar:

sudo add-apt-repository ppa:ondrej/php

Y entonces:

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

Mirando el nuevo repositorio, los nombres no parecen alinearse completamente, así que creo que tendré que hacer algunas instalaciones de apt-get para instalar todos los paquetes correctos. También parece que los subpaquetes (es decir, php-gd) se instalarán para todas las versiones de php y también pueden instalar php 5.5 y php 7.0 ( /programming/37197539/an-issue-after-ppaondrej- php5-deprecation )

Entonces mi pregunta es, ¿cuál es la forma más limpia de "cambiar" ppas y limpiar los paquetes existentes teniendo en cuenta que este es un servidor de producción? ¿Debo tratar de eliminar todos los paquetes instalados del PPA anterior y / o eliminar el PPA de mi sistema?

Todavía no está en la página principal del PPA, pero el mensaje de actualización dejó en desuso en junio de 2016, por lo que no es una línea de tiempo muy larga para reconstruir la imagen de nuestro servidor.

Encontré esta página, que proporciona instrucciones para cambiar la versión de PHP que usa Apache: https://dzone.com/articles/php-70-and-56-on-ubuntu

Loren
fuente
1
Escribiré un texto sobre el tema en la wiki del repositorio aquí: github.com/oerdnj/deb.sury.org/wiki Solo necesito encontrar un poco de tiempo libre. Todos son bienvenidos para comenzar y contribuir mientras tanto :)
oerdnj

Respuestas:

12

Los php5-*paquetes antiguos son coinstalables con el nuevo phpX.Y-*esquema, por lo que lo primero que debe hacer es instalar y habilitar nuevos paquetes:

Apache 2.4

Debe instalar nuevos libapache2-mod-phpX.Ypaquetes y luego deshabilitar el antiguo php5 y habilitar el nuevo módulo versionado, por ejemplo, para PHP 5.6:

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

NGINX / Apache 2.4 con PHP-FPM

Esto es aún más sencillo, simplemente instale phpX.Y-fpmy cambie la ruta del socket en la configuración de su servidor web /run/php/phpX.Y-fpm.socky copie la configuración anterior, por ejemplo, para PHP 5.6:

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

Si ha definido más grupos FPM, debe copiar la configuración anterior a la nueva ruta, nuevamente para 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

Ahora bien, si desea eliminar los paquetes antiguos, usted podría encontrarse con algunos problemas ya que puede haber paquetes que requieren PHP5 edad * Los nombres, es posible que desee agregar ppa:ondrej/php5-compatque proporcionan fina capa de paquetes de compatibilidad ese mapa php5-<foo>a php5.6-<foo>para php5 principal * paquetes:

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

¡Definitivamente intente esto primero en un entorno sin producción ! Lo bueno es que esto mantiene /etc/php5intacta la configuración anterior , por lo que puede migrar la configuración anterior.

Después de actualizar los principales paquetes de PHP, es posible que desee buscar el resto de los php5-*paquetes e instalar su equivalente, por ejemplo

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

Prepararé una actualización para el repositorio php5-compat, que hará estas asignaciones automáticamente.

El texto más actualizado siempre se puede encontrar en los wikis de PPA DEB.SURY.ORG .

oerdnj
fuente
1
Gracias por todo tu trabajo! Tenemos un servidor provisional en el que probaré todo primero. En sus instrucciones, es posible que desee incluir algo sobre la ejecución dpkg --get-selections | grep phppara enumerar todos los paquetes actuales para ayudar a las personas a mapear cosas (aunque el ppa de mapeo será muy útil para no tener que hacer eso y dejar que simplemente funcione). También podría ser bueno para incluirsudo add-apt-repository --remove ppa:whatever/ppa5-5.6
Loren
Buena idea con la eliminación de viejos PPA.
oerdnj
1
Hola @oerdnj. ¿No debería ser a2dismod en lugar de phpdismod allí? ¿Y a2enmod en lugar de phpenmod?
Wojtek Naruniec
Buena captura, arreglado.
oerdnj
La extensión dbase no funciona con su módulo 5.6, podría compilarlo antes para la versión 5.6 anterior pero no para el nuevo repositorio. Se compila para la antigua versión 5.5. pero la versión 5.6 se ejecuta de modo módulo perdido. ¿Hay alguna posibilidad de que de alguna manera no puedas deshabilitar el viejo 5.6 ppa?
Tebe