我有一台安装有 Ubuntu 8.04 的专用服务器,为了部署新版本的系统,确实需要将 php 升级到 5.3 版本。
此版本的 php 是 ubuntu 10.04 中的默认版本,因此我考虑升级操作系统,但尝试之后,我丢失了 plesk 安装,这让我的客户很恼火。
我尝试添加 dotdeb.org 存储库,但不知道为什么,运行后apt-get upgrade
出现此错误:
# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
libapache2-mod-php5 php5 php5-cgi php5-cli php5-common php5-curl php5-gd php5-imap php5-mysql php5-sqlite php5-xsl
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
知道为什么会发生这种情况吗?
或者您是否知道任何其他方法(除了编译我自己的二进制文件)来升级 php 或更新 ubuntu 而不会丢失 plesk?
谢谢!
答案1
“保留”通常意味着“我会升级它们,但升级它们需要我执行我不想执行的其他操作”。不幸的是,它没有说明“其他操作”是什么。通常是添加或删除其他软件包。 dist-upgrade
(它将随时安装新软件包或删除其他软件包以执行升级)很少出现此问题。虽然这种事情通常不应该发生在稳定版本上。如果 dist-upgrade 也不愿意这样做,那一定有更大的问题。
首先确保没有一些需要先执行的待处理操作或其他损坏的包永远不是一个坏主意。因此我建议:
apt-get --fix-missing install
要了解需要做什么,可以告诉 apt 明确升级软件包。您可以这样做:
apt-get install libapache2-mod-php5 php5 php5-cgi php5-cli php5-common php5-curl php5-gd php5-imap php5-mysql php5-sqlite php5-xsl
另一个选择是使用 尝试 aptitude aptitude full-upgrade
。因为 aptitude 通常愿意付出一些努力来解决依赖性问题,并且愿意向您提供多种方法来解决依赖性问题。(如果它说“接受此解决方案吗?”,您可以说“否”以尝试其他解决方案)。
这可能只是有效,也可能只是抱怨一些其他包被保留,在这种情况下,您可以尝试安装那些包,并像这样递归,直到最终找到和/或解决依赖问题。
然而,坏消息是,即使你解决了这个依赖问题,也不能让你升级到 5.3,因为 8.04(hardy)中的 php 版本是 5.2.4-2ubuntu5.19,如你所见这里。这是可以预料到的,因为您的 Ubuntu 8.04 版本号表明它是在 2008 年 4 月发布的,而当时 PHP 5.3.0 尚未发布。
如果您检查apt-cache policy php5
,则不应看到列出的 php 版本(除 5.2.4-* 外)。如果看到,则有人已尝试在此处插入其他版本的 php,这不是解决此问题的推荐方法。
如果您确实需要 php 5.3,我建议您升级到较新版本的 ubuntu。您可能会找到为 hardy 编译了 5.3 的第三方存储库,但使用第三方存储库时,我会怀疑安全补丁的质量和及时性(尤其是像 php 这样经常发现安全问题的东西)。
答案2
尝试一下apt-get dist-upgrade
。如果你的 /etc/apt/sources.list 中有“hardy”,它就不会升级你的发行版,只会升级有问题的软件包。