
私は 64 ビットの Debian Wheezy を実行しています。最近、apt-get upgrade
これを実行すると次のエラーが発生します。
The following packages have been kept back:
libsmbclient libtevent0 samba-libs
気が狂いそうです。とにかく使わないので samba を削除しようと思ったのですが、ある天才が Gnome に samba を依存させてしまいました。
# apt-get remove libsmbclient
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
gnome gnome-core gvfs-backends libgnomevfs2-extra libsmbclient mencoder mplayer
これらのパッケージを安全にアップグレードするにはどうすればよいですか?
カスタムのものはあまりインストールされていません:
deb http://ftp.pl.debian.org/debian/ wheezy main
deb-src http://ftp.pl.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.pl.debian.org/debian/ wheezy-updates main
deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main
# wheezy-backports
deb http://ftp.pl.debian.org/debian/ wheezy-backports main contrib non-free
# virtualbox
deb http://download.virtualbox.org/virtualbox/debian/ wheezy contrib
[アップデート]
私が試したこと:
apt-get dist-upgrade
- 結果は同じです (パッケージは保留されています)。- 使用されました
aptitude
が、gnome とその他の gnome 関連パッケージをいくつか削除し、大量の i386 パッケージ (ライブラリのみのようです) をインストールするように提案されているだけです。 apt-get install libsmbclient
与えるlibsmbclient : Depends: samba-libs (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
apt-get install libtevent0
を与えますlibtevent0 : Depends: libtalloc2 (>= 2.1.0) but 2.0.7+git20120207-1 is to be installed
。apt-get install samba-libs
与えるsamba-libs : Depends: samba-dsdb-modules (= 2:4.1.9+dfsg-1~bpo70+1) but it is not going to be installed
[アップデート2]
この問題の原因は、バックポート リポジトリのどこかにあるようです。私はかつて、Bumblebee と DVD リッピング ツールを試していたのですが、バックポートから何かをインストールしなければならなかったことを覚えています。もう必要ありません。Bumblebee は私のハードウェアではとにかく失敗し、DVD は最終的に Windows でリッピングされました :(
今、私はこれを実行しaptitude search '~S ~i ~Abackports'
、次の結果を得ました:
i initramfs-tools - generic modular initramfs generator
i A libavutil53 - Libav utility library
i libldb1 - LDAP-like embedded database - shared library
i A libnettle4 - low level cryptographic library (symmetric and one-way cryptos)
i A libntdb1 - New Trivial Database - shared library
i A libopus0 - Opus codec runtime library
i libswscale2 - Libav video scaling library
i A libtdb1 - Trivial Database - shared library
i A libwbclient0 - Samba winbind client library
i A python-talloc - hierarchical pool based memory allocator - Python bindings
i samba-common - common files used by both the Samba server and client
これらのパッケージをダウングレードすれば、すべて問題ないと思います。正しいでしょうか? どうすればいいでしょうか?
[アップデート3]
私はバックポート リポジトリからそれらのパッケージを削除またはダウングレードしようとしましたが、部分的にしか実行できませんでした。
ダウングレードしたいと思ったときにlibntdb1
、安定版リポジトリに存在しないことに気付きました。 を削除しようとすると、再び、apt は gnome も削除しようとしました。 実行すると、apt-cache rdepends libntdb1
逆依存関係は のみであることがわかりましたsamba-libs
。安定版リポジトリにも はなくsamba-libs
、またしても gnome とその他多くのものを削除しようとするため、削除もできません。一体何が起こっているのでしょうか?samba-libs
を実行したときに がリストされないことに注意してくださいaptitude search '~S ~i ~Abackports'
。 どうすればこれを削除できますか?
また、ダウングレードしようとしましたlibldb1
が、どちらの場合も gnome を削除したかったlibwbclient0
ためできませんでした。なぜでしょうか?apt
結局、バックポート リポジトリからの 3 つのパッケージが次のようにリストされましたaptitude search '~S ~i ~Abackports'
。
i libldb1 - LDAP-like embedded database - shared library
i A libntdb1 - New Trivial Database - shared library
i A libwbclient0 - Samba winbind client library
そしてsamba-libs
、どうやらこれもバックポートから来ているようですが、リストには載っていませんaptitude search '~S ~i ~Abackports'
答え1
次を使用して、deb パッケージを特定のリポジトリにダウングレードすることができますapt
。
# apt-get install libsmbclient/wheezy libtevent0/wheezy samba/wheezy
- "[package]/wheezy" 構造は、ユーザーが wheezy リポジトリからのパッケージを希望することを意味します。のみ最新のものではありません。
- 明記することが重要です全て必要なパッケージを一度に取得して、
apt
依存関係を正しく解決し、他の wheezy パッケージを取得できるようにします。
保持したい重要なパッケージを削除するかどうかのプロンプトが表示されない場合はapt
、そのまま進めます。依存関係の問題に関する警告がいくつか表示されますが、致命的でない限り、それらの警告を無視しても問題ありません。
ダウングレードが成功すると、libtevent0、libldb1 などのライブラリは不要になります。apt-get --purge autoremove
and/or deborphan
(インストールされている場合) を使用して、システムで役に立たない孤立したパッケージを見つけてクリーンアップできます。
(私の以前の回答は無効となり、すぐに削除されます。いずれにせよ間違っています。 でダウングレードすることは可能ですapt
)
答え2
私はaptitudeのインタラクティブパッケージソルバーを使用します:
を実行しますsudo aptitude
。次に、U
すべてをアップグレードしたいことを示すために (大文字の u) と入力します。競合があることが通知され、解決方法が提案されます。 を使用して対話型e
ソルバーに入り、次に.
(ドット) と,
(カンマ) を使用して、見つかったさまざまなソリューションを反復処理し、そのうち!
の 1 つのソリューションを受け入れます。
A
また、解決策の一部 (たとえば、gnome の削除を提案する部分) に移動して、それを受け入れる ( を使用) か、または拒否する ( を使用)かを伝えることで、(自分にとって) より良い解決策を見つける手助けR
をすることもできます。
答え3
最も迅速で簡単な解決策:
各パッケージを個別にインストールする必要があります。
これを見てスーパーユーザー解決: apt パッケージを保留するソリューション
警告: 走らないで sudo apt-get dist-upgrade
必要なパッケージが完全にインストールされるまでは、& を実行しないでください。その後、そしてその後にのみ、sudo apt-get update
& を実行できます。sudo apt-get dist-upgrade
答え4
ターミナルを開いて次のように入力します:
apt-cache rdepends packagename
置き換えてパッケージ名削除したいパッケージを入力すると、削除しようとしているパッケージを必要とするパッケージが一覧表示されるので、まずそれらのパッケージを削除してから、実際のパッケージを削除してください。