Python-3.10.12: checksum for *.pyc does not match

morromett

Well-Known Member
OpenBSD 7.3: Seit dem 11. Juliy 2023 sind auf meinem Server 34 *.pyc-Dateien so geändert worden (Datum und ownership von root:bin auf root:wheel), dass beim pkg_check es den Hinweis gibt, dass die checksum nicht OK ist:
Code:
:~ #pkg_check -n
Packing-list sanity: ok
Direct dependencies: ok
Reverse dependencies: ok
Files from packages: ok
--- python-3.10.12 -------------------
checksum for /usr/local/lib/python3.10/__pycache__/_weakrefset.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/genericpath.cpython-310.pyc does not match
...
Code:
~ #pkg_check -n
Packing-list sanity: ok
Direct dependencies: ok
Reverse dependencies: ok
Files from packages: ok
--- python-3.10.12 -------------------
checksum for /usr/local/lib/python3.10/__pycache__/_weakrefset.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/genericpath.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/getpass.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/operator.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/quopri.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/reprlib.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/selectors.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/signal.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/sre_compile.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/sre_constants.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/sre_parse.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/stat.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/string.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/stringprep.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/struct.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/warnings.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/__pycache__/weakref.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/collections/__pycache__/abc.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/__init__.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/_encoded_words.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/_policybase.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/charset.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/contentmanager.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/encoders.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/generator.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/header.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/iterators.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/message.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/policy.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/email/__pycache__/quoprimime.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/encodings/__pycache__/aliases.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/encodings/__pycache__/idna.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/encodings/__pycache__/utf_8.cpython-310.pyc does not match
checksum for /usr/local/lib/python3.10/urllib/__pycache__/__init__.cpython-310.pyc does not match
Wenn ich so eine Datei dann lösche und pkg_check ausführe, kommt der Hinweis:
Code:
/usr/local/lib/python3.10/__pycache__/_weakrefset.cpython-310.pyc should exist
/usr/local/lib/python3.10/__pycache__/genericpath.cpython-310.pyc should exist
Wenn ich dann den Server reboote, werden die gelöschten *.pyc-Dateien, mit nicht passender checksum (und aktuellem Datum; root:wheel) wieder hergestellt.
Weiß evtl. jemand, was die Ursache für so ein Verhalten bzw. so eine Änderung sein kann? Danke.
 
Evtl. sind alte Dateien von vorherigen Updates nicht ordnungsgemaess geloescht und ersetzt worden. Was sagt denn $ type python{,2,3}? Hast Du evtl. einen link von z.B. python3 zu einer alten Version? $ ls -l /usr/local/bin/python3. Bei mir erscheint dort lrwxr-xr-x 1 root wheel 10 Jun 21 08:51 /usr/local/bin/python3 -> python3.10. Evtl. hilft auch, Python zu deinstallieren, danach evtl. Python-(lib/cache/...)-Leichen von Hand zu loeschen und neu zu installieren. .pyc-Dateien sind kompilierte Python-Bytecode-Dateien, die vermutlich noch mit aelteren Python-Versionen kompiliert wurden und nach einem Update auf Python3.10 nicht mehr funktionieren. Nutzt Du pip? Evtl. muss hier auch noch ein update durchgefuehrt werden.
 
Danke für die Antwort.
Code:
:~ $type python{,2,3}
python not found
python2 not found
python3 is /usr/local/bin/python3
Code:
:~ $ls -l /usr/local/bin/python3
lrwxr-xr-x  1 root  wheel  10 Jun 26 09:55 /usr/local/bin/python3 -> python3.10
Wenn ich die *pyc-Dateien mit fehlerhafter checksum, von Hand lösche, sind sie nach einem reboot, wieder fehlerhaft hergestellt.
Diese *.pyc-Dateien (für python-3.10.12) waren ja vor dem 11. Juli 2023, mit richtiger checksum und ownership "root:bin" (statt wie jetzt mit "root:wheel") vorhanden.
 
Python ist kein Bestandteil der Basisinstallation. Evtl. hast Du im Hintergrunden einen Dienst laufen, welcher die .pyc beim Starten des Dienstes neu generiert. Evtl. versuchst Du mal, die Dienste, die Python verwenden, nach und nach zu deaktivieren und zu schauen, welcher hier das Problem bereitet. Was mich auch wundert ist, dass diese als Root angelegt werden. Dienste laufen normalerweise als User in ihrem eigenen Home. Hast Du irgendwelche Python-Scripts via Cron oder als rc-script als Root laufen?

Nachtrag:

# cat /var/db/pkg/python-3.10.12/+CONTENTS zeigt an, dass die o.a. .pyc-Dateien mit zusammen mit dem Paket "python" installiert wurden. Vermutlich ist da was nicht synchron geupdated worden und das erklaert auch, warum OpenBSD die fehlenden .pyc-Pakete bei Systemstart wieder neu anlegt. Ich wuerde da so vorgehen:

Code:
### Liste der aktuell "manuell" installierten Pakete erstellen
# pkg_info -mz > packages.txt

### ALLE installierten Pakete deinstallieren
# pkg_delete -X

### Alle Pakete wieder neu installieren
# pkg_add -lz packages.txt
 
Zuletzt bearbeitet:
.... .pyc-Dateien mit zusammen mit dem Paket "python" installiert wurden. Vermutlich ist da was nicht synchron geupdated worden und das erklaert auch, warum OpenBSD die fehlenden .pyc-Pakete bei Systemstart wieder neu anlegt.
Ja, das war ja auch alles OK bis zum 11. Juli 2023 und an dem Tag ist kein Update gemacht worden bzw. es sind auch "nur" 34 *.pyc-Dateien von vielen, geändert worden. Mit dem neu anlegen habe ich auch kein Problem, weil ich die geänderten deshalb gelöscht habe. Die Frage ist doch, warum passt die checksum bei den von OpenBSD wieder neu angelegten *.pyc-Dateien auch nicht?
 
Zurück
Oben