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 の保留を解除しました。
関連記事
コメント