みなさん、こんにちは。
IoTデバイスの普及に伴い、様々な場所でラズベリーパイ(Raspberry Pi)が活躍しています。工場や店舗、あるいはご家庭で、一度セットアップしたら電源を入れっぱなしで、もう何年も安定稼働しているラズベリーパイもあるのではないでしょうか。しかし、長年運用していると、ふと気づくことがあります。それは、OSがかなり古いバージョンになっている、ということです。
例えば、2017年6月にリリースされたRaspbian Stretch。2025年現在、もしIoT端末でこのOSが動いていたとしても、決して珍しいことではありません。一度本稼働に入ってしまえば、安定性を最優先するため、OSのアップグレードは滅多に行われないのが一般的だからです。しかし、ここに大きな壁が立ちはだかります。
サポート終了OSの現実 – パッケージ管理システムの壁
ご存知の方もいらっしゃるかもしれませんが、Raspbian Stretchは既にサポートが終了しています。これにより、何が問題になるかというと、デフォルトの状態ではもうパッケージのインストールも、既存パッケージのアップデートもできなくなってしまうのです。なぜなら、公式のリポジトリが稼働していないため、パッケージ管理システムであるapt
が、必要なファイルを見つけられなくなってしまうからです。
「え、じゃあもうパッケージ管理システムは使えないの?」「新しいソフトウェアをインストールできないのは困る!」と、不安に感じた方もいらっしゃるかもしれません。
しかし、ご安心ください。まだ諦めるのは早いです。
まだまだ使える!リポジトリの変更で延命措置
実は、ちょっとした設定変更を行うことで、古いRaspbian Stretchでも再びパッケージのインストールやアップデートができるようになるのです。その鍵となるのは、リポジトリの変更です。
リポジトリとは、ソフトウェアパッケージが置かれている場所のことです。Raspbian Stretchの公式リポジトリは閉鎖されてしまいましたが、過去のアーカイブやレガシーなリポジトリを利用することで、必要なパッケージを取得できるようになります。
具体的な方法は以下の通りです。コマンドラインでの作業になりますが、落ち着いて進めれば大丈夫です。
ステップ1 – 既存リポジトリのコメントアウト
まず、現在設定されているリポジトリを無効化します。これは、新しいリポジトリと競合しないようにするためです。
/etc/apt/sources.list
ファイルを開き、以下の行の先頭に#
を付けてコメントアウトします。sudo vi /etc/apt/sources.list
などで編集できます。
#deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
ステップ2 – 新しいリポジトリの追加
次に、新しいリポジトリを追加するためのファイルを作成します。/etc/apt/sources.list.d/
ディレクトリ内に新しいファイルを作成し、そこにリポジトリの情報を記述します。
以下のコマンドを実行して、raspi.list
という名前のファイルを作成し、編集します。
sudo vi /etc/apt/sources.list.d/raspi.list
ファイルが開いたら、以下の2行を追記してください。
deb http://archive.raspberrypi.org/debian/ stretch main ui
deb http://legacy.raspbian.org/raspbian/ stretch main contrib non-free rpi
ここでポイントとなるのは、raspbian.raspberrypi.org
のリポジトリを、archive.raspberrypi.org
とlegacy.raspbian.org
のリポジトリに変更する点です。これにより、過去のアーカイブや古いバージョンのパッケージが利用可能になります。
なお、2025年6月現在、legacyリポジトリではRaspbian Wheezy、Jessie、Stretchのリポジトリが稼動しています。
署名エラーの回避 – APTの署名チェックを無効化
上記のリポジトリ変更だけでも多くのパッケージが利用できるようになりますが、このままだと「署名エラー」が発生することがあります。これは、パッケージの署名が検証できないために発生するエラーです。セキュリティ上は推奨される機能ですが、サポートが終了したOSで古いリポジトリを利用する際には、このチェックを無効化せざるを得ない場合があります。
以下のコマンドを実行して、新しい設定ファイルを作成し、編集します。
sudo vi /etc/apt/apt.conf.d/99ignore-valid-until.conf
ファイルが開いたら、以下の2行を追記してください。
Acquire::Check-Valid-Until "false";
APT::Get::AllowUnauthenticated "true";
この設定により、apt
がパッケージの有効期限チェックを行わなくなり、認証されていないパッケージのインストールも許可されるようになります。あくまで一時的な対処法であり、セキュリティ上のリスクを伴う可能性があることはご理解ください。
いざ、パッケージのインストール!
ここまでの設定が完了すれば、いよいよパッケージのインストールが可能になります。
まず、リポジトリの情報を更新します。
sudo apt-get update
このコマンドを実行すると、設定した新しいリポジトリからパッケージリストがダウンロードされ、利用可能なパッケージの情報が更新されます。
次に、目的のパッケージをインストールします。通常は以下のコマンドでインストールできます。
sudo apt-get install パッケージ名
もし、それでも署名エラーが発生する場合は、一時的に認証をスキップしてインストールを試みることができます。
sudo apt-get install --allow-unauthenticated パッケージ名
最終手段と長期的な展望 – OSアップグレードの検討
ここまでの手順で、多くの場合はパッケージのインストールやアップデートができるようになるはずです。しかし、もしここまでやっても依存関係が解決できない場合は、残念ながら手動で解決するしかありません。しかし、すべての依存関係を調べて個別にパッケージをダウンロードしてインストールするのは、現実的な方法とは言えません。
もしこの状態に至ってしまった場合は、OSのアップグレードを真剣に検討する時期が来ていると言えるでしょう。
今回の方法は、あくまで古いRaspbian Stretchを急場しのぎで延命させるためのものです。長期的な視点で見れば、OSのアップグレードは避けられない課題となります。新しいOSにすることで、セキュリティの向上、新しい機能の利用、そしてより安定した運用が期待できます。
しかし、実際のところ、本稼働中のIoT端末のOSアップグレードは、簡単なことではありません。稼働停止期間が発生したり、アプリケーションの互換性問題が発生したりと、様々なリスクが伴います。そのため、「動いているものを下手に触りたくない」という気持ちも非常によく理解できます。
今回の記事が、そのような状況に直面している皆さんの参考になれば幸いです。古いOSを使い続けなければならない状況でも、少しでも快適に運用できるよう、ぜひこの方法を試してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よいラズベリーパイライフを!