Ubuntu・Debianでパッケージのバージョンアップを「保留」する方法【apt-mark】

Linuxテクニック

UbuntuやDebianで、「あるパッケージのバージョンアップを保留する」方法を紹介します。保留(固定)を設定することにより、より新しいバージョンがリリースされてもインストールされなくなります。

パッケージのバージョンアップを保留する

パッケージのバージョンアップを保留するには、以下のコマンドを実行します。複数のパッケージ名を指定することもできます。

sudo apt-mark hold <パッケージ名> [...]

たとえば、「apache2」パッケージをアップグレードしたくない場合、以下のコマンドを実行します。

$ sudo apt-mark hold apache2
apache2 は保留に設定されました。

以下は、複数のパッケージを一度に指定する例です。

$ sudo apt-mark hold openssl openssh-server 
openssl は保留に設定されました。
openssh-server は保留に設定されました。

以下のように、「*」などのワイルドカードを使ってパッケージを指定することもできます。

$ sudo apt-mark hold 'mysql-server*'
mysql-server は保留に設定されました。
mysql-server-5.7 は保留に設定されました。
mysql-server-core-5.7 は保留に設定されました。

保留に設定されたパッケージ名を出力する

以下のコマンドで、保留に設定されたパッケージ名を出力できます。

apt-mark showhold [<パッケージ名> ...]

パッケージ名を指定せずに実行すれば、次のように保留に設定されたパッケージをすべて出力します。

$ apt-mark showhold
apache2
mysql-server
mysql-server-5.7
mysql-server-core-5.7
openssh-server
openssl

パッケージ名を指定して実行すると、一致したパッケージのみが出力されます。以下のように、ワイルドカードによるパターンマッチもできます。

$ apt-mark showhold '*server*[0-9]'
mysql-server-5.7
mysql-server-core-5.7

なお、「dpkg -l」の出力には、保留に設定されたパッケージの頭に「i」ではなく「h」が出力されます。以下は、頭に「h」が出力された行をgrepで抽出する例です。

$ dpkg -l | grep ^h
hi  apache2                                    2.4.29-1ubuntu4.3                   amd64        Apache HTTP Server
hi  mysql-server                               5.7.23-0ubuntu0.18.04.1             all          MySQL database server (metapackage depending on the latest version)
hi  mysql-server-5.7                           5.7.23-0ubuntu0.18.04.1             amd64        MySQL database server binaries and system database setup
hi  mysql-server-core-5.7                      5.7.23-0ubuntu0.18.04.1             amd64        MySQL database server binaries
hi  openssh-server                             1:7.6p1-4                           amd64        secure shell (SSH) server, for secure access from remote machines
hi  openssl                                    1.1.0g-2ubuntu4.1                   amd64        Secure Sockets Layer toolkit - cryptographic utility

パッケージの保留を解除する

パッケージの保留を解除するには、以下のコマンドを実行します。

sudo apt-mark unhold <パッケージ名> [...]

たとえば、「apache2」パッケージを保留を解除したい場合、以下のコマンドを実行します。

$ sudo apt-mark unhold apache2
apache2 の保留を解除しました。

以下は、複数のパッケージを同時に解除する例です。

$ sudo apt-mark unhold openssl openssh-server
openssl の保留を解除しました。
openssh-server の保留を解除しました。

以下のように、「*」などのワイルドカードを使ってパッケージを指定することもできます。

$ sudo apt-mark unhold 'mysql-server*'
mysql-server の保留を解除しました。
mysql-server-5.7 の保留を解除しました。
mysql-server-core-5.7 の保留を解除しました。

関連記事


Red Hat・CentOSで特定のパッケージを「アップデート対象外」にする方法
Red Hat Enterprise Linux(RHEL)やCentOSで、「特定パッケージをアップデート対象外にする」方法を、例をあげて分かりやすく解説します。 yumコマンドのオプションに指定する方法 yumコマンドを実行する時、...

Fedoraで特定のパッケージを「アップデート対象外」にする方法
Fedoraで、「特定パッケージをアップデート対象外にする」方法を、例をあげて分かりやすく解説します。 dnfコマンドのオプションに指定する方法 dnfコマンドを実行する時、以下のように「--exclude パッケージ名」を指定して実行...

コメント

タイトルとURLをコピーしました