2013-06-19 21 views
7

Mam przykładowy kod C++, który odbiera zdarzenia hotplug za pomocą biblioteki udev. W Ubuntu 10.04 działało dobrze. To tylko warunek był pakiet libudev-dev: sudo apt-get install libudev-devubuntu 12.04 libudev-dev nie będzie instalowany z powodu zależności

Ale gdy próbowałem zainstalować ten pakiet w 12,04, otrzymuję:

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. 

To zdaje się sugerować, że powinienem zainstaluj libudev0, więc:

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. 

Nie jestem pewien, jak przejść dalej. libudev-dev zależy od libudev0, ale to już jest na miejscu, więc ... co dalej?

Należy pamiętać, że następujące repo są un-skomentował w sources.list i robiłem 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 

Niektóre strony wskazały zrobić -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. 

Znaleziono doskonały link tutaj: https://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies , ale bez radości.

Google twierdzi, że jest to slam dunk dla innych ludzi tam ...

Dzięki za wszelką pomoc w tej sprawie, John

Odpowiedz

13

Oto rozwiązanie.

Kiedy czytasz co następuje:

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. 

oznacza to, że pakiet libudev-dev Próbuję zainstalować zależy od pakietu:

libudev0 version 175-0ubuntu9 

(To co "(= 175-0ubuntu9) "próbuje powiedzieć)

Ale wersja libudev0 175-0ubuntu9. 3 zostało już zainstalowane.

(To co "ale 175-0ubuntu9.3 ma być zainstalowany" próbuje powiedzieć).

Więc innymi słowy:

  • nowsza wersja libudev0 jest już zainstalowana.
  • Pakiet libudev-dev, który próbuję zainstalować, zależy od starszej wersji libudev0 starszej i jest już zainstalowany.
  • co z kolei oznacza, że ​​repozytorium, w którym instaluję libudev-dev, jest nieaktualne.

Możesz znaleźć pakiety dostępne we wszystkich repozytoriach, które aktualnie są wymienione w/etc/apt/sources.listę:

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

Więc w końcu mamy do prawdziwego problemu ! Moja lista repozytoriów w sources.list nie zawiera tej, która zawiera libudev-dev 175-0ubuntu9.3.

Aby to naprawić:

  1. iść do http://packages.ubuntu.com i wyszukać "libudev-dev"

  2. w otrzymanym liście znaleźć 175-0ubuntu9.3 na precyzyjny Pangolin (Ubuntu 12.04). W tym przypadku ta wersja jest pod "dokładnymi-udpates". Można kliknąć na link:

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

    który pokazuje wszystko, co chcielibyście wiedzieć o libudev-dev. Poza tym, że nie pokazuje dokładnego URL-a repo, którego powinienem użyć! Więc mam zamiar wziąć trochę chyba ...

  3. dodać repo 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. odświeżyć

    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. zainstalować pakiet:

    sudo apt-get install libudev-dev 
    

    który działa jak urok!

John

+0

'madison' apt-cache nie wymaga priviliges korzeniowych – Ruslan

1

Nie. Nie działa jak urok.

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

libudev-dev | 175-0ubuntu9.8 | http://archive.ubuntu.com/ubuntu/ Precyzyjne aktualizacje/główne pakiety amd64

libudev-dev | 175-0ubuntu9.8 | http://us.archive.ubuntu.com/ubuntu/ precyzyjne aktualizacje/głównych pakietów 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 Wersja.

probieren Sie »apt-get -f install«, um umiera zu korrigieren:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:

libudev-dev: hängt ab von: libudev0 (= 175-0ubuntu9.8), ale 175-0ubuntu9 zainstalować

libudev0: Uszkodzone: libudev0: (i386 = 175-0ubuntu9) ale 175-0ubuntu9.8 zainstalować

libudev0: i386: Uszkodzony: libudev0 (=! 175-0ubuntu9.8) ale 175-0ubuntu9 zainstalować

e: niespełnione zależności. Spróbować „apt-get -f install” bez podania pakietów (lub podać rozwiązanie).

TO CZY.

apt-get pobieranie libudev0 libudev0 I386

sudo dpkg -i libudev0 _ * deb

sudo apt-get upgrade

+1

To pomaga edytować hałas (potęgowany przez factthat To w języku niemieckim) i podać podstawowe części rozwiązaniem. – djv

+2

Lubiłem część nope. – diggy

0

To co pracował dla mnie:

  1. sudo apt-mark hold Libu dev0: i386
  2. sudo apt-mark hold libudev0
  3. sudo apt-get upgrade
  4. Potem poszedłem do synaptic i oznaczony libudev do uaktualnienia (probobly będzie pracował za pośrednictwem linii poleceń, jak również. nie tylko, jak to zrobiłem)
Powiązane problemy