7

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は、これは他の人々にとってはスラムダンクだと言っています...

これについて助けてくれてありがとう、ジョン

4

3 に答える 3

14

これが解決策です。

以下を読むと:

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 old に依存しており、既にインストールされています。
  • これは、libudev-dev をインストールしているリポジトリが古くなっていることを意味します。

現在 /etc/apt/sources.list にリストされているすべてのリポジトリで利用可能なパッケージを見つけるには、次のようにします。

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

ついに本当の問題にたどり着きました!sources.list のリポジトリのリストに、libudev-dev 175-0ubuntu9.3 を含むものがありません。

それを修正するには:

  1. http://packages.ubuntu.comに移動し、「libudev-dev」を検索します

  2. 結果のリストで、Precise Pangolin (ubuntu 12.04) の 175-0ubuntu9.3 を見つけます。この場合、そのバージョンは「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
    

    これは魅力のように機能します!

ジョン

于 2013-06-21T00:28:11.793 に答える
1

いいえ。魅力のようには機能しません。

@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... フェルティグ

Abhängigkeitsbaum wird aufgebaut

ステータス情報は 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 : 次の場所に移動します: 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 (または Sie eine Lösung an).

これはしました

apt-get ダウンロード libudev0 libudev0:i386

sudo dpkg -i libudev0_*.deb

sudo apt-get アップグレード

于 2015-01-23T19:26:58.113 に答える
0

これは私のために働いたものです:

  1. sudo apt-mark ホールド libudev0:i386
  2. sudo apt-mark ホールド libudev0
  3. sudo apt-get アップグレード
  4. 次に、シナプスに入り、libudev をアップグレード用にマークしました (おそらく、コマンド ラインでも機能したはずです。私が行った方法とは異なります)。
于 2015-05-05T18:22:38.060 に答える