Answers:
在Ubuntu中,降级过程确实是一团糟。这是您可能会发现有用的脚本(它删除了PHP 5.4并安装了PHP 5.3):
sudo apt-get remove --purge `dpkg -l | grep php | grep -w 5.4 | awk '{print $2}' | xargs`
sudo apt-get install php5=5.3.10-1ubuntu3.4 php5-cli=5.3.10-1ubuntu3.4 php5-common=5.3.10-1ubuntu3.4 libapache2-mod-php5=5.3.10-1ubuntu3.4
sudo apt-get install php5=5.3.10-1ubuntu3.4 php5-cli=5.3.10-1ubuntu3.4 php5-common=5.3.10-1ubuntu3.4 libapache2-mod-php5=5.3.10-1ubuntu3.4
sudo apt-get install php-pear=5.3.10-1ubuntu3.4 php5-curl=5.3.10-1ubuntu3.4 php5-gd=5.3.10-1ubuntu3.4 php5-intl=5.3.10-1ubuntu3.4 php5-mysql=5.3.10-1ubuntu3.4 php5-pspell=5.3.10-1ubuntu3.4 php5-recode=5.3.10-1ubuntu3.4 php5-snmp=5.3.10-1ubuntu3.4 php5-sqlite=5.3.10-1ubuntu3.4 php5-tidy=5.3.10-1ubuntu3.4 php5-xmlrpc=5.3.10-1ubuntu3.4 php5-xsl=5.3.10-1ubuntu3.4
您可以通过命令检查可用版本: apt-cache showpkg php5
安装后,请通过以下命令进行验证: php --version
请小心,不要安装没有指定软件包版本的其他任何软件包(例如php5-xcache),否则apt-get将再次用5.4替换您的PHP实例!
为了防止这种情况的发生,您可以保留这些软件包。
要按dpkg保留软件包,可以执行以下命令:
echo "php5 hold" | sudo dpkg --set-selections
要保存所有PHP软件包,请运行以下命令:
dpkg --get-selections | grep ^php5 | sed s/install/hold/g | sudo dpkg --set-selections
以下命令将向您显示php软件包的持有状态:
sudo dpkg --get-selections | grep ^php
您也可以使用aptitude来保存软件包,例如:
sudo aptitude hold php5
取消保留:
sudo aptitude unhold php5
sudo apt-get install php5
,重新安装或删除/安装。
首先执行apt-cache showpkg php5
。在那里,您将看到有关软件包php5的版本和其他信息。
要安装特定版本,请运行 apt-get install <package name>=<version>
在我的Ubuntu 11.10中 apt-get install php5=5.3.6-13ubuntu3.6
apt-cache showpkg php5
5.3.x不再显示怎么办?
从您描述的步骤开始,您在清除php5.4并删除php5.4存储库后忘记了apt-get更新。
如果您运行以下命令,则在apt源中不再有该存储库:
apt-get remove --purge php5 && apt-get update && apt-get install php5
你应该回到5.3