Alpine Edgeからパッケージをインストールしましたが、onboard
起動できません。
$ onboard
Traceback (most recent call last):
File "/usr/bin/onboard", line 32, in <module>
from Onboard.Exceptions import chain_handler
ModuleNotFoundError: No module named 'Onboard'
パッケージの内容を見ると、インストールされているパッケージsite-packages
のバージョンよりも最新のPythonライブラリが含まれています。
$ apk manifest onboard
sha1:81dbaf3b78893bb5d5896fd023409f12e580e1e9 etc/xdg/autostart/onboard-autosta rt.desktop
sha1:687e5d9bce3c7cc92caee337207058a62ada86df usr/bin/onboard
sha1:3c77e2705f8b8b2150002f28d31c5382952f639a usr/bin/onboard-settings
sha1:40980337b28834148ec974557ca9c97000d88560 usr/lib/python3.10/site-packages/ onboard-1.4.1-py3.10.egg-info
[...]
$ apk list --installed python3
python3-3.9.7-r4 x86 {python3} (PSF-2.0) [installed]
私は3.9が利用可能な最新のパッケージPythonのバージョンだと思いましたが、そうではありませんでした。
$ apk list python3
python3-3.9.7-r4 x86 {python3} (PSF-2.0) [installed]
python3-3.10.1-r0 x86 {python3} (PSF-2.0) [upgradable from: python3-3.9.7-r4]
ただし、3.10パッケージはupgradable
実際にアップグレードできません。
$ sudo apk upgrade python3
OK: 451 MiB in 1036 packages
バージョン制約で固定されていないことを再確認してくださいworld
。
$ grep python /etc/apk/world
python3
python3-dbg
python3-tkinter
いいえ。
何が問題なの?
答え1
新しいPythonバージョンを固定しようとすると、アップグレードをブロックする他の依存関係の広範なリストが表示されます。
$ sudo apk add python3=3.10.1-r0
ERROR: unable to select packages:
python3-3.9.7-r4:
conflicts: python3-3.10.1-r0 python3-3.10.1-r0[so:libpython3.so=0] python3-3.10.1-r0[cmd:2to3=3.9.7-r4] python3-3.10.1-r0[cmd:pydoc3=3.9.7-r4] python3-3.10.1-r0[cmd:python3=3.9.7-r4]
breaks: world[python3=3.10.1-r0]
satisfies: glib-dev-2.70.1-r0[python3] py3-gobject3-3.42.0-r2[python3] py3-dbus-1.2.18-r1[python3] onboard-1.4.1-r6[python3] blueman-2.2.3-r1[python3] terminator-2.1.1-r2[python3]
py3-pygdbmi-0.10.0.0-r2[python3] py3-configobj-5.0.6-r9[python3] py3-six-1.16.0-r1[python3] boost1.76-python3-1.76.0-r2[so:libpython3.9.so.1.0]
python3-3.10.1-r0:
conflicts: python3-3.9.7-r4 python3-3.9.7-r4[so:libpython3.so=0] python3-3.9.7-r4[cmd:2to3=3.10.1-r0] python3-3.9.7-r4[cmd:pydoc3=3.10.1-r0] python3-3.9.7-r4[cmd:python3=3.10.1-r0]
satisfies: world[python3=3.10.1-r0] glib-dev-2.70.1-r0[python3] py3-gobject3-3.42.0-r2[python3] py3-dbus-1.2.18-r1[python3] onboard-1.4.1-r6[python3] blueman-2.2.3-r1[python3] terminator-2.1.1-r2[python3]
py3-pygdbmi-0.10.0.0-r2[python3] py3-configobj-5.0.6-r9[python3] py3-six-1.16.0-r1[python3] gdb-11.1-r1[so:libpython3.10.so.1.0]
アップグレードをブロックするfromへの依存関係は、so
Python 3.10の競合リストには表示されず、Python 3.9の満足者リストにのみ表示されるため、最初は解析するのが少し困難です。しばらくすると、これがアップグレードを妨げていることが明らかになります。libpython3.9
boost1.76-python3
高山地帯の一般的な状況は次のとおりです。
site-packages
コンポーネントがあるが依存するコンパイルされた拡張機能を持たないPythonパッケージlibpython
(例:)は、onboard
必要な特定のPythonマイナーバージョンへの依存関係をリストしません。lib
礼拝規則site-packages
- ブーストのPythonサポートのようなものは
libpython
実際にはファイルによって異なり、so
最終的には特定のPythonパッケージのバージョンによって異なります。 - ブーストのようなものは、時々、各バージョンごとに異なるパッケージ名を持つようにパッケージ化されます(たとえば
boost1.76
、別のパッケージ())、それ自体ではアップグレードすることが解決策であることはわかりません。boost
boost*-python3
boost1.77-python3
apk
ローリングリリースは、リリースのさまざまなパッケージ間のパッケージング方法の違いにより、いくつかの障害に直面しました。
問題のある古いパッケージを削除してくださいboost1.76-python3
。
$ sudo apk del boost1.76-python3
World updated, but the following packages are not removed due to:
boost1.76-python3: boost1.76-dev boost1.76
OK: 451 MiB in 1036 packages
$ sudo apk del boost1.76-dev
(1/1) Purging boost1.76-dev (1.76.0-r2)
OK: 277 MiB in 1035 packages
$ sudo apk del boost1.76
(1/34) Purging boost1.76 (1.76.0-r2)
...
(17/34) Purging boost1.76-python3 (1.76.0-r2)
...
(34/34) Purging boost1.76-serialization (1.76.0-r2)
Executing busybox-1.34.1-r5.trigger
OK: 268 MiB in 1001 packages
apk upgrade
これで新しいPythonが得られます。
$ sudo apk upgrade
(1/2) Upgrading python3 (3.9.7-r4 -> 3.10.1-r0)
(2/2) Upgrading gdb (11.1-r0 -> 11.1-r1)
Executing busybox-1.34.1-r5.trigger
OK: 269 MiB in 1001 packages
もちろんboost1.77-python3
、必要に応じて新しいものをインストールすることもできます。
$ sudo apk add boost1.77-python3
(1/1) Installing boost1.77-python3 (1.77.0-r3)
OK: 269 MiB in 1002 packages