1 votes

Pourquoi les mises à jour d'apache2 suppriment-elles et ne réinstallent-elles pas libapache2-mod-php5?

Nous constatons à plusieurs reprises que lorsqu'une mise à jour de apache2 arrive et est installée, cela entraîne la suppression du package libapache2-mod-php5 et ne le réinstalle pas automatiquement par la suite.

Nous devons ensuite réinstaller manuellement le libapache2-mod-php5 pour restaurer la fonctionnalité de notre serveur web.

Veuillez consulter le gist github suivant, c'est une section continue du dpkg.log de notre serveur montrant la mise à jour du 14 novembre 2011 à apache2:
https://gist.github.com/1368361
elle inclut

2011-11-14 11:22:18 supprimer libapache2-mod-php5 5.3.2-1ubuntu4.10 5.3.2-1ubuntu4.10

S'agit-il d'un problème connu? D'autres personnes le voient-elles aussi? Je n'ai trouvé aucun rapport de bug sur launchpad à ce sujet.

Détails de la plateforme:

$ 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

Merci

À un niveau supérieur, le processus de mise à jour ressemble à :

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

Mais à un niveau inférieur

        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

Ainsi, Chef utilise "install" pour faire "update".

Cela déplace un peu la question vers "comment apt-get safe-upgrade se souvient de réinstaller libapache-mod-php5?"

La séquence exacte des packages qui ont déclenché ceci était :

apache2
apache2-mpm-prefork
apache2-mpm-worker
apache2-utils
apache2.2-bin
apache2.2-common

Mais le code essaie de vérifier que les packages de cette liste sont déjà installés avant de tenter de les "mettre à jour".

case node\[:platform\]
when 'debian', 'centos', 'fedora', 'redhat', 'scientific', 'ubuntu'
        # première façon primitive est de définir les mises à jour dans la recette
        # des data bags seront utilisés plus tard
        %w/
               apache2
               apache2-mpm-prefork
               apache2-mpm-worker
               apache2-utils
               apache2.2-bin
               apache2.2-common
        /.each{ |package\_name|
                Chef::Log.debug("est-ce que #{package\_name} est parmi les packages locaux disponibles pour les changements?")
                next unless node\[:packages\]\[:changes\].keys.include?(package\_name)

                Chef::Log.debug("est-ce que #{package\_name} est disponible pour la mise à jour?")
                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')
        }

        # après avoir mis à jour tout, exécutez le mise à jour du cache yum
        if tagged?('upgraded')
                # Supprimer les anciennes dépendances orphelines et les images du noyau et les en-têtes de noyau, etc.
                # Supprimer les fichiers deb mis en cache.
                case node\[:platform\]
                when 'ubuntu'
                        execute 'apt-get -y autoremove'
                        execute 'apt-get clean'
                # Re-vérifier bientôt quelles mises à jour sont disponibles.
                when 'centos', 'fedora', 'redhat', 'scientific'
                        node\[:packages\]\[:last\_time\_we\_looked\_at\_yum\] = 0
                end
                untag('upgraded')
        end
end

Mais il est clair que cela échoue puisque le dpkg.log a

2011-11-14 11:22:25 installer apache2-mpm-worker  2.2.14-5ubuntu8.7

sur un système qui n'a pas actuellement apache2-mpm-worker. Je vais devoir discuter de cela avec l'auteur, encore merci.

1voto

DrPizza Points 9355

Il est probable que vous utilisiez la version mpm-worker d'apache2, qui n'est pas compatible avec libapache2-mod-php5.

dpkg -l | grep apache2-mpm

Vous pourriez préférer utiliser apache2-mpm-prefork à la place, qui fonctionne mieux avec mod_php5

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X