🌐

CLI内のpythonのバージョン設定とそれに付随する不具合

2022/12/23に公開

python3→python3.10に移行するにあたって、gnomeのターミナルのデフォルト設定が、固定またはオートになっていることが原因で、pythonのバージョンが(適切に)更新できず、すべてのアプリケーション更新できなくなり続ける『負の連鎖』でpythonが更新できないと、ufwやらvpnやらセキュリティ関連まで更新できず青ざめることになりました(笑)

dpkg: error processing package swift (--configure):
 dependency problems - leaving unconfigured
No apport report written because MaxReports is reached already
                                                              No apport report wr
itten because MaxReports is reached already
                                           Errors were encountered while processi
ng:
 python3-requests-toolbelt
 python3-pbr
 python3-openssl
 python3-pyinotify
 python3-oslo.serialization
 python3-memcache
 python3-debtcollector
 python3-oslo.config
 python3-tempita
 python3-iso8601
 python3-rfc3986
 python3-paste
 python3-pyeclib
 python3-keystoneclient
 python3-greenlet
 python3-oslo.context
 python3-xattr
 python3-netaddr
 python3-dnspython
 python3-os-service-types
 python3-stevedore
 python3-msgpack
 python3-oslo.cache
 python3-oslo.log
 python3-pycadf
 python3-oslo.i18n
 python3-keystoneauth1
 python3-webob
 python3-pastescript
 python3-swift
 python3-keystonemiddleware
 python3-pastedeploy
 python3-oslo.utils
 python3-dogpile.cache
 python3-eventlet
 swift
E: Sub-process /usr/bin/dpkg returned an error code (1)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

こういった具合にpython関連のライブラリだけ、すべて弾かれるという現象が起き、通常であれば、

cd /var/lib/dpkg/info
sudo ls |grep hogehoge

でキャッシュを消してsudo apt autoremove もしくは、

cd /var/cache/apt/archives
sudo dpkg -i hogehoge.deb

で解決できるのですが、CLIのpython設定がそもそも固定になっていた場合(もしくは固定にしてしまっていた場合)上記のように、pythonライブラリに付随するものだけが、エラーですべて弾かれるという現象が起きます。

解決策からいうと

~$ sudo update-alternatives --config python3
There is 1 choice for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.10   2         auto mode
  1            /usr/bin/python3.10   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

でpyhonのバージョン変更をマニュアルもしくはオートで変更したのち、

sudo apt install python3.10-distutils
#そのバージョンのアップデート漏れを解消してくれます

今すぐ必要な情報ではないかもしれませんが、頭の片隅に入れておくと便利です。
備忘録として置いておきます。

aptエラーでpython関連ばかり弾かれるときは、これを試してみてください。

参考記事
https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux

Discussion