web-dev-qa-db-ja.com

特定のパッケージの更新を防ぐ方法は?

バグ#693758 のため、apt-get upgradeおよびUpdate Managerが「libgtk2.0-0」パッケージを更新しないようにしたいと思います。

どうすればこれを達成できますか?

375
Ivan

ホールディング

パッケージを保留するには、dpkg、apt、aptitude、またはdselectの4つの方法があります。

dpkg

パッケージを保留にします。

echo "<package-name> hold" | Sudo dpkg --set-selections

保留を解除します。

echo "<package-name> install" | Sudo dpkg --set-selections

パッケージのステータスを表示します。

dpkg --get-selections

単一のパッケージのステータスを表示します。

dpkg --get-selections | grep "<package-name>"

適切な

パッケージを保持する:

Sudo apt-mark hold <package-name>

保留を解除します。

Sudo apt-mark unhold <package-name>

保留中のすべてのパッケージを表示:

Sudo apt-mark showhold

dselect

Dselectを使用して、[S] elect画面に入り、現在の状態で保持したいパッケージを見つけて押します = または H。 [S] elect画面を終了すると、変更はすぐに有効になります。


以下のアプローチは、aptitudeまたはsynaptic内でパッケージをロック/保持してもapt-get/aptに影響しないという点で制限されています。

aptitude

パッケージを保持する:

Sudo aptitude hold <package-name>

保留を解除します。

Sudo aptitude unhold <package-name>

Synaptic Package Managerを使用したロック

Synaptic Package Manager(System> Administration> Synaptic Package Manager)に移動します。

検索ボタンをクリックして、パッケージ名を入力します。

パッケージが見つかったら、それを選択してPackageメニューに移動し、Lock Versionを選択します。

Synaptic menu

そのパッケージは更新マネージャーに表示されなくなり、更新されなくなります。

550
hhlp

パッケージ「foo」を保留にするには:

echo "foo hold" | dpkg --set-selections

あなたの場合、ワインを保留にします。

Sudo -i
echo "wine hold" | dpkg --set-selections

保留を解除するには:

Sudo -i
echo "wine install" | dpkg --set-selections
44
Panther

私は同じものを探していましたが、多くの調査の結果、次の構文を使用すると、特定のバージョンを禁止して次の更新を許可できることがわかりました。

パッケージ:compiz-plugins-main 
 Pin:バージョン1:0.9.7.0〜bzr19-0ubuntu10.1 
 Pin-Priority:-1 

これは/ etc/apt/preferencesファイルに入ります。

35
soger

Sudo apt-get install synapticを使用してsynapticをインストールします。

gksudo synapticを使用して実行し、検索ボックスでロックするパッケージを見つけます。例:gedit

enter image description here

パッケージメニューからロックバージョンを選択します。

enter image description here

それだけです。ロック時に現在インストールされているバージョンは、アップグレード中でもインストールされたままになります。

19
Bruno Pereira

パッケージがインストールされないようにすることは「パッケージの保持」と呼ばれ、非常に簡単です。

エコー パッケージ名 ホールド| dpkg --set-selections 

...ここで* package_name *は、インストールを禁止するパッケージの名前です。

注:上記のコマンドはルート権限を想定しています。つまり、実行する前におそらくSudo suと入力する必要があります。

16
RobotHumans

しばらくするとapt-getaptに置き換えられるため、たとえば、Firefoxが56を超えるバージョンに更新されないようにしたいのです。たとえば、 「タブグループ」 は、新しいFirefox 57では機能しなくなりました(「WebExtensionsアップデート」を参照)。

1つのコマンドで複数のパッケージを保持し、ワイルドカードを使用することができます。

Firefoxが更新されないようにする

Sudo apt-mark hold firefox firefox-locale-*

後で保留を解除する必要がある場合は、次のコマンドになります。

Sudo apt-mark unhold firefox firefox-locale-*
6
rubo77

特定のパッケージのバージョンをフリーズできるシナプスです。これによりapt-getが修正されるかどうかは100%わかりませんが、アップデートマネージャーは間違いなく停止します。

パッケージをフリーズするには、シナプスでパッケージを選択し、パッケージメニューを開いてフリーズバージョンを選択します。

お役に立てれば

編集:これ 質問16668 同様の状況を扱います

4
Allan

パッケージを特定のバージョンに「保持」および「固定」することについて知りたいことすべて: https://help.ubuntu.com/community/PinningHowto

4
Jeff Ferland

バグ #75332#158981 および #72806 を参照してください。

要約すると、apt-get/aptitudeレベルでの保留はdpkgで保留状態をトリガーせず(特にバグ72806を参照)、update-managerはdpkgから状態を読み取ります。

回避策はルートとして実行されます:echo "package hold" | dpkg --set-selections

3
jasper

次のように、aptitudeで「特定のオーバーライド」を使用できます。

aptitude reinstall ~i Oracle-Java8-jre:

これは、システム内のすべてのパッケージを再インストールし、Oracle-Java8-jreを再インストールしないための(将来の再インストール用に保存されない)1回限りの使用です。

特定の保持オーバーライドを使用すると、パッケージは一時的に保持状態になり、aptitudeはインストールを試みません。

システムが何らかの方法で侵害されたと思われる場合、非常に良いことです。

2
cabonamigo

Synapticがインストールされている場合、パッケージを選択し、[パッケージ]-> [バージョンのロック]メニューを使用して更新されないようにすることができます。

Synapticは、Sudo apt-get install synapticを使用してインストールできます。個人的には、ソフトウェアセンターよりも便利だと思います...それから、私はかなり古い学校です。 :)

1
dinchamion

時々all現在インストールされているパッケージを控えたいかもしれません。方法は次のとおりです。

最初に現在の状態を保存して、元に戻すことができます:

dpkg --get-selections > current_selections.txt

次に、すべてのパッケージを保留するには:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

最後に、以前の状態に戻したい場合:

dpkg --set-selections < current_selections.txt

この使用例の1つは、VMまたはAmazon AMIスナップショットを作成してQAから本番環境に移行する場合です。

0
JVW

Ubuntu 16.04に関連する@ soger のコメントに詳細を追加します。

Ubuntu 16.04には、デフォルトでは既存の/ etc/apt/preferencesファイルがありません。現在ファイルがない場合は、新しいファイルを作成し、上記の@sogerで説明されているようにスタンザを追加して、指定されたパッケージとその依存関係を更新から除外します。

その後、apt updateを実行すると、GTGになります。 :0)

たとえば、IntelビデオカードとNVidiaカードが埋め込まれたUbuntu 16.04.5 LTSサーバーがあります。 NVidiaカードのみが使用されます。サーバーはCUDAドライバーも使用します。 aptが主張し続ける問題がありました

va-driver-all

(Intelドライバー)は更新が必要でしたが、インストールするバージョンを判別できませんでした。これは私を夢中にさせていたので、とにかくIntelドライバーは必要ありませんでした。このテキストを設定ファイルに入力し、aptをフラッシュして問題を解決しました。

Package: va-driver-all
Pin: release *
Pin-Priority: -1
0
MrPotatoHead