カーネルのバージョンの不一致によりウェッジされたAPT


18

Aptは、私にとって有益なことを何もできないように思われ、この形式のメッセージを繰り返し送信します。

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

これは基本的には同じ問題です。パッケージ(linux-image-server、linux-serverの依存関係エラー)インストールできませんでした依存関係に関する非常に一般的な答えのアドバイスは役に立たない。

明示的に:

sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update

すべて効果はありません。ながら

sudo apt-get -f install
sudo dpkg --configure -a
sudo apt-get -u dist-upgrade
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

これらはすべて、上記のエラーメッセージの形式を提供します。

回答:


20

あなたは走りましたsudo apt-get update、そして、問題はまだ起こります。だから、あなたはおそらく、新しいバージョンの持っているlinux-image-serverし、linux-headers-server誰よりもlinux-server利用可能なパッケージあなた構成されたソフトウェアのソースからを

これは、中央サーバーを使用している場合でも非常に短い時間(または更新に問題がある場合はより長い時間)発生する可能性があります。私の理解では、ミラーを使用すると、長期間にわたって発生する可能性があります。これは、ミラーを使用すべきではないという意味ではありません。中央サーバー(http://archive.ubuntu.com)は通常非常に低速であり、国、地域、またはその他のミラーははるかに高速です。

パッケージの検索は両方のバージョン3.2.0.37.45明らかlinux-image-serverlinux-serverUbuntuの12.04のために存在します。それはおそらくあなたのミラーに関連しているでしょう。

いくつかの選択肢があります:

それを無視します

他のパッケージのインストールなど、他の目的でパッケージマネージャーを使用できる場合は、これを無視できます。ミラーが更新されたら、おそらくパッケージを取得するだけです。

最新のlinux-serverパッケージがなくても問題はありません。実際のソフトウェアを提供しないメタパッケージだからです。これは、3つのパッケージを依存関係としてリストできるようにするためにのみ存在し、それらがインストールされたままであることを保証します。

との最新バージョンが既にlinux-headers-serverありlinux-image-serverます。私の推測では、これは64ビットシステムであるため、メッセージlinux-generic-paeは表示されませんでした。すべてがうまくいくようです。

しかしながら:

  • 問題が他のパッケージの更新とインストールを妨げている場合 (そうするたびにそれらのメッセージを表示するだけなく、干渉しない)、他のソリューションを適用する必要があります。
  • これらのメッセージを常に表示するのが嫌いで、それらを削除したい場合にも、そうすることをお勧めします。
  • このパッケージも提供されてhttp://security.ubuntu.comいるため、メインのダウンロードサーバーよりも少し遅れるミラーを使用している場合でも、このパッケージを入手していないのは少し奇妙です。そのサーバーは常にで有効にする必要があります/etc/apt/sources.list。そのため、それが有効になっていることを確認することをお勧めします。sources.list編集する前にバックアップすることもできます(sudo cp /etc/apt/sources.list /etc/apt/sources.list.old)。この問題は、古いデータでWebプロキシ(使用している場合)をキャッシュした結果でもある可能性があります。(以下のソリューションもそれを回避します。)

別のダウンロードサーバーに変更する

Ubuntu Serverシステムを実行していて、おそらくGUIがインストールされていないと思います。だから、参照してください:

ミラーを変更した後、次を実行します。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

必要に応じて、linux-server更新後にサーバーを元に戻すことができます。

.debパッケージファイルを手動でダウンロードしてインストールする

Ubuntu 12.04のメタパッケージの.deb最新バージョンのファイルを手動でダウンロードしてインストールできますlinux-server

cd パッケージをダウンロードしたい場所に。

これが64ビットシステムの場合、次を実行します。

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_amd64.deb

これが32ビットシステムの場合、代わりにこれを実行します。

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

linux-metaUbuntuのソースパッケージの Launchpadページでこれらの両方のリンクを取得しました。)

ここで(64ビットと32ビットの両方について)、次のコマンドを実行してパッケージをインストールします。

sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(または、単にパッケージの名前の入力を開始Tabし、それを使用して完了します。)

パッケージを削除する

既にお持ちのソフトウェアを提供するメタパッケージなので、パッケージを削除できます。そうすれば、エラーはもう発生しません。必要に応じて、後で再度インストールできます(定期的に実行apt-get update && apt-cache policy linux-serverして、新しいバージョンが利用可能かどうかを確認できます)。

削除する場合は、2つの手順があります。最初はアンインストールすることlinux-serverです。2番目は、パッケージが後で自動的に削除されないようにすることです。

依存関係はすぐには削除されません。したがって、これらの手順のどちらを最初に実行してもかまいません。

1.アンインストールしlinux-serverます。

をアンインストールするにはlinux-server、次を実行します。

sudo apt-get remove linux-server

2.依存関係を手動でインストール済みとしてマークする

依存関係を宣言するものが何も残っていない場合でも、インストールする予定のパッケージについてAPT(パッケージマネージャー)に伝えるには、手動でインストール済みとしてマークします。

これを行うには、64ビットシステムの場合、次のコマンドを実行します。

sudo apt-mark manual linux-image-server linux-headers-server

32ビットシステムの場合は、代わりにこれを実行します。

sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(必要apt-markですが、インストールしておらず、ソフトウェアをインストールできない場合は、--installのapt-get install代わりにapt-mark manualパッケージを手動で指定すると、既にインストールされていても手動でインストールされたとマークされます)

ソース: debパッケージを使用済みとしてマークするため、自動削除は推奨されません
(特にLekensteynの回答)。


3
詳細な対応ありがとうございます。ミラーを変更しても状況はまったく変わりませんでした。しかし、新しいバージョンのlinux-server(linux-server_3.2.0.37.45)を手動でインストールすると、問題は解決しました。
レオッド

2
私の場合は、apt-getを使用できませんでした。linux-serverのアンメット依存関係エラーが常に表示されました。あなたのアドバイスに触発され、私が働いていた次のことを、試してみましたはるかに簡単だった:sudo apt-get remove linux-server && sudo apt-get install linux-server
アンドリューEnsley

4

完全な/ bootがあり、自動セキュリティアップグレードインストールが失敗した場合、あなたは私と同じ船に乗っている可能性があります。

私はapt-getに何もすることができなかったので、従来のフル/ bootアドバイスは機能しませんでした。古いカーネルデータを手動で削除しました。現在実行中のカーネルを削除せず、「uname -a」で確認します。'sudo rm / boot / -3.2.0- {23,24,25,26}-で削除しました。

その後、「sudo apt-get remove linux-server」と「sudo apt-get install linux-server」を実行して、インストールされた1/2のカーネルの問題の混乱を修正する必要がありました。結局、私はついに「sudo apt-get upgrade」を実行して、物事を再び動かすことができました。

良い手段として、「sudo update-grub」と「sudo apt-get autoremove」を追加して、ブートメニューが正確で、他のパッケージがクリーンアップされていることを確認しました。


ここでこのプロセスについてもう少し詳しく書きました:askubuntu.com/a/430944/47461請負業者として、私はこの問題に頻繁に遭遇します。
フリッカーフライ

0

Ubuntu 12.04の状況では、linux-headers-serverとlinux-serverの両方を手動でインストールする必要がありました(上記で提案したとおり-私はそこにコメントしましたが、まだその特権を持っていません)、次にapt-get remove linux-headers-virtual。12.04の64ビットパッケージとしてはもはや存在しないようです。

sudo wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-headers-server_3.2.0.64.76_amd64.deb

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.