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