Почему обновления 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 удалить 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 четверг, 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

Спасибо

На высоком уровне процесс обновления выглядит так:

пакет имя_пакета do
        действие: обновить
        case case[: платформа]
        когда "centos", "redhat", "научный"
                параметры '--disableplugin=fastestmirror'
        когда убунту
                options '-o Dpkg::Options::="- force-confdef" -o Dpkg::Options::="- force-confold"'
        конец
конец

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

        def install_package(имя, версия)
          run_command_with_systems_locale(:command => "apt-get -q -y#{expand_options(@new_resource.options)} install #{name}=#{version}",:environment => {
              "DEBIAN_FRONTEND" => "неинтерактивный"
            })
        конец

        def upgrade_package(имя, версия)
          install_package(имя, версия)
        конец

Поэтому Chef использует "install" для "обновления".

Такого рода вопросы переносятся на вопрос "как apt-get safe-upgrade" не забывают переустановить libapache-mod-php5?

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

apache2
apache2-MPM-PreFork
apache2-MPM-работник
apache2-Utils
apache2.2-Бен
apache2.2-общий

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

case node[: platform], когда 'debian', 'centos', 'fedora', 'redhat', 'Scientific', 'ubuntu'
        # первый примитивный способ - определить обновления в рецепте # пакеты данных будут использоваться позже%w/
               apache2
               apache2-mpm-prefork
               apache2-mpm-worker
               apache2-utils
               apache2.2-bin
               apache2.2-common
        /.each{ | имя_пакета |
                Chef::Log.debug("есть # {имя_пакета} среди локальных пакетов, доступных для изменений?") Далее, если только узел [: пакеты][: изменения].keys.include?(Имя_пакета)

                Chef::Log.debug("есть # {имя_пакета} доступно для обновления? ") далее, если только узел [: пакеты][: изменения] [имя_пакета][: действие] ==" обновить "пакет имя_пакета сделать действие: обновить кейс-узел [: платформа], когда 'centos', 'redhat', 'научные' опции '--disableplugin=fastestmirror' когда 'опции' ubuntu '-o Dpkg:: Options:: = "- force-confdef" -o Dpkg::Options::="- force-confold"'
                        end
                end

                tag('upgradeed))
        }

        # после обновления всего, запустите yum cache Updater, если помечены?('upgradeged')
                # Удалить старые потерянные зависимости, образы ядра, заголовки ядра и т. д. # Удалить кэшированные файлы deb. case node[: platform], когда 'ubuntu' выполнить 'apt-get -y autoremove' выполнить 'apt-get clean' # Повторно проверить, какие обновления скоро будут доступны. когда "centos", "fedora", "redhat", "научный" узел [:packages][:last_time_we_looked_at_yum] = 0 конец untag("обновленный") конец конец 

Но ясно, что это не удалось, так как dpkg.log имеет

2011-11-14 11:22:25 установить apache2-mpm-worker 2.2.14-5ubuntu8.7

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

1 ответ

Вероятно, вы используете версию apache2 для mpm-worker, которая не похожа на libapache2-mod-php5.

dpkg -l | grep apache2-mpm

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

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