第14回 Raspberry Pi OSアップデート

今回の記事では、Raspberry Pi OSのアップデート方法について説明します。

目次

Raspberry Pi OSのアップデート

WindowsやmacOSを使っていると、たまにOSのアップデートがありますよね。

Raspberry Pi OSも同じようにOSやアプリのアップデートがあります。

そこで今回の記事では、OSやアプリのアップデートの仕組みと、その手順について説明します。

Raspberry Pi OSのOSやアプリのアップデートは、基本的にターミナルアプリ(シェル)でコマンドを入力して行います。

デスクトップ環境の場合、マウス操作だけでアップデート作業ができます。ただ、コマンド操作の方ができることが多いため、ぜひターミナルを利用したアップデート方法を習得してください。
マウス操作によるアップデート方法は参考としてこの記事の最後に説明します。

それでは、Raspberry Pi OSのアップデートの仕組みを説明したあと、具体的手順を説明します。

アップデートの仕組み

Raspberry Pi OSには、OSを構成する多くのソフトウェアモジュールや、多くのアプリケーションがインストールされています。

これらのモジュールやアプリケーションは、それぞれが1つのファイルから構成されているわけではありません。例えば1つのアプリケーションは、実行ファイル以外にも設定ファイルや画像ファイルなど、多くのさまざまなファイルから構成されているのが普通です。

そこでRaspberry Pi OS(LinuxOS)では、関連するファイルをまとめて「パッケージ」という単位で管理しています。つまり、1つのアプリケーションは1つのパッケージという単位で管理しています。

パッケージ

このパッケージは常にメンテナンスされていて、いくつかのサーバで公開されています。

「いくつかのサーバで公開されている」と聞くと、アップデート作業はかなり面倒そうですよね。

例えば、アップデートが必要なアプリがあったら、どこのサーバで公開されているか調べて、サーバにアクセスして、インストーラをダウンロードして、そのインストーラでアプリをアップデートする、というような気が遠くなる作業が必要そうな気がします。

でもパッケージの数は膨大ですし、このような作業が必要になるようなアップデートは現実的ではありません。

そこで、Raspberry Pi OSでは面倒なアップデート作業をコマンド一つで実現できる「パッケージ管理システム」が提供されています。私たちはどのパッケージがどのサーバにあるか、など細かい情報は気にする必要はありません。

パッケージ管理のコマンドの意味を理解するために、パッケージ管理システムの全体像を説明します。

パッケージ管理システム

パッケージは上の図のようにいくつかのパッケージ管理サーバで管理されています。それぞれのパッケージ管理サーバでは、右側のサーバに説明しているように「パッケージに関する情報」と「パッケージ本体」を管理しています。このパッケージに関する情報は「パッケージリスト」と呼ばれています。

パッケージ管理サーバでは、パッケージがアップデートされると、新しいバージョンのパッケージが登録され、同時にパッケージリストも更新されます。

一方、Raspberry Pi OSは、パッケージ管理サーバがどこにあるのかを知っています(具体的には、パッケージ管理サーバのURLをシステムに保存してあります)。

上の図にあるように、Raspberry Pi OSは、インストールされているパッケージに関する情報をシステムに保存しています。このパッケージに関する情報を「パッケージインデックス」と呼んでいます。

このように構成されているパッケージ管理システムで、実際のアップデート作業は以下の2ステップで行われます。

ステップ1)パッケージインデックス更新

パッケージ管理1

最初に、Raspberry Pi OSのパッケージインデックスを更新します。

具体的には、Raspberry Pi OSはそれぞれのパッケージ管理サーバにアクセスして、パッケージリストを取得し、パッケージインデックスを更新します。

ステップ2)パッケージアップデート

パッケージ管理2

Raspberry Pi OSはパッケージインデックスから、アップデートすべきパッケージを特定し、パッケージ管理サーバからダウンロード、インストールを行います。

管理者権限でのコマンド実行

パッケージ管理のコマンドは、Raspberry Pi OSのシステム変更を伴うため管理者権限で実行する必要があります。ただ、現在ログインしているアカウントは一般ユーザ権限ですので、パッケージ管理コマンド入力しても実行できません。

そこで、一般ユーザ権限のアカウントでログインした状態で、コマンドを管理者権限で実行する方法を説明します。

