File „/usr/lib/python3.5/weakref.py“, line 117, in remove TypeError: ‚NoneType‘ object is not callable

Nach jeder neuinstallation von Openmediavault kommt sie wieder – die nervige Fehlermeldung:

Exception ignored in: .remove at 0xb62ca390>

Traceback (most recent call last):

File „/usr/lib/python3.5/weakref.py“, line 117, in remove

TypeError: ‚NoneType‘ object is not callable

Exception ignored in: .remove at 0xb62ca390>

Traceback (most recent call last):

File „/usr/lib/python3.5/weakref.py“, line 117, in remove

TypeError: ‚NoneType‘ object is not callable

Und jedes mal suche ich die Lösung. Ich selber kenne zwei und suche immer wieder nach der Download-Variante, weswegen ich hier beide Lösungsansätze dokumentiere. Der Fehler selbst ist ein Fehler in Python, der bekannt und in neueren Versionen bereits gefixt ist. Auswirkungen hat es auf die Funktionsweise von Openmediavault nicht. Es ist halt einfach nicht schön.

Aktuell betreibe ich Openmediavault Arrakis (4.1.29-1). Das ganze basiert noch auf einem Debian 9 (Debian GNU/Linux 9.11 (stretch)).

Manuelle korrektur

Kurzanleitung: Öffne Datei /usr/lib/python3.5/weakref.py

cd /usr/lib/python3.5/
nano weakref.py

und ändere Zeile 109 in:

def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):

Und Zeile 117 zu:

_atomic_removal(d, wr.key)

Hinweis: Leerzeichen und keine Tabs verwenden, sonst können Fehler auftreten.

Alternativer Ansatz per Download

Auf der Console die korrigierte Datei von git herunterladen. Dazu einfach per SSH eintippen:

wget -O /usr/lib/python3.5/weakref.py https://raw.githubusercontent.com/python/cpython/9cd7e17640a49635d1c1f8c2989578a8fc2c1de6/Lib/weakref.py

Berechtigungen korrekt setzen, falls notwendig

ls -Al /usr/lib/python3.5/
chown root:root /usr/lib/python3.5/weakref.py

Bei mir ist hier im Original die Berechtigung root:root gesetzt:
-rw-r–r– 1 root root 20433 Sep 27 2018 /usr/lib/python3.5/weakref.py