CLOVER🍀

That was when it all began.

Ubuntu Linuxでapt upgradeで保留されたパッケージがあった場合に、アップデートするには?

これは、なにをしたくて書いたもの?

Ubuntu Linux 18.04 LTSにインストールしているDocker CEがapt upgradeでアップデートされないという状態になっていたので、
これをどうやってアップデートしたらよいのだろう?と。

結論から言うと、明示的にapt installすればよいみたいです。

$ sudo apt install [対象のパッケージ]

環境

今回の環境は、こちら。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:    18.04
Codename:   bionic


$ uname -srvmpio
Linux 4.18.0-25-generic #26~18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu Linux 18.04 LTSです。

apt upgrade時に起こったこと

apt upgrade時に、こんな感じにパッケージのアップデートが保留されました。

以下のパッケージは保留されます:
  docker-ce

他のパッケージはアップデートされるのに、保留になったパッケージはそのままです。

アップグレード: 9 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。

調べてみるとapt-get dist-upgradeしたらいいとか出てくるのですが、それはやりすぎだろうと。

apt upgrade時に、以下のようなメッセージが出てくるのですが

アップグレードできるパッケージが 1 個あります。表示するには 'apt list --upgradable' を実行してください。

見たところでどうにもなりません。

$ sudo apt list --upgradable
一覧表示... 完了
docker-ce/bionic 5:20.10.2~3-0~ubuntu-bionic amd64 [5:19.03.14~3-0~ubuntu-bionic からアップグレード可]

結局、保留されますからね…。

で、もうちょっと調べたら結局apt installで明示的に指定すればいいみたいです。

$ sudo apt install docker-ce
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  docker-ce-rootless-extras
推奨パッケージ:
  slirp4netns
以下のパッケージが新たにインストールされます:
  docker-ce-rootless-extras
以下のパッケージはアップグレードされます:
  docker-ce
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
33.7 MB のアーカイブを取得する必要があります。
この操作後に追加で 36.3 MB のディスク容量が消費されます。
続行しますか? [Y/n] y

このアップデートでは、パッケージ(今回はdocker-ce)の依存関係として別のパッケージが追加された…要するに、
依存関係に変更があったのでapt upgradeは入らなかった、ということみたいです。

パッケージアップデート時に保留された時の対処は、依存関係の確認をしてくれってことになるわけですね。