Мы неоднократно видим, что, когда обновление 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. Я должен буду обсудить это с автором, еще раз спасибо.
Это, вероятно, что Вы выполняете версию mpm-рабочего apache2, которому не нравится libapache2-mod-php5.
dpkg -l | grep apache2-mpm
Можно хотеть использовать apache2-mpm-prefork вместо этого, который работает лучше с mod_php5