在 Ubuntu 12.04 LTS 服务器上我需要Apache 2.4.5 或更高版本。我这样做:
add-apt-repository ppa:ondrej/php5
apt-get update
apt-get install apache2
但是当我运行最后一个命令时,我得到:
Setting up apache2 (2.4.20-1+deb.sury.org~precise+1) ...
Feature bundle "5.16" is not supported by Perl 5.14.2 at /usr/sbin/a2enmod line 14
BEGIN failed--compilation aborted at /usr/sbin/a2enmod line 14.
dpkg: error processing apache2 (--configure):
subprocess installed post-installation script returned error exit status 255
Errors were encountered while processing:
apache2
E: Sub-process /usr/bin/dpkg returned an error code (1)
看来我需要更新版本的 Perl。我该如何获取?我找不到带有它的 PPA。
答案1
由于我在维护的一些 Ubuntu 12.04 服务器上也遇到了这个问题,因此我决定使用最新已知可运行的 Ubuntu 12.04 软件包创建 Ondrej PPA 的克隆。
https://launchpad.net/~nickmoline/+archive/ubuntu/php55
切换到这个 PPA 让我能够再次成功安装 Apache 和 PHP。
这会将 Apache 锁定到 2.4.16,而不是不可行的 2.4.20
在我这样做之前,我联系了 Ondrej,他告诉我他们最终会解决这个问题,但他们没有给出时间表,当他们这样做时,我将继续更新我的 PPA,并添加一条注释,说明你可以停止使用它。
如果它对您有帮助,请随意使用它。
答案2
您可以随时访问 Launchpad 中的 PPA 页面来查看其详细信息。
您正在使用的 PPA 可以在以下位置找到:https://launchpad.net/~ondrej/+archive/ubuntu/php5,并且根据其维护者的说法,您添加的PPA不支持Ubuntu 12.04。
This PPA contains latest PHP 5.5 packaged for Ubuntu 14.04 LTS (Trusty).
[...]
If you need other PHP versions use:
PHP 5.4: ppa:ondrej/php5-oldstable (Ubuntu 12.04 LTS)
PHP 5.5: ppa:ondrej/php5 (Ubuntu 14.04 LTS)
PHP 5.6: ppa:ondrej/php5-5.6 (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS)
PHP 5.6 and PHP 7.0: ppa:ondrej/php (Ubuntu 14.04 LTS - Ubuntu 16.04 LTS)
PPA 来自与 12.04 相同的维护者(ppa:ondrej/php5-oldstable
),不包含 apache 2.4 并且不再受支持。
更新(来自 ondrej):我最终解决了 a2enmod Perl 代码,并且最终修复 Ubuntu 12.04 并不难,因此 2.4.20-1+deb.sury.org~precise+2 应该包含修复后的代码。
更新 2(来自 ondrej):我将所有与 apache2 相关的软件包移至 以ppa:ondrej/apache2
避免重复。不幸的是,没有办法在 PPA 依赖项中表达这一点。
答案3
您可以从构建历史记录中查找并下载旧软件包:
wget -A deb -m --no-parent https://launchpad.net/~ondrej/+archive/ubuntu/php5/+build/7886307
wget https://launchpad.net/~ondrej/+archive/ubuntu/php5/+build/7886308/+files/apache2-data_2.4.16-4+deb.sury.org~precise+4_all.deb
这组软件包来自以前的版本,不应依赖于 Perl 5.16。