今回の記事では、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)パッケージインデックス更新
最初に、Raspberry Pi OSのパッケージインデックスを更新します。
具体的には、Raspberry Pi OSはそれぞれのパッケージ管理サーバにアクセスして、パッケージリストを取得し、パッケージインデックスを更新します。
ステップ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」を選択します。このあと、パッケージがダウンロード、インストールされます。
なお、アップデートアイコンのメニューから「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 update
とapt full-upgrade
では、メジャーバージョンアップはできません。
ラズベリーパイの公式ページを確認したところ、手動でメジャーアップデートする方法が説明されていました。ただ、その説明の前置きとして、この方法は動作保証できないので、基本的には新しいバージョンを新規インストールして、古いバージョンから必要なファイルを移行することを推奨しています。
メジャーバージョンアップはかなりリスクがあるようです。この入門シリーズでは取り上げておりませんのでご了承ください。
更新履歴
日付 | 内容 |
---|---|
2022.4.24 | 新規投稿 |