コマンドを一時的に管理者権限で実行する場合、以下のようにコマンドの前に「sudo」を入力して実行します。

ユーザ名@raspberrypi:~ $ sudo コマンド

「sudo」は「Super User DO」の略で、日本語では「管理者権限での実行」というような意味です。

パッケージ管理コマンド

パッケージ管理を行うには「apt」というコマンドを使用します。「apt」は「Advanced Packaging Tool」の略で、日本語では「進化版パッケージ管理ツール」というような意味でしょうか。

この「apt」コマンドは、「apt」に続いて処理する内容を書いて使用します。つまり、aptコマンドは以下のように使用することになります。

ユーザ名@raspberrypi:~ $ sudo apt 処理内容

それでは「apt」コマンドを利用した、パッケージインデックスの更新と、パッケージアップデートの方法を説明します。実際の手順は次の手順で説明しますので、ここではコマンドがどのようなものか確認してください。

パッケージインデックス更新

パッケージインデックスを更新する場合、処理内容に「update」と書きます。つまり、以下のようにコマンドを入力すると、パッケージインデックスの更新ができます。

ユーザ名@raspberrypi:~ $ sudo apt update

パッケージアップデート

更新のあるパッケージをアップデートするには、処理内容に「full-upgrade」と書きます。つまり、以下のようにコマンドを入力すると、パッケージのアップデートができます。

ユーザ名@raspberrypi:~ $ sudo apt full-upgrade

それでは実際に作業してみましょう!

アップデート手順

最初にターミナルを起動します。デスクトップ環境の場合は「LXTerminal」を起動します。リモート接続の場合は、Windowsは「コマンドプロンプト」、macOSは「ターミナル」を起動してラズベリーパイにリモート接続します。

ステップ1)パッケージリスト更新

最初にパッケージリストを更新しますので、以下のようにコマンドを入力します。

ユーザ名@raspberrypi:~ $ sudo apt update

しばらく待っていると、処理内容が表示されてコマンドプロンプトに戻ります。

ユーザ名@raspberrypi:~ $ sudo apt update
ヒット:1 http://security.debian.org/debian-security bullseye-security InRelease
ヒット:2 http://deb.debian.org/debian bullseye InRelease              
ヒット:3 http://deb.debian.org/debian bullseye-updates InRelease      
ヒット:4 http://archive.raspberrypi.org/debian bullseye InRelease     
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了        
アップグレードできるパッケージが 6 個あります。表示するには 'apt list --upgradable' を実行してください。

「ヒット」と書かれている行には、確認したパッケージ管理サーバの情報が表示されています。

その次の行からは作業内容が表示されいます。最初に、サーバからパッケージリストを取得して、次にアップデートするパッケージを調べます。最後に、アップデートできるパッケージの数が表示されます。このケースでは、6個のパッケージがアップデート対象となっていることがわかります。

最後の行に書かれていますが、アップデート対象となるパッケージを確認するには、以下のように入力します。「apt list」の後は「--」となっています。「-」(ハイフン)が2つであることに注意してください。なお、このコマンド実行はシステムの変更を伴わないため、sudoで実行する必要はありません。

ユーザ名@raspberrypi:~ $ apt list --upgradable

ステップ2)パッケージアップデート

次に、以下のコマンドを入力してパッケージをアップデートします。

ユーザ名@raspberrypi:~ $ sudo apt full-upgrade

しばらく待っていると、アップデート内容確認のために途中で止まります。

ユーザ名@raspberrypi:~ $ sudo apt full-upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
アップグレードパッケージを検出しています... 完了
以下のパッケージはアップグレードされます:
  libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 pi-bluetooth userconf-pi
アップグレード: 6 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
290 kB のアーカイブを取得する必要があります。
この操作後に追加で 8,192 B のディスク容量が消費されます。
続行しますか? [Y/n] 

実際にアップデートされるパッケージ名やその内容、ディスク容量をどの程度使うかなどの情報が表示され、この内容でアップデートしても良いか確認があります。

アップデート作業を続ける場合は、このままリターンキーを入力します。その後、アップデートの処理内容が表示され、処理が終わるとコマンドプロンプトに戻ります。

