为什么apache2升级删除而不是重新安装libapache2-mod-php5?
我们反复看到,当apache2更新到达并安装时,会导致libapache2-mod-php5软件包被删除,并且不会自动重新安装它。
我们必须手动重新安装libapache2-mod-php5,以便恢复我们的Web服务器的function。
请参阅以下github gist,它是我们服务器的dpkg.log的一个连续部分,显示2011年11月14日对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 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做 行动:升级 案例节点[:platform] 什么时候'centos','redhat','科学' 选项'--disableplugin = fastermirror' 什么时候'ubuntu' 选项'-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常见
但是代码试图运行检查以确保在尝试“升级”它们之前已经安装了该列表中的包。
案例节点[:platform] 什么时候'debian','centos','fedora','redhat','scientific','ubuntu' #first primitive方法是定义配方中的更新 #data bags将在以后使用 %W / 的Apache2 Apache2的-MPM-prefork的 Apache2的-MPM工人 Apache2的-utils的 APACHE2.2斌 APACHE2.2常见 /.each {| package_name | Chef :: Log.debug(在可用于更改的本地软件包中是“#{package_name}吗?”) next除非node [:packages] [:changes] .keys.include?(package_name) Chef :: Log.debug(“#{package_name}可用于升级?”) next除非node [:packages] [:changes] [package_name] [:action] =='upgrade' package package_name做 行动:升级 案例节点[:platform] 什么时候'centos','redhat','科学' 选项'--disableplugin = fastermirror' 什么时候'ubuntu' 选项'-o Dpkg :: Options :: =“ - force-confdef”-o Dpkg :: Options :: =“ - force-confold”' 结束 结束 标签(“升级”) } #升级后的所有内容,运行yum cache updater 如果标记?('已升级') #删除旧的孤立依赖项和内核映像以及内核头文件等。 #删除缓存的deb文件。 案例节点[:platform] 什么时候'ubuntu' 执行'apt-get -y autoremove' 执行'apt-get clean' #重新检查即将推出的更新。 什么时候'centos','fedora','redhat','科学' node [:packages] [:last_time_we_looked_at_yum] = 0 结束 取消标记(“升级”) 结束 结束
但很明显,自dpkg.log以来它失败了
2011-11-14 11:22:25安装apache2-mpm-worker 2.2.14-5ubuntu8.7
在一个目前没有apache2-mpm-worker的系统上。 我将不得不与作者讨论这个问题,再次感谢。
你可能正在运行apache2的mpm-worker版本,它不喜欢libapache2-mod-php5。
dpkg -l | grep apache2-mpm
您可能希望使用apache2-mpm-prefork,这对mod_php5更有效