Почему обновления 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