Como posso resolver conflitos de pacotes ao instalar a versão antiga do PHP com o apache2?

1

Eu tenho um aplicativo legado que requer uma versão específica do php. Eu baixei debs para php, pear, etc. de old-releases.ubuntu.com, e estou escrevendo um script para instalá-los ao provisionar um servidor.

O problema é que libapache2-mod-php5_5.4.9-4ubuntu2_amd64.deb depende do 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

Não há nenhum apache2.2-common disponível nos novos pacotes apache2:

$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

Eu não quero dpkg --force-all nesta instalação, pois isso pode causar problemas com outras instalações de pacotes. Eu tentei construir um pacote falso que forneceria o apache2.2-comum para satisfazer a versão antiga do php, conforme descrito em Como posso instalar um pacote sem instalar algumas dependências? , mas meu pacote falso entra em conflito com o apache2. Eu acho que isso é porque o apache2 lista o apache2.2-comum como um pacote conflitante.

Existe uma maneira "correta" de fazer isso? Eu gostaria de manter o máximo possível da minha stack atual, já que é mais difícil manter versões antigas e é uma responsabilidade de segurança. Eu prefiro evitar problemas com gerenciadores de pacotes também, se possível. Se este pacote php em particular é a única coisa que eu --force-all, e poucas coisas dependem disso, talvez não estrague muito o sistema. Eu estou supondo que não há uma boa maneira de fazer isso, mas eu iria resolver o método menos quebrado.

[Editar] Eu instalei apache2-mpm-prefork como mencionado em Por que os upgrades do apache2 removem e não reinstalam o libapache2-mod-php5? . [/ Editar]

[Editar 2] Eu instalei isso usando --force-all e ele não está funcionando corretamente. Eu recebo o seguinte erro quando tento iniciar o 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.

O log de erros do Apache não tinha informações sobre isso. [/ Editar 2]

    
por Mnebuerquo 14.10.2014 / 15:53

0 respostas