ウェブサイト検索

Apt ツールを使用してパッケージの更新を無効化/ロックまたはブラックリストに登録する方法


APT は、Advanced Packaging Tool が Linux ベースのシステムにある別のパッケージ マネージャーであることを意味します。当初、dpkg.deb パッケージと連携するためのフロントエンドとして設計された apt は、Mac OS、Open Solaris などでの可視性を示すことに成功しました。

Debian パッケージ管理を管理するための APT および DPKG コマンドについて学び、マスターしたい場合は、30 以上をカバーする詳細な記事を使用してください。 > 両方のツールの例。

この記事では、Debian Linux とその派生版 (Ubuntu や Linux Mint など) でパッケージのインストール、アップグレード、削除を無効化/ロックするためのさまざまなテクニックを説明します。

1.hold/unhold オプションを指定した「apt-mark」を使用してパッケージを無効化/ロックする

コマンド apt-mark は、ソフトウェア パッケージを自動的にインストールされるものとしてマークまたはマーク解除し、 オプション hold または unhold とともに使用します。

  1. 保留 – このオプションは、パッケージを保留としてマークするために使用されます。これにより、パッケージのインストール、アップグレード、または削除がブロックされます。
  2. 保留解除 – このオプションは、パッケージに対して以前に設定された保留を解除し、パッケージのインストール、アップグレード、削除を可能にするために使用されます。

たとえば、パッケージ apache2 をインストール、アップグレード、またはアンインストールできないようにするには、root 権限を持つターミナルで次のコマンドを使用できます。

apt-mark hold apache2

このパッケージを更新できるようにするには、「保留」を「保留解除」に置き換えます。

apt-mark unhold apache2

APT 設定ファイルを使用したパッケージ更新のブロック

特定のパッケージの更新をブロックするもう 1 つの方法は、そのエントリを /etc/apt/preferences または /etc/apt/preferences.d/official-package-repositories.pref に追加することです。ファイル。このファイルは、ユーザーが指定した優先順位に従って、特定のパッケージの更新を更新またはブロックする責任を負います。

パッケージをブロックするには、その名前、追加機能、およびそのパッケージの優先順位を入力するだけです。ここで、優先度 < 1 はパッケージをブロックします。

パッケージをブロックするには、次のようにファイル /etc/apt/preferences にその詳細を入力するだけです。

Package: <package-name> (Here, '*' means all packages)
Pin: release *
Pin-Priority: <less than 0>

たとえば、パッケージ apache2 の更新をブロックするには、次のようなエントリを追加します。

Package: apache2
Pin: release o=Ubuntu
Pin-Priority: 1

ピン優先度を適用するパッケージをさらに識別するために、release キーワードとともに他のオプションを使用できます。それらのキーワードは次のとおりです。

  1. a -> アーカイブ
  2. c -> コンポーネント
  3. -> 起源
  4. l -> ラベル
  5. n -> アーキテクチャ

のように :

Pin: release o=Debian,a=Experimental

Debian パッケージ実験アーカイブから指定されたパッケージをプルすることを意味します。

APT Autoremove File を使用してパッケージ更新をブラックリストに登録する

インストール時にパッケージをブラックリストに登録するもう 1 つの方法は、/etc/apt/apt.conf.d/ ディレクトリに含まれるファイルの 1 つである 01autoremove 内のエントリを更新することです。

サンプルファイルを以下に示します。

APT
{
  NeverAutoRemove
  {
        "^firmware-linux.*";
        "^linux-firmware$";
  };

  VersionedKernelPackages
  {
        # linux kernels
        "linux-image";
        "linux-headers";
        "linux-image-extra";
        "linux-signed-image";
        # kfreebsd kernels
        "kfreebsd-image";
        "kfreebsd-headers";
        # hurd kernels
        "gnumach-image";
        # (out-of-tree) modules
        ".*-modules";
        ".*-kernel";
        "linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

  Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
  };
};

パッケージをブラックリストに登録するには、Never-MarkAuto-Sections にその名前を入力するだけです。 Never-MarkAuto-Section の最後にパッケージの名前を入力し、ファイルを保存して閉じます。これにより、apt はそのパッケージのさらなる更新を検索できなくなります。

たとえば、パッケージをブラックリストに登録して更新できないようにするには、次のようなエントリを追加します。

Never-MarkAuto-Sections
  {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
        "apache2*";
  };
};

更新用のカスタム パッケージの選択

これのもう 1 つの方法は、更新するものを選択することです。 apt ツールを使用すると、何を更新するかを自由に選択できますが、そのためには、アップグレードに利用できるすべてのパッケージについての知識が必要です。

このような場合には、次の一連のコマンドが役立つことがわかります。

a. 保留中の更新があるパッケージをリストするため。

apt-get -u -V upgrade

b. 選択したパッケージのみをインストールする。

apt-get --only-upgrade install <package-name>

結論

この記事では、APT 方法を使用してパッケージの更新を無効化/ブロックまたはブラックリストに登録するいくつかの方法を説明しました。他の推奨方法をご存知の場合は、コメントでお知らせください。パッケージの更新を無効化/ロックするための yum コマンドをお探しの場合は、以下の記事をお読みください。