Как я могу разрешить конфликты пакетов при установке старой версии PHP с apache2?

У меня есть устаревшее приложение, которое требует конкретной версии PHP. Я скачал debs для php, pear и т. Д. С old-releases.ubuntu.com, и я пишу скрипт для их установки при подготовке сервера.

Проблема в том, что 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:

$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 - единственное, на что я навязываюсь, и от этого мало что зависит, возможно, он не будет сильно портить систему. Я предполагаю, что нет хорошего способа сделать это, но я бы согласился на наименее сломанный метод.

[Изменить] Я установил 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]

0 ответов

Другие вопросы по тегам