omv安装插件时weakref.py报错

在 omv 的 web 端安装插件时报错,报错位置是 weakref.py 文件,报错信息如下:

Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  openmediavault-lvm2
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 27.7 kB of archives.
After this operation, 244 kB of additional disk space will be used.
Get:1 https://packages.openmediavault.org/public arrakis/main amd64 openmediavault-lvm2 all 4.0.7-1 [27.7 kB]
Fetched 27.7 kB in 5s (4883 B/s)
Selecting previously unselected package openmediavault-lvm2.
(Reading database ... (Reading database ... 5%(Reading database ... 10%(Reading database ... 15%(Reading database ... 20%(Reading database ... 25%(Reading database ... 30%(Reading database ... 35%(Reading database ... 40%(Reading database ... 45%(Reading database ... 50%(Reading database ... 55%(Reading database ... 60%(Reading database ... 65%(Reading database ... 70%(Reading database ... 75%(Reading database ... 80%(Reading database ... 85%(Reading database ... 90%(Reading database ... 95%(Reading database ... 100%(Reading database ... 54624 files and directories currently installed.)
Preparing to unpack .../openmediavault-lvm2_4.0.7-1_all.deb ...
Unpacking openmediavault-lvm2 (4.0.7-1) ...
Setting up openmediavault-lvm2 (4.0.7-1) ...
Processing triggers for openmediavault (4.1.36-1) ...
Updating locale files ...
Updating file permissions ...
Purging internal cache ...
Restarting engine daemon ...
Exception ignored in: <function WeakValueDictionary.__init__.<locals>.remove at 0x7efed0a3e9d8>
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: <function WeakValueDictionary.__init__.<locals>.remove at 0x7efed0a3e9d8>
Traceback (most recent call last):
  File "/usr/lib/python3.5/weakref.py", line 117, in remove
TypeError: 'NoneType' object is not callable

报错提示了位置:/usr/lib/python3.5/weakref.py文件第117行

服务器使用的是 omv4,第一次装了个 omv5,发现不好用,很多插件都找不到,又重装了一遍系统,美滋滋。

下面开始修复 bug,你不仁我不能不义,改文件前先备份:

cp /usr/lib/python3.5/weakref.py /usr/lib/python3.5/weakref.py.bak

参考 这个回答 修改文件内容。

修改前:

def remove(wr, selfref=ref(self)):
    self = selfref()
    if self is not None:
        if self._iterating:
            self._pending_removals.append(wr.key)
		else:
            _remove_dead_weakref(d, wr.key)

修改后:

def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):
    self = selfref()
    if self is not None:
        if self._iterating:
            self._pending_removals.append(wr.key)
		else:
            _atomic_removal(d, wr.key)

OK,可以安装插件了。

posted @ 2020-12-17 00:14  barwe  阅读(465)  评论(0编辑  收藏  举报