我有一个旧版应用程序,需要特定版本的 php。我从 old-releases.ubuntu.com 下载了 php、pear 等的 debs,并且正在编写脚本以在配置服务器时安装它们。
问题是 libapache2-mod-php5_5.4.9-4ubuntu2_amd64.deb 依赖于 apache2.2-common:
Preparing to unpack .../libapache2-mod-php5_5.4.9-4ubuntu2_amd64.deb ...
Unpacking libapache2-mod-php5 (5.4.9-4ubuntu2) over (5.4.9-4ubuntu2) ...
dpkg: dependency problems prevent configuration of libapache2-mod-php5:
libapache2-mod-php5 depends on apache2.2-common; however:
Package apache2.2-common is not installed.
dpkg: error processing package libapache2-mod-php5 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libapache2-mod-php5
较新的 apache2 软件包中没有可用的 apache2.2-common:
$sudo apt-get install apache2.2-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package apache2.2-common is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
apache2-data apache2-bin apache2
E: Package 'apache2.2-common' has no installation candidate
我不想dpkg --force-all
在这个安装上这样做,因为这可能会导致其他软件包安装出现问题。我尝试构建一个假软件包,它将提供 apache2.2-common 以满足旧版本的 php,如中所述如何在不安装某些依赖项的情况下安装包?,但我的假包与 apache2 冲突。我认为这是因为 apache2 将 apache2.2-common 列为冲突包。
有没有“正确”的方法可以做到这一点?我希望尽可能保持堆栈的最新状态,因为维护旧版本比较困难,而且这是一种安全隐患。如果可能的话,我也希望防止包管理器出现问题。如果这个特定的 php 包是我唯一使用 --force-all 的东西,而且很少有东西依赖于它,那么它可能不会把系统搞得太糟。我猜没有好的方法可以做到这一点,但我会选择破坏最少的方法。
[编辑] 我已经apache2-mpm-prefork
按照所述进行了安装为什么 apache2 升级会删除而不是重新安装 libapache2-mod-php5?。 [/编辑]
[编辑 2] 我使用 --force-all 安装了它,但它无法正常工作。当我尝试启动 apache 时,出现以下错误:
$ sudo service apache2 restart
* Restarting web server apache2 [fail]
* The apache2 configtest failed.
Output of config test was:
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /usr/lib/apache2/modules/libphp5.so: undefined symbol: unixd_config
Action 'configtest' failed.
The Apache error log may have more information.
Apache 错误日志没有关于此问题的任何信息。[/编辑 2]