修复“以下软件包具有未满足的依赖项”的分步过程是什么?

chi*_*-ny 4 linux debian ubuntu apt-get

我尝试了一切,但没有任何进展。聪明的灵魂能帮上忙吗?

当然只是sudo apt-get -f install不起作用,同样的错误。

$ sudo apt-get install arping
[sudo] password for dloo:
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:
 arping : Depends: libnet1 (>= 1.1.2.1) but it is not going to be installed
          Depends: libpcap0.8 (>= 0.9.8) but it is not going to be installed
 libc-dev-bin : Depends: libc6 (< 2.16) but 2.17-0ubuntu4 is to be installed
 libc6-dev : Depends: libc6 (= 2.15-0ubuntu10.5) but 2.17-0ubuntu4 is to be installed
 libnih1 : PreDepends: libc6 (< 2.16) but 2.17-0ubuntu4 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Run Code Online (Sandbox Code Playgroud)
$ uname -a
Linux li366-234 2.6.39.1-x86_64-linode19 #1 SMP Tue Jun 21 10:04:20 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 11.04 \n \l
Run Code Online (Sandbox Code Playgroud)

小智 9

我不知道您是否仍然需要就此获得帮助,但这里总结了在这种情况下可以采取的措施(来自Appuals (appuals.com)):

方法1:使用-f参数(我知道你已经这样做了,但我在这里收集了所有内容)

sudo apt-get install -f
sudo dpkg --configure -a
sudo apt-get install -f 
Run Code Online (Sandbox Code Playgroud)

方法二:使用Aptitude

sudo aptitude install PACKAGENAME
Run Code Online (Sandbox Code Playgroud)

PACKAGENAME您正在安装的软件包在哪里,然后按Enter执行它。这将尝试通过 aptitude 而不是 apt-get 安装包,这可能会修复未满足的依赖项问题。

方法 3:确保启用了受限和 Universe 存储库并尝试更好的服务器

software-properties-gtk
Run Code Online (Sandbox Code Playgroud)
  • 在 Ubuntu 软件选项卡中,确保启用所有存储库(主、宇宙、受限、多元宇宙)。
  • 单击显示“下载自”的服务器列表,然后选择
  • 单击“选择最佳服务器”。
  • 同时按Alt,CtrlT打开终端,然后输入

    sudo apt-get update
    
    Run Code Online (Sandbox Code Playgroud)

    然后按 运行完成后,再次尝试安装软件。

方法四:清理包数据库

sudo apt-get clean
sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

方法 5:消除任何持有的包裹

sudo apt-get -u dist-upgrade
Run Code Online (Sandbox Code Playgroud)

然后(如果 pb):

sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Run Code Online (Sandbox Code Playgroud)

看看它是否解决了问题。如果它以X not upgraded结尾退出X,保存的包数是哪里,您需要将它们一一删除。

要删除保留的包裹,

sudo apt-get remove --dry-run PACKAGENAME
Run Code Online (Sandbox Code Playgroud)

PACKAGENAME是您要删除的包)。该--dry-run参数确保您了解接下来发生的任何事情。删除所有软件包后,请尝试安装首先导致问题的软件包,然后看看会发生什么。

方法 6:清除/删除/禁用 PPA

Personal Package Archives 是托管在 Launchpad 上的存储库,用于升级或安装通常在 Ubuntu 官方存储库中不可用的软件包。它们通常是导致未满足依赖项的最常见原因,尤其是当它们用于从 Ubuntu 存储库升级现有包时。您可以禁用、删除或清除它们。

然后,如果它们仍然显示一些依赖性问题,让我们清除它们:

apt purge packageXX packageYY packageZZ
Run Code Online (Sandbox Code Playgroud)

等等,直到一切都干净为止

有些人还说要编辑/var/lib/dpkg/status和删除尚未完成安装的块,但我怀疑这是否真的能解决问题,它只是将其隐藏在地毯下。


小智 2

  1. 您尝试过以下操作吗?

    apt-get check
    
    Run Code Online (Sandbox Code Playgroud)
  2. 先尝试一下:

    sudo dpkg --configure -a
    
    Run Code Online (Sandbox Code Playgroud)

其次是:

sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)