上のように処理の途中での「続行しますか?[Y/n]」のような問い合わせの表記方法にはルールがあります。(LinuxOSの共通ルールです)
一般的に「y」はyesの意味、「n」はnoの意味になります。
また、上のように「 [Y/n] 」などのように片方の文字が大文字の場合、大文字の選択肢がデフォルトになります。何も入力せずにリターンキーを押した場合は大文字の選択肢を入力したことになり、この「 [Y/n] 」という表示の場合はリターンキーのみを押すと、「Y」(yes)を入力したことになります。「 [y/n] 」と書かれている場合は、必ず「y」か「n」を入力する必要があります。
なお、「 [yes/no] 」と表記されている場合は、選択肢の文字をその通りに入力する必要があります。この場合は「yes」か「no」と入力することになります。「 [yes/no] 」という表記に対して「y」や「n」と入力するとエラーになるので注意してください。

aptコマンドのアップデート処理には「apt full-upgrade」と「apt upgrade」の2種類があります。
「upgrade」は更新のあるパッケージをアップデートする処理を行いますが、「full-upgrade」はパッケージ間の依存関係を調べ、必要に応じてパッケージの削除を行いシステムの整合性が取られます。
ラズベリーパイの公式ページでは「full-upgrade」を推奨しているため、この入門シリーズでも「full-upgrade」を使用しています。

aptコマンドまとめ

aptコマンドの処理は他にもいろいろありますので、簡単にまとめておきます。

処理 意味 使い方の例
update パッケージインデックスを更新する sudo apt update
upgrade インストールされているパッケージを更新する。 sudo apt upgrade
full-upgrade インストールされているパッケージを更新する。「upgrade」の処理に追加して、パッケージ間の依存関係を調べてパッケージの削除も行う。 sudo apt full-upgrade
search キーワード パッケージ管理システムで管理されているパッケージから「キーワード」を含むパッケージを検索する apt search python3
「python3」というキーワードを含むパッケージを検索する
※システムの変更は伴わないので「sudo」をつける必要はありません
install パッケージ名 「パッケージ名」のパッケージをインストールする sudo apt install python3
「python3」というパッケージをインストールする
remove パッケージ名 「パッケージ名」のパッケージを削除する sudo apt remove python3
「python3」というパッケージを削除する

デスクトップ環境でのアップデート

デスクトップ環境では、アップデートがある場合、アップデートの案内が表示されます。アップデート手順は以下のようになります。

パッケージの更新があると、以下のように画面右上の方にアップデートアイコンが表示されます。

アップデートアイコン

アップデートする場合は、以下のようにアップデートアイコンのメニューから「Install Updates」を選択します。このあと、パッケージがダウンロード、インストールされます。

Install Updates

なお、アップデートアイコンのメニューから「Show Updates…」をクリックすると、以下のようにアップデートされるパッケージが表示されます。このダイアログの右下の「Install」ボタンをクリックするとパッケージがアップデートされます。

アップデート確認ダイアログ

補足 : メジャーバージョンアップ

今回の記事で説明したaptコマンドによるアップデート手順ではメジャーアップデートはできません。

「メジャーバージョンアップ」とは、例えば以下のようなケースです。

2022年時点のRaspberry Pi OSは「Debian Bullseye(Version11)」をベースにしています。(「Debian Bullseye」を忘れてしまったら、第12回の記事を確認してみてください)

2023年秋頃には、「Debian Bullseye」の次バージョンのリリースが予定されています。開発コード名は「Debian Bookworm」と呼ばれ、Version 12になります。

メジャーバージョンアップとは、このように「Bullseye(Version11)」から「Bookworm(Version12)」などのように開発コード名やバージョン番号が変わる大きなアップデートのことを意味しています。

これまで説明してきたapt updateapt full-upgradeでは、メジャーバージョンアップはできません。

ラズベリーパイの公式ページを確認したところ、手動でメジャーアップデートする方法が説明されていました。ただ、その説明の前置きとして、この方法は動作保証できないので、基本的には新しいバージョンを新規インストールして、古いバージョンから必要なファイルを移行することを推奨しています。

メジャーバージョンアップはかなりリスクがあるようです。この入門シリーズでは取り上げておりませんのでご了承ください。

更新履歴

日付 内容
2022.4.24 新規投稿
通知の設定
通知タイミング
guest
0 コメント
本文中にフィードバック
全てのコメントを見る
目次