我有两台运行 13.04 的服务器,在某个时候我添加了oldstable 软件包来源适用于 PHP 5.4。但由于某些原因,我无法再更新它 — 一台服务器无法从 5.4.23 升级到 5.4.24,而另一台服务器在经过几次故障排除卸载后,仍然停留在默认软件包源中的 5.4.9。
这是在一台服务器上安装的正确版本:
PHP 5.4.23-1+sury.org~raring+1 (cli) (built: Dec 12 2013 09:25:05)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
这是我在另一台服务器上所做的事情:
# add-apt-repository ppa:ondrej/php5-oldstable
# apt-get update && apt-get upgrade
但是,我得到的是旧版本:
# php -v
PHP 5.4.9-4ubuntu2.4 (cli) (built: Dec 12 2013 04:29:20)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
我已经做了一个apt-get remove php* --purge
,然后又做了一个apt-get install php5
,但没有成功:它让我从 5.4.23 降到了 5.4.9。
这是我需要安装的正确选择:
# dpkg --get-selections | grep php
libapache2-mod-php5 install
php-apc install
php-pear install
php5 install
php5-cli install
php5-common install
php5-curl install
php5-gd install
php5-imagick install
php5-mysql install
缓存甚至不显示 PPA:
# apt-cache policy php5
php5:
Installed: 5.4.9-4ubuntu2.4
Candidate: 5.4.9-4ubuntu2.4
Version table:
*** 5.4.9-4ubuntu2.4 0
500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ raring-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ raring-security/main amd64 Packages
100 /var/lib/dpkg/status
5.4.9-4ubuntu2 0
500 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
答案1
您无法安装所需软件包的原因是该软件包不再位于您添加的 PPA 中。raring 的 php5 5.4.23-1+sury.org 已从 PPA 中删除。
以下是 2013 年 12 月 16 日的 PPA 内容:http://web.archive.org/web/20131216111917/https://launchpad.net/~ondrej/+archive/php5-oldstable
您可以看到,当时 PPA 中有一个适用于 php5 的 raring 包。这是您的其他服务器已安装的包。如果您今天查看,该包已不存在。Ubuntu 不会删除已安装的包;因此您的其他服务器仍会保留它。
从 PPA 中删除该软件包的原因可能是因为 Ubuntu 13.04 已不再受支持。它在一月份停止接收更新。仍在使用 13.04 的人应升级到 13.10。