Почему обновления apache2 удаляют и не переустанавливают libapache2-mod-php5?

Мы неоднократно видим, что, когда обновление apache2 прибывает и установлено, оно заставляет libapache2-mod-php5 пакет быть удаленным и впоследствии не переустанавливает его автоматически.

Мы должны впоследствии переустановить libapache2-mod-php5 вручную для восстановления функциональности к нашему веб-серверу.

Посмотрите следующую суть GitHub, это - непрерывный раздел dpkg.log нашего сервера, показывающего обновление 14 ноября 2011 apache2:
https://gist.github.com/1368361
это включает

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

Действительно ли это - известная проблема? Другие люди видят это также? Я не мог найти отчеты об ошибках панели запуска об этом.

Детали платформы:

$ 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

Спасибо

На высоком уровне процесс обновления похож:

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

Но на более низком уровне

        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

Таким образом, Шеф-повар использует "установку", чтобы сделать "обновление".

Этот вид перемещает вопрос, "как делает склонный - добираются, безопасное обновление" не забывают переустанавливать libapache-mod-php5?

Точная последовательность пакетов, которые инициировали это, была:

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

Но код пытается осуществить проверки, чтобы удостовериться, что пакеты в том списке установлены уже прежде, чем попытаться "обновить" их.

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

Но ясно, что это перестало работать, так как dpkg.log имеет

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

в системе, которая в настоящее время не имеет apache2-mpm-worker. Я должен буду обсудить это с автором, еще раз спасибо.

1
задан 16 November 2011 в 20:54

1 ответ

Это, вероятно, что Вы выполняете версию mpm-рабочего apache2, которому не нравится libapache2-mod-php5.

dpkg -l | grep apache2-mpm

Можно хотеть использовать apache2-mpm-prefork вместо этого, который работает лучше с mod_php5

1
ответ дан 7 December 2019 в 17:46

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

Похожие вопросы: