14.04从ppa:ondrej / php5-5.6干净升级到ppa:ondrej / php


10

今天,我经历了常规的服务器软件包升级,发现它ppa:ondrej/php5-5.6已经贬值了,我们现在必须升级到ppa:ondrej/php

提供的基本说明将运行:

sudo add-apt-repository ppa:ondrej/php

接着:

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

在新的存储库中,名称似乎并不完全一致,因此我认为我需要进行一些apt-get安装才能安装所有正确的软件包。看来,子软件包(即php-gd)将为所有php版本安装,也可能会安装php 5.5和php 7.0(/programming/37197539/an-issue-after-ppaondrej- php5-deprecation

所以我的问题是,考虑到这是生产服务器,最简单的“切换” PPAs方法并清理现有软件包的方法是什么?我是否应该尝试从以前的PPA中删除所有已安装的软件包和/或从系统中删除PPA?

PPA的主页尚未显示,但升级消息已于2016年6月弃用,因此重建我们的服务器映像的时间不是很长。

我确实找到了此页面,该页面提供了退出Apache使用的PHP版本的说明:https : //dzone.com/articles/php-70-and-56-on-ubuntu


1
我将在此处的回购Wiki中写一些有关该主题的文本:github.com/oerdnj/deb.sury.org/wiki我只需要找到一点空闲时间。欢迎每个人同时开始并做出自己的贡献:)
oerdnj

Answers:


12

php5-*软件包可与新phpX.Y-*方案共同安装,因此您需要做的第一件事是安装并启用新软件包:

阿帕奇2.4

您需要安装新libapache2-mod-phpX.Y软件包,然后禁用旧的php5,并启用新版本的模块,例如PHP 5.6:

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

带有PHP-FPM的NGINX / Apache 2.4

这甚至更简单,只需phpX.Y-fpm在Web服务器配置中安装并更改套接字路径,/run/php/phpX.Y-fpm.sock然后复制旧配置,例如PHP 5.6:

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

如果定义了更多FPM池,则需要再次将旧配置复制到新路径,对于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

现在,如果您要删除旧软件包,可能会遇到一些问题,因为有些软件包可能需要旧的php5 *名称,您可能想要添加ppa:ondrej/php5-compat以提供兼容的薄层兼容软件包,以映射php5-<foo>php5.6-<foo>主要php5 *软件包:

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

绝对在非生产环境中先尝试一下!好的方面是,这使旧配置/etc/php5保持不变,因此您可以迁移旧设置。

更新了主要的PHP软件包之后,您可能希望查找其余的php5-*软件包并安装它们的等效版本,例如

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

我将准备对php5-compat repo的更新,它将自动进行此映射。

最新的文本始终可以在DEB.SURY.ORG PPA Wiki中找到


1
感谢您的工作!我们确实有一个登台服务器,我将首先尝试一切。在您的说明中,您可能希望包含一些有关运行dpkg --get-selections | grep php的列表,以列出所有当前的软件包以帮助人们映射事物(尽管映射ppa对于不必这样做并使其正常工作非常有用。)这也许也很好包括sudo add-apt-repository --remove ppa:whatever/ppa5-5.6
罗恩

删除旧的PPA的好主意。
oerdnj '16

1
嘿@oerdnj。难道不是a2dismod而不是phpdismod吗?和a2enmod而不是phpenmod?
Wojtek Naruniec '16

好收成,固定的。
oerdnj '16

dbase扩展不适用于您的5.6模块,我可以较早地针对旧5.6版本对其进行编译,而对于新存储库则无法进行编译。它被编译为旧的5.5版本。但是5.6版本正在运行,因此模块丢失了。您是否有机会以某种方式不禁用旧的5.6 ppa?
特贝
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.