由于依赖关系,ubuntu 12.04 libudev-dev 不会安装

Posted

技术标签:

【中文标题】由于依赖关系,ubuntu 12.04 libudev-dev 不会安装【英文标题】:ubuntu 12.04 libudev-dev won't install because of dependencies 【发布时间】:2013-06-15 09:18:00 【问题描述】:

我有一些使用 udev 库接收热插拔事件的示例 C++ 代码。它在 Ubuntu 10.04 中运行良好。唯一的先决条件是 libudev-dev 包: sudo apt-get install libudev-dev

但是当我尝试在 12.04 中安装该软件包时,我得到:

sudo apt-get install libudev-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
libudev-dev : Depends: libudev0 (= 175-0ubuntu9) but 175-0ubuntu9.3 is to be installed
E: Unable to correct problems, you have held broken packages.

这似乎暗示我应该安装libudev0,所以:

sudo apt-get install libudev0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libudev0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

我不知道如何从这里开始。 libudev-dev 依赖于libudev0,但它已经到位,所以...下一步是什么?

请注意,sources.list 中未注释以下存储库,并且我已经完成了 apt-get 更新:

deb http://us.archive.ubuntu.com/ubuntu/ precise main restricted    
deb-src http://us.archive.ubuntu.com/ubuntu/ precise main restricted
deb http://us.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://us.archive.ubuntu.com/ubuntu/ precise universe

一些网站表明我应该做 -f:

sudo apt-get -f install 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

在这里找到了一个很好的链接: https://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies 但没有快乐。

Google 说这对其他人来说是一个灌篮......

感谢您对此的任何帮助, 约翰

【问题讨论】:

【参考方案1】:

这是解决方案。

当您阅读以下内容时:

The following packages have unmet dependencies:
libudev-dev : Depends: libudev0 (= 175-0ubuntu9) but 175-0ubuntu9.3 is to be installed
E: Unable to correct problems, you have held broken packages.

这意味着我尝试安装的 libudev-dev 包依赖于包:

libudev0 version 175-0ubuntu9

(这就是“(= 175-0ubuntu9)”想要表达的意思)

但是已经安装了libudev0 175-0ubuntu9.3版本。

(这就是“要安装 175-0ubuntu9.3”的意思)。

换句话说:

已安装较新版本的 libudev0。 我尝试安装的 libudev-dev 软件包依赖于旧版本的 libudev0,并且它已经安装。 这反过来意味着我安装 libudev-dev 的存储库已过期。

您可以通过以下方式在 /etc/apt/sources.list 中列出的所有存储库中找到可用的软件包:

sudo apt-cache madison libudev-dev
sudo apt-cache madison libudev0

所以我们终于解决了 REAL 问题!我在sources.list 中的存储库列表缺少包含libudev-dev 175-0ubuntu9.3 的存储库。

修复它:

    转到http://packages.ubuntu.com 并搜索“libudev-dev”

    在结果列表中找到 Precise Pangolin (ubuntu 12.04) 的 175-0ubuntu9.3。在这种情况下,该版本处于“精确更新”之下。您可以点击链接:

    http://packages.ubuntu.com/precise-updates/libudev-dev

    它显示了您想了解的有关 libudev-dev 的所有信息。除了它没有显示我应该使用的确切回购网址!所以我来猜一猜……

    将仓库添加到 apt

    sudo gedit /etc/apt/sources.list
    [ add these two repos ]
    deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main    
    deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates main
    

    刷新

    sudo apt-get update
    sudo apt-cache madison libudev-dev
    [you should see libudev-dev 175-0ubuntu9.3 in the output]
    libudev-dev | 175-0ubuntu9.3 | http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
    

    安装包:

    sudo apt-get install libudev-dev
    

    这就像一个魅力!

约翰

【讨论】:

apt-cache madison 不需要 root 权限【参考方案2】:

不。不像魅力。

@ubuntu:~$ sudo apt-cache madison libudev-dev

libudev-dev | 175-0ubuntu9.8 | http://archive.ubuntu.com/ubuntu/precision-updates/main amd64 包

libudev-dev | 175-0ubuntu9.8 | http://us.archive.ubuntu.com/ubuntu/precision-updates/main amd64 包

ubuntu:~$ sudo apt-get install libudev-dev

Paketlisten werden gelesen... Fertig

Abhängigkeitsbaum wird aufgebaut

Statusinformationen werden eingelesen... Fertig

libudev-dev ist schon die neueste 版本。

Probieren Sie »apt-get -f install«, um dies zu korrigieren:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:

libudev-dev : Hängt ab von: libudev0 (= 175-0ubuntu9.8) aber 175-0ubuntu9 soll installiert werden

libudev0 : Beschädigt: libudev0:i386 (!= 175-0ubuntu9) aber 175-0ubuntu9.8 soll installiert werden

libudev0:i386 : Beschädigt: libudev0 (!= 175-0ubuntu9.8) aber 175-0ubuntu9 soll installiert werden

E: Unerfüllte Abhängigkeiten。 Versuchen Sie »apt-get -f install« ohne Angabe eines Pakets (oder geben Sie eine Lösung an)。

这样做了

apt-get 下载 libudev0 libudev0:i386

sudo dpkg -i libudev0_*.deb

sudo apt-get 升级

【讨论】:

这将有助于消除噪音(由于它是德语的事实)并提供解决方案的基本部分。 我喜欢 Nope 部分。【参考方案3】:

这对我有用:

    sudo apt-mark 保持 libudev0:i386 sudo apt-mark 保持 libudev0 sudo apt-get 升级 然后我进入 synaptic 并标记 libudev 以进行升级(可能也可以通过命令行工作。只是不是我怎么做的)

【讨论】:

以上是关于由于依赖关系,ubuntu 12.04 libudev-dev 不会安装的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu12.04下pulseaudio的安装以及API使用

ubuntu12.04怎么安装vim

ubuntu12.04安装mysql时发生依赖错误

Ubuntu12.04+Caffe (+OpenCV+CPU-only)

ubuntu12.04下安装搜狗拼音

Ubuntu下安装boost