알파인에서 업그레이드 가능한 Python 패키지가 업그레이드되지 않는 이유는 무엇입니까?

알파인에서 업그레이드 가능한 Python 패키지가 업그레이드되지 않는 이유는 무엇입니까?

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 에 대한 종속성은 soPython 3.10의 충돌 목록에 나타나지 않고 Python 3.9의 만족자 목록에만 나타나기 때문에 처음에는 구문 분석하기가 약간 어렵습니다. 잠시 후에 이것이 업그레이드를 방해한다는 것이 분명해질 것입니다.libpython3.9boost1.76-python3

고산지대의 일반적인 상황은 다음과 같습니다.

  • site-packages구성 요소가 있지만 의존하는 컴파일된 확장이 없는 Python 패키지 libpython(예: ) 는 onboard필요한 특정 Python 부 버전에 대한 종속성을 나열하지 않습니다. lib예배 규칙서site-packages
  • 부스트의 Python 지원과 같은 것들은 libpython실제로 파일에 따라 다르 so므로 궁극적으로 특정 Python 패키지 버전에 따라 다릅니다.
  • 부스트와 같은 것들은 때때로 각 버전마다 다른 패키지 이름을 갖도록 패키지됩니다( 예 boost1.76: 다른 패키지( )이며 그 자체로는 업그레이드하는 것이 해결책이라는 것을 알 수 없습니다.boostboost*-python3boost1.77-python3apk

롤링 릴리스는 릴리스의 여러 패키지 간의 패키징 방법 차이로 인해 몇 가지 장애물에 직면했습니다.

문제가 있는 오래된 패키지를 제거하십시오 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

관련 정보