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 パッケージ」で削除してしまったパッケージをインストールし直してください。
コメント