2023年6月26日月曜日

Debianをアップグレードしたらaptが動かなくなった件

放ったらかしにしていた実験用のVPSがdebianのstrechから更新されておらずメンテ期間が切れてaptの更新が出来なくなったので最新にアップグレードをする事にしたのですがトラブったのでそのメモを。


現在の最新はbullseyeなのですが一気に上げると多分何か起きるだろうなと思い一つずつ上げていくことに。余談ですが調査の段階で本家のページを見たのですが日本語ページが全然メンテされていないようですね・・・。debian好きなんだけど日本ではもうubuntuとかしか触る人が居なくなっちゃったのかな。


とりあえず更新方法は深くは書きませんが、まずは/etc/apt/sources.listの中身をstrech(9)からbuster(10)の物に更新をしてapt update & apt upgrade & apt autoremoveをし、その後buster(10)からbullseye(11)にします。本当はもう少し色々やったほうが安全なんでしょうが今回はこれでやりました。


で、結果として更新、起動は問題なく出来ましたがbullseye環境でapt upgradeをすると下記のようなエラーが表示されるようになりました。


Setting up python3-reportbug (7.10.3+deb11u1) ...

  File "/usr/lib/python3/dist-packages/reportbug/bugreport.py", line 154

    headers += f'Control: tags -1 {self.tags}\n'

                                               ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/debbugs.py", line 789

    pseudos.append(f'Control: affects -1 src:{package}')

                                                      ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/submit.py", line 395

    if ui.yes_no(f'SMTP send failure: {x}. You can retry, or save the report and exit. Do you want to retry?',

                                                                                                            ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/utils.py", line 567

    print(f"Cannot look up source package: '{e}'")

                                                ^

SyntaxError: invalid syntax


ぐぐってみるとstrechからbullseyeに直接上げてこのエラーが起きているけど結論として何も解決策も書かれていない状況でした。という事で自力で解決する必要があります。


まずヒントとしてsyntax errorが出ていること。真っ先に疑ったのは実はpythonが未だに2系のままとかなのかなという点。バージョンを確認してみます。


$ python --version

Python 2.7.13

$ python3 --version

Python 3.5.3


無印のpythonが2.7なのが問題なのかと思いましたがよく見るとpython3を参照しています。で、ポイントがpython3のバージョン。syntax errorが出ているのはどれもf文字列を使用しています。確認してみるとf文字列は3.6以降の実装でサポートとあるのでほぼこれが原因でしょう。ということでpythonを更新する事にしますがaptが動かない状態でどう更新を行うべきか。そこが問題になります。

とりあえずapt-getでトライ

$ sudo apt-get install python3

普通に成功して拍子抜け。下記の選択肢は一番上の現状のものを差し替える選択にします。怖い人はデフォルトの現状のものをキープにして後からaliasを差し替えても良いと思います。そしてバージョンを確認します。

$ python3 --version
Python 3.9.2

いい感じです。apt update & apt upgrade & apt dist-upgradeをトライ。いい感じに更新されてくれました。

とりあえずこの状態で使ってみることにします。