2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspbian Stretch から Buster へアップグレード時に遭遇したエラー

Posted at

アップグレードのきっかけ

Raspberry Pi 3 Model B+ を何年か前に購入して以来、小規模な WEB サーバとして運用しているのだが、先日 Node.js 18 をインストールしようとしたところ GLIBC のバージョンが古くてコケた。
(以下のブログと同じ状況だった。)
nodeのv18を使ったらエラーになった(CentOS7)

そこで apt upgrade を試してみようと思ったのだが、こっちもエラーになった。

E: リポジトリ http://raspbian.raspberrypi.org/raspbian stretch Release には Release ファイルがなくなっています。

Debian 9 (stretch) は 2022-07-01 に LTS も EOL を迎えていて、 Raspbian も stretch のレポジトリをいつの間にか他所に移していたらしい。

legacy materials moving from archive.raspbian.org to legacy.raspbian.org を読むに、 legacy.raspbian.org を参照すれば引き続き apt は使えるようなのだが、いつまでも古い OS を使い続けられないので、 Debian 10 (buster) にアップグレードすることにした。

アップグレード

一応実機の型番を確認。

$ cat /proc/device-tree/model
Raspberry Pi 3 Model B Plus Rev 1.3

OS アップグレードはこのあたりを参考にした。

/etc/apt/sources.list/etc/apt/sources.list.d/* を手動で変更して

sudo apt update
sudo apt upgrade

する感じ。
時間がかなりかかりながらも、順調に進んでいるかに見えたのだが、、、

エラー発生

python3-sense-hat (2.4.0-1~bpo10+1) を設定しています ...
  File "/usr/lib/python3/dist-packages/sense_hat/colour.py", line 185
    explanation = f" (different device id detected: {id})"
                                                         ^
SyntaxError: invalid syntax

dpkg: パッケージ python3-sense-hat の処理中にエラーが発生しました (--configure):
 installed python3-sense-hat package post-installation script subprocess returned error exit status 1
処理中にエラーが発生しました:
 python3-sense-hat
E: Sub-process /usr/bin/dpkg returned an error code (1)

invalid syntax と来た。 Python はある程度わかるのだが、ここに文法のエラーがあるとは全く思えなかった。そもそも文法エラーがあるようなライブラリを提供するわけないし。。。

GitHub のソースを見ると、 v2.4.0 ではたしかにそのようなコードになっているが、 v2.6.0 ではだいぶ変わっている。
しばらくいろいろ調べたのだが、深夜だったこともあり、頭が回っていなかったので諦めた。
そして翌日、目覚めた瞬間に思いつく。
「システムの Python が f-strings に対応していないバージョンなのでは?」

案の定、 f-strings は 3.6 で導入されたが、システムの Python は 3.5 だった。
apt のアップグレード対象には Python が入っていなかったので、エラーになっている箇所にパッチを当ててみることにした。

colour_patched.py
--- colour.py	2023-11-09 09:27:16.529087729 +0900
+++ colour_patched.py	2023-11-09 09:32:32.205314267 +0900
@@ -182,7 +182,7 @@ class I2C(HardwareInterface):
             explanation = "(sensor not present)"
             raise ColourSensorInitialisationError(explanation=explanation) from e
         if id != 0x44:
-            explanation = f" (different device id detected: {id})"
+            explanation = " (different device id detected: {0})".format(id)
             raise ColourSensorInitialisationError(explanation=explanation) from e
     @staticmethod
     def i2c_enabled():

sudo patch -p0 < colour.patch の要領でパッチを適用して、再度 sudo apt upgrade を実行し、無事終了した。

余談

その後、 sudo apt full-upgrade を実施したところ、 Python 3.7 がインストールされた。
なので upgrade を飛ばして、いきなり full-upgrade を実施すれば回避できた問題だった模様。。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?