2013-06-19 2 views
7

У меня есть пример кода C++, который получает события hotplug с использованием библиотеки udev. Он отлично работал в Ubuntu 10.04. Это единственная предпосылка была libudev-DEV пакет: Sudo APT-получить установку libudev-DEVubuntu 12.04 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, и я сделал меткое-получить обновление:

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

Спасибо за любую помощь по этому вопросу, Джон

ответ

13

Вот решение.

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

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.список:

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

Итак, наконец, мы получаем к РЕАЛЬНОЙ проблемы! В моем списке репозиториев в sources.list отсутствует тот, который содержит libudev-dev 175-0ubuntu9.3.

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

  1. пойти http://packages.ubuntu.com и искать "libudev-разработчика"

  2. В полученном списке найти 175-0ubuntu9.3 для Precise Pangolin (убунту 12,04). В этом случае эта версия находится под «точной версией». Вы можете нажать на ссылку:

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

    , который показывает все, что вы хотели знать о libudev-разработчика. Кроме того, он не показывает точный URL-адрес репо, который я должен использовать! Так что я собираюсь взять немного догадки ...

  3. добавить репо меткому

    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 
    

    который работает как очарование!

Джон

+0

'madison' APT-кэш не требует корень priviliges – Ruslan

1

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

@ubuntu: ~ $ Sudo APT-кэша Мадисон libudev-DEV

libudev-DEV | 175-0ubuntu9.8 | http://archive.ubuntu.com/ubuntu/ Точные обновления/основные amd64 Пакеты

libudev-dev | 175-0ubuntu9.8 | http://us.archive.ubuntu.com/ubuntu/ точные-обновления/основные amd64 Пакеты

Ubuntu: ~ $ Sudo APT-получить установку libudev-DEV

Paketlisten Верден gelesen ... Fertig

Abhängigkeitsbaum WIRD aufgebaut

Statusinformationen Werden eingelesen. .. Fertig

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

Probieren Sie »APT-получить -f установить«, гм умирает цу korrigieren:

Die folgenden Pakete Haben unerfüllte Abhängigkeiten:

libudev-Dev: Hängt аб фон: libudev0 (= 175-0ubuntu9.8), но 175-0ubuntu9 установить

libudev0: Поврежденные: libudev0: (i386 = 175-0ubuntu9), но 175-0ubuntu9.8 установить

libudev0: i386: Битая: libudev0 (=! 175-0ubuntu9.8), но 175-0ubuntu9 установить

е: Неудовлетворенные зависимости. Попробуйте «APT-получить -f установить» без указания пакета (или указать решение).

ЭТО СДЕЛАЛ:.

APT-получить скачать libudev0 libudev0 I386

SUDO DPKG -i libudev0 _ * Деб

Sudo APT-получить обновление

+1

Это поможет отредактировать шум (усугубляется factthat это на немецком языке) и предоставить существенные части решение. – djv

+2

мне понравилась часть Неа. – diggy

0

Это то, что работает для меня:

  1. Sudo APT-метка держать либу dev0: i386
  2. Sudo APT-метка держать libudev0
  3. Sudo APT-получить обновление
  4. Тогда я пошел в синаптические и промаркирован libudev для обновления (probobly работал бы с помощью командной строки, а также. просто не так, как я это сделал)
Смежные вопросы