特定のパッケージのインストールを禁止するにはどうすればよいですか?


27

インストールする別のパッケージで特定のパッケージが必要な場合でも、特定のパッケージをインストールしないようにUbuntuを構成できますか?


システムを壊したい場合を除き、依存関係なしでパッケージをインストールすることはできません。
enzotib

2
@enzotib、まず第一にあなたが間違っている:パッケージの依存関係は冗長になる可能性があります。多数の例があります。または、必要なパッケージと同等のものを別の方法でインストールすることもできます(たとえば、リポジトリ内のすべてのJavaアプリケーションに必要なopenjdk-6がインストールされていますが、実際にopenjdk-6を使用することはありません。代わりにopenjdk-7またはOracle JDK 7を使用するようにすべてを設定してください)。そして2つ目-依存パッケージをインストールしたいとは言わなかった-この場合はエラーをスローするだけで、特定のパッケージがインストールされないことを確認したいだけです。
イヴァン

同様の質問があります。
ニマーメール

回答:


28

Debianの場合と同様、Ubuntuでもバージョンとインストールの制御apt-pinningを使用できます。

特定のパッケージのインストールをブロックするには、次の行を /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

このピンに負の優先度を与えることで、<nameofpackage>それ以上指定されていないオリジン、つまりローカルリポジトリからのインストールをブロックします。もちろん、apt-pinningを使用して、特定のパッケージバージョンまたは特定のオリジンを固定できます。

先に進む前に、上記のドキュメントとapt_preferencesのマンページを読むことを強くお勧めします。これらのファイルのエラーはaptによってチェックされず、発生した場合はパッケージ管理が壊れる可能性があるためです。

別の方法、および特定のパッケージの更新を防止するには、以下を参照してください。


これがUbuntu 12.04で機能するかどうか知っていますか?もう1つの質問は、機能しない可能性があるという報告です。
ルシオ

1
@Lucio:確かに-それはまだ動作します。12.10でも動作するようにテストしました。
Takkat

3
- Package:行では、次のように、スペースで区切られた複数のパッケージをリストできます。Package:metacity metacity-common libmetacity-private0a。(Package:metacity *のようなパターンも考えられます)
Volker Siegel 14

5
Ubuntu 16.04ではPin: origin ""、私にとってはうまくいきませんでしたが、Pin: release *うまくいきました。
barbaz

3

Debianではパッケージをブロックでき、そのパッケージはもうアップグレードしません

# echo name_of_package hold | dpkg --set-selections

しかし、私はあなたが禁止できるかどうかわかりません


Ubuntu 15.10(wily)で試しましたが、パッケージをブロックしませんでした。ちょうど私に警告を与えたpackage not in database
ブレントバカラ

2

私はこっそり戻ってgitを壊し続けるパッケージを持っています

sudo apt-mark hold libgnutls-deb0-28

そのパッケージがインストールされないようにする必要があります

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