Provavelmente você está executando a versão mpm-worker do apache2, que não gosta de libapache2-mod-php5.
dpkg -l | grep apache2-mpm
Você pode querer usar o apache2-mpm-prefork, o que funciona melhor com o mod_php5
Observamos repetidamente que quando uma atualização apache2 chega e é instalada, o pacote libapache2-mod-php5 é removido e não é reinstalado posteriormente.
Devemos reinstalar o libapache2-mod-php5 manualmente para restaurar a funcionalidade do nosso servidor web.
Por favor, veja o seguinte githubist, é uma seção contígua do dpkg.log do nosso servidor mostrando a atualização de 14 de novembro de 2011 para apache2:
inclui
2011-11-14 11:22:18 remove libapache2-mod-php5 5.3.2-1ubuntu4.10 5.3.2-1ubuntu4.10
Este é um problema conhecido? Outras pessoas também veem isso? Não consegui encontrar nenhum relatório de bugs da barra de lançamento.
Detalhes da plataforma:
$ lsb_release -ds
Ubuntu 10.04.3 LTS
$ uname -srvm
Linux 2.6.38-12-virtual #51~lucid1-Ubuntu SMP Thu Sep 29 20:27:50 UTC 2011 x86_64
$ dpkg -l | awk '/ii.*apache/ {print $2 " " $3 }'
apache2 2.2.14-5ubuntu8.7
apache2-mpm-prefork 2.2.14-5ubuntu8.7
apache2-utils 2.2.14-5ubuntu8.7
apache2.2-bin 2.2.14-5ubuntu8.7
apache2.2-common 2.2.14-5ubuntu8.7
libapache2-mod-authnz-external 3.2.4-2+squeeze1build0.10.04.1
libapache2-mod-php5 5.3.2-1ubuntu4.10
Obrigado
Em um nível alto, o processo de atualização se parece com:
package package_name do
action :upgrade
case node[:platform]
when 'centos', 'redhat', 'scientific'
options '--disableplugin=fastestmirror'
when 'ubuntu'
options '-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
end
end
Mas em um nível mais baixo
def install_package(name, version)
run_command_with_systems_locale(
:command => "apt-get -q -y#{expand_options(@new_resource.options)} install #{name}=#{version}",
:environment => {
"DEBIAN_FRONTEND" => "noninteractive"
}
)
end
def upgrade_package(name, version)
install_package(name, version)
end
Então, o Chef está usando "instalar" para fazer "atualização".
Esse tipo de pergunta muda para "como o apt-get safe-upgrade" se lembra de reinstalar o libapache-mod-php5?
A sequência exata de pacotes que acionaram isso foi:
apache2 apache2-mpm-prefork apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common
Mas o código está tentando executar verificações para garantir que os pacotes nessa lista já estejam instalados antes de tentar "atualizá-los".
case node[:platform]
when 'debian', 'centos', 'fedora', 'redhat', 'scientific', 'ubuntu'
# first primitive way is to define the updates in the recipe
# data bags will be used later
%w/
apache2
apache2-mpm-prefork
apache2-mpm-worker
apache2-utils
apache2.2-bin
apache2.2-common
/.each{ |package_name|
Chef::Log.debug("is #{package_name} among local packages available for changes?")
next unless node[:packages][:changes].keys.include?(package_name)
Chef::Log.debug("is #{package_name} available for upgrade?")
next unless node[:packages][:changes][package_name][:action] == 'upgrade'
package package_name do
action :upgrade
case node[:platform]
when 'centos', 'redhat', 'scientific'
options '--disableplugin=fastestmirror'
when 'ubuntu'
options '-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
end
end
tag('upgraded')
}
# after upgrading everything, run yum cache updater
if tagged?('upgraded')
# Remove old orphaned dependencies and kernel images and kernel headers etc.
# Remove cached deb files.
case node[:platform]
when 'ubuntu'
execute 'apt-get -y autoremove'
execute 'apt-get clean'
# Re-check what updates are available soon.
when 'centos', 'fedora', 'redhat', 'scientific'
node[:packages][:last_time_we_looked_at_yum] = 0
end
untag('upgraded')
end
end
Mas está claro que falha porque o dpkg.log tem
2011-11-14 11:22:25 install apache2-mpm-worker 2.2.14-5ubuntu8.7
em um sistema que atualmente não possui apache2-mpm-worker. Vou ter que discutir isso com o autor, obrigado novamente.
Provavelmente você está executando a versão mpm-worker do apache2, que não gosta de libapache2-mod-php5.
dpkg -l | grep apache2-mpm
Você pode querer usar o apache2-mpm-prefork, o que funciona melhor com o mod_php5