【Ubuntu】aptを使ったパッケージの更新方法

Ubuntuにパッケージ管理ツールaptでインストールされたパッケージを更新(アップデート)する方法です。

aptコマンドでのパッケージ更新方法

パッケージ管理ツールのaptを使用してインストールされているパッケージを更新するには、下記のコマンドを使用します。

このコマンドで更新対象となるパッケージは、Ubuntuをインストールした際にインストール済みとなっているパッケージや、apt installでインストールしたパッケージが対象となります。

sudo apt update
sudo apt upgrade

可能ならばサーバの再起動を行って、問題が発生しないかの確認も行っておいた方が良いでしょう。

sudo reboot

apt update

apt updateコマンドを実行すると、リポジトリのパッケージリストの更新を行います。

このコマンドを実行しても、インストールされているパッケージの更新は行われません。

実際に「apt update」を行った際のログになります。

$ sudo apt update
Hit:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Hit:3 http://nginx.org/packages/mainline/ubuntu jammy InRelease             
Get:4 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
Get:5 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:6 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [868 kB]
Get:7 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [212 kB]
Get:8 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 c-n-f Metadata [15.6 kB]
Get:9 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [964 kB]
Get:10 http://jp.archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [41.6 kB]
Fetched 2,439 kB in 3s (956 kB/s)                            
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done 
17 packages can be upgraded. Run 'apt list --upgradable' to see them.

最後に「17 packages can be upgraded. Run 'apt list --upgradable' to see them.」とメッセージが表示されていますが、これは17個のパッケージが更新可能であることを示しています。

また、メッセージにあるとおり「sudo apt list --upgradable」コマンドを実行すると、更新対象となるパッケージの確認もできます。

apt upgrade

apt upgradeコマンドはインストールされているパッケージの更新を行います。

このコマンドを実行する前に必ず「apt update」で、リポジトリのパッケージリストを更新しておいてください。

実際に「apt upgrade」を行った際のログになります。

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  ssl-cert
Use 'sudo apt autoremove' to remove it.
#
# You can verify the status of security fixes using the `pro fix` command.
# E.g., a recent Ruby vulnerability can be checked with: `pro fix USN-6219-1`
# For more detail see: https://ubuntu.com/security/notices/USN-6219-1
#
The following packages will be upgraded:
  base-files distro-info libgpgme11 libldap-2.5-0 libldap-common librados2 librbd1 libunwind8
  linux-firmware motd-news-config python-apt-common python3-apt python3-distro-info
  python3-distupgrade thermald ubuntu-release-upgrader-core ufw
17 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 262 MB of archives.
After this operation, 47.0 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 motd-news-config all 12ubuntu4.4 [4,472 B]
Get:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 base-files amd64 12ubuntu4.4 [62.6 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 distro-info amd64 1.1ubuntu0.1 [19.0 kB]

###  中略  ###

Processing triggers for dbus (1.12.20-2ubuntu4.1) ...
Processing triggers for install-info (6.8-4build1) ...
Processing triggers for initramfs-tools (0.140ubuntu13.2) ...
update-initramfs: Generating /boot/initrd.img-5.15.0-78-generic
Scanning processes...                                                                                                                                       
Scanning candidates...                                                                                                                                      
Scanning linux images...                                                                                                                                    

Running kernel seems to be up-to-date.

Restarting services...
 systemctl restart packagekit.service udisks2.service
Service restarts being deferred:
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

途中で表示されるメッセージについて

apt upgradeでパッケージの更新を行うと、途中でパッケージ更新の処理に関するメッセージや質問が表示されることがありますので、内容について説明をしていきます。

下記で説明しているメッセージ以外が表示され、内容がよくわからない場合はgoogle等でメッセージの内容を検索してみてください。

Do you want to continue? [Y/n]

「-y」オプションを指定していない場合は、更新処理を続けるかどうか「Do you want to continue? [Y/n]」という質問が表示されます。

更新処理を続ける場合は「y」を入力後に「Enter」キーを押下するか、初期状態でyが選択されているので、そのまま「Enter」キーを押下してください。

処理を中断したい場合は「n」」を入力後に「Enter」キーを押下してください。

Daemon using outdated libraries

この質問は、どのサービスを再起動するかの質問になります。

通常は再起動が必要なサービスは選択済みになっていると思いますので、「Tab」キーでokを選択して「Enter」キーでサービスの再起動を行ってください。

個別にサービスの再起動について設定したい場合は、対象となるサービスを選択して設定を行って下さい。

cloud.cfg (Y/I/N/O/D/Z) [default=N] ?

サーバーを自動的に設定するツールである、cloud-initの設定ファイルcloud.cfgを変更するかどうかの質問です。

cloud-initを自分で設定して使用していないのであれば、「N」キーを入力後に「Enter」キーを押下するか、初期値がNなのでそのまま「Enter」キーを押下してください。

そうすることで、現在の設定は変更されずそのまま残ります。

Configuration file '/etc/cloud/cloud.cfg'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** cloud.cfg (Y/I/N/O/D/Z) [default=N] ? 

Pending kernel upgrade

新しいバージョンのカーネルが利用可能になっている場合に表示されます。

メッセージの内容は、「新しいカーネルをロードするためのシステム再起動は自動的に処理されないため、再起動を検討する必要があります。」という内容なので、メッセージを確認したら「Enter」キーを押下してください。

パッケージの更新が終わったら、メッセージにある通りサーバを再起動することで新しいカーネルが読み込まれます。

使われなくなった依存関係パッケージについて

依存関係でインストールされたパッケージで、すでに必要ではなくなったパッケージがある場合、下記のようなメッセージが表示されます。

今回はssl-certが不要となっていて、「sudo apt autoremove」コマンドを実行すると、対象のパッケージを削除することができると表示されています。

The following package was automatically installed and is no longer required:
  ssl-cert
Use 'sudo apt autoremove' to remove it.

apt autoremoveの注意点

メッセージの通り「sudo apt autoremove」コマンドを実行すると、不要となっているパッケージを削除することが出来ますが、autoremoveは完璧ではなくまだ他のパッケージから必要とされている場合もこのメッセージが表示される場合があるようです。

sudo apt autoremoveを実行した後は、必ず他のサービスに問題が発生していないか確認しましょう。

不具合が発生した場合は「sudo apt install パッケージ」で削除してしまったパッケージをインストールし直してください。

コメント

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