ubuntu 12.04 libudev-dev не будет установлен из-за зависимостей

у меня есть пример кода c++, который получает события hotplug с помощью библиотеки udev. Он отлично работал в 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, но это уже на месте, поэтому ... что дальше?

обратите внимание, что следующие РЕПО не комментируются в источниках.список, и я сделал apt-get update:

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 говорит, что это верняк для других людей...

Спасибо за любую помощь этот, Джон!--5-->

3 ответов


вот решение.

когда вы читаете следующее:

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, устарел.

вы можете найти пакеты, доступные во всех репозиториях, которые вы в настоящее время перечислили в /и т. д./кв/источников.список по:

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

Итак, наконец мы добрались до реальные проблема! Мой список репозиториев в sources.в списке отсутствует тот, который содержит libudev-dev 175-0ubuntu9.3.

чтобы исправить это:

  1. перейти к http://packages.ubuntu.com и поиск "libudev-dev"

  2. в полученном списке найти 175-0ubuntu9.3 Для точного Pangolin (ubuntu 12.04). В этом случае версия находится в разделе "precise-udpates". Вы можете перейти по ссылке:

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

    что показывает все, что вы хотели знать о libudev-dev. За исключением того, что он не показывает точный url-адрес РЕПО, который я должен использовать! Так что я попробую угадать...

  3. добавить РЕПО в 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
    
  4. обновить

    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
    
  5. установить пакет:

    sudo apt-get install libudev-dev
    

    который работает как шарм!

Джон


Неа. не работает как шарм.

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

libudev-dev / 175-0ubuntu9.8/http://archive.ubuntu.com/ubuntu/ precise-updates / основные пакеты amd64

libudev-dev / 175-0ubuntu9.8/http://us.archive.ubuntu.com/ubuntu/ precise-updates / основные пакеты amd64

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

Paketlisten Верден gelesen... Фертиг!--3-->

Abhängigkeitsbaum wird aufgebaut

Statusinformationen werden eingelesen... Фертиг!--3-->

libudev-dev ist schon die neueste версия.

Probieren МИП "apt-получить -установить Ф", ум умирает ЗУ 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) Абер 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-получить -установить Ф" от ohne Angabe Pakets человек (Одер Гебен Сиэ был eine Lösung собой).

ЭТО НИЧЕГО:

apt-get скачать libudev0 libudev0: i386

судо команды dpkg -я libudev0_*.дебютантка

sudo apt-получить обновление


вот что сработало для меня:

  1. sudo apt-mark hold libudev0: i386
  2. sudo apt-mark hold libudev0
  3. sudo apt-получить обновление
  4. затем я вошел в synaptic и отметил libudev для обновления (probobly также работал бы через командную строку. просто не так, как я это сделал)