3

我必须在我的 ubuntu 12.10 上安装这个特定版本以保持与提供程序的兼容。我可以使用 synaptic 轻松安装 php 5.3.10,但无法升级到 5.3.14。我怎样才能做到这一点 ?Apt-get 不起作用...我在网上看到了几个 tutos,但没有特定于这个。

4

2 回答 2

4

删除和清除包:

apt-get remove php-apc php5 php5-mysql php5-gd php5-curl libapache2-mod-php5

apt-get autoremove

确保在运行之前了解此命令的作用:

dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge

您通常可以从旧版本中添加源代码而不必太担心:

/etc/apt/sources.list.d/precise.list

deb http://mirror.rackspace.com/ubuntu/ precise main restricted
deb-src http://mirror.rackspace.com/ubuntu/ precise main restricted
deb http://mirror.rackspace.com/ubuntu/ precise-updates main restricted
deb-src http://mirror.rackspace.com/ubuntu/ precise-updates main restricted
deb http://mirror.rackspace.com/ubuntu/ precise universe
deb-src http://mirror.rackspace.com/ubuntu/ precise universe
deb http://mirror.rackspace.com/ubuntu/ precise-updates universe
deb-src http://mirror.rackspace.com/ubuntu/ precise-updates universe

这是一个可能过于宽泛但希望有启发性的 apt 首选项文件:

/etc/apt/preferences.d/php_precise

Package: php5
Pin: release a=precise
Pin-Priority: 1001

Package: php*
Pin: release a=precise
Pin-Priority: 1001

Package: php-*
Pin: release a=precise
Pin-Priority: 1001

Package: libapache2-mod-php5
Pin: release a=precise
Pin-Priority: 1001

Package: php5
Pin: release a=precise-updates
Pin-Priority: 1001

Package: php*
Pin: release a=precise-updates
Pin-Priority: 1001

Package: php-*
Pin: release a=precise-updates
Pin-Priority: 1001

Package: libapache2-mod-php5
Pin: release a=precise-updates
Pin-Priority: 1001

更新并检查您的更改

apt-get update

apt-cache policy <package> to check which version will be installed (eg php5)

进行一些测试运行,您可能需要将依赖项添加到首选项文件中

apt-get install <everything you removed before>
于 2014-01-30T12:45:03.537 回答
0

这应该覆盖 apt-get 以获取最新版本的 PHP(但我认为只是稳定的,所以可能不会安装所有 alpha/beta 版本)

sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5
php5 -v

此外,您可以更新您的偏好设置,以从不安装更高版本的软件包。您可以通过打开 /etc/apt/preferences 并添加以下内容来做到这一点:

Package: php
Pin: release v=5.3.14*,a=stable,c=main,o=Debian,l=Debian
Pin-Priority: 1001

这是一个 Debian 的例子,但是 Ubuntu 是基于 Debian 的,因为我目前无法在实时的 Ubuntu 发行版上测试它,我认为这可能就足够了。

要使这个“版本封锁”起作用,您可能首先需要通过 apt-get 卸载 php,然后重新安装它,以便它坚持 5.3.14。

于 2013-02-18T13:06:10.980 回答