libphp5.so丢失,依赖问题

经过一些更新后,我的Debian服务器(运行Apache 2.2)似乎错过了libphp5.so 。 启动Apache导致错误消息

 sudo service apache2 restart apache2: Syntax error on line 244 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /usr/lib/apache2/modules/libphp5.so: cannot open shared object file: No such file or directory Action 'configtest' failed. The Apache error log may have more information. failed! 

试图重新安装libapache5然而导致

  sudo apt-get install libapache2-mod-php5 Reading package lists... Done Building dependency tree Reading state information... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: libapache2-mod-php5 : Depends: apache2-api-20120211 Depends: apache2 (>= 2.4) udev : Depends: libudev1 (= 215-5+b1) but 215-6 is to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution). 

apt-get -f install不能解决问题。 它想要安装软件包udev但最终会出现错误

 insserv: script apache: service apache2 already provided! Errors were encountered while processing: /var/cache/apt/archives/udev_215-6_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1) 

我不知道该怎么办。 我怎样才能让我的Apache再次运行?


编辑

 dpkg -C The following packages are only half configured, probably due to problems configuring them the first time. The configuration should be retried using dpkg --configure <package> or the configure menu option in dselect: dictionaries-common Common utilities for spelling dictionary tools dovecot-core secure POP3/IMAP server - core files 

  1. 检查这个sharedlib是否真的丢失了(有些情况下,如果它的加载失败,即使这个文件在你的系统上也是如此),用ls -ldL /usr/lib/apache2/modules/libphp5.so 。 可能是的,它不见了,所以我们走在这个分支上。
  2. 你的包似乎有点问题。 使用dpkg -C可以检查系统上是否有某些损坏的软件包。 如果是的话,你必须先解决这个问题。
  3. 试试apt-get --reinstall install libapache2-mod-php5 。 关键是--reinstall标志,即使系统处于未损坏状态,也不会发生任何事情。
  4. 在这里你可以find我的另一个答案,它可以提供有用的命令给你,虽然原来的问题是不同的:他想修复一个失败的升级,你想修复你的apache php5模块。 但问题基本上是一样的:你们都想修复debian / ubuntu系统的不一致状态。

扩展反应评论:那么你应该有一个清晰的dpkg -C输出(没有损坏的软件包)。 接下来我能看到的是,你的软件包版本和你实际的debian(ubuntu)版本库之间可能存在一些不一致的情况。 首先检查是否安装了所有最新的更新: apt-get updateapt-get dist-upgrade

如果工作,你准备好了。 如果没有,那么可能需要一些棘手的解决scheme。 在你的地方,我删除了一些有问题的软件包( dpkg --purge for induvidual软件包,或者apt-get --purge remove来删除所有依赖的软件包),然后尝试重新安装它们。 如果没有任何工作,我删除了整个apache2&php的东西。

但要小心:通过清除来删除软件包也会删除/etc的configuration。 在你的整个/etc (或者至less从/etc/apache2 )开始备份!

Ps这不是不可能,你的真正的debian镜子是不是真的好。 什么在你的/etc/apt/sources.list