Arch-Linux
由於 libxml2 未在 python 中導入的問題,Virt-Manager 無法啟動
大約一年來,我一直在 Arch Linux 上愉快地使用 KVM 和 virt-manger。今天早上,我的一個虛擬機壞了(這是另一個我認為不相關的故事),我決定刪除它並再次進行 virt-install 是最簡單的。
但是,通過 virt-manager 界面刪除此 VM 後,我不再能夠啟動 virt-manager:
$ virt-install Traceback (most recent call last): File "/usr/share/virt-manager/virt-install", line 15, in <module> import virtinst File "/usr/share/virt-manager/virtinst/__init__.py", line 49, in <module> from virtinst.domain import * # pylint: disable=wildcard-import File "/usr/share/virt-manager/virtinst/domain/__init__.py", line 5, in <module> from .blkiotune import DomainBlkiotune File "/usr/share/virt-manager/virtinst/domain/blkiotune.py", line 8, in <module> from ..xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty File "/usr/share/virt-manager/virtinst/xmlbuilder.py", line 16, in <module> from .xmlapi import XMLAPI File "/usr/share/virt-manager/virtinst/xmlapi.py", line 7, in <module> import libxml2 File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 779, in exec_module File "<frozen importlib._bootstrap_external>", line 911, in get_code File "<frozen importlib._bootstrap_external>", line 580, in _compile_bytecode EOFError: marshal data too short
似乎 libxml2 在某種程度上被破壞了:
Python 3.8.3 (default, May 17 2020, 18:15:42) [GCC 10.1.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import libxml2 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 779, in exec_module File "<frozen importlib._bootstrap_external>", line 911, in get_code File "<frozen importlib._bootstrap_external>", line 580, in _compile_bytecode EOFError: marshal data too short
我已經嘗試更新我的系統以及刪除和重新安裝明顯的軟體包 ,
libvirt
和,virt-manager
並沒有幫助,也沒有一些危險的.libxml2``libvirt-python``pacman -Syyu
關於這裡可能被破壞的任何想法?
我正在使用 LTS 核心,5.4。Python 版本是 3.8。虛擬管理器是 2.2.1
另外,如果我只是啟動 python,我可以毫無問題地載入上述錯誤中提到的所有模組。
我即將進行全新的重新安裝,但這是一個可怕的麻煩,如果我可以在 Arch 中修復一些依賴項,我想避免它
編輯:正如評論中所建議的,我嘗試執行 strace ,這是輸出(也許如果我看它足夠長的時間,我會對哪個文件可能已損壞有一些了解)。當我在 root 上用完磁碟空間時,文件損壞似乎確實很可能。
~]$ strace python -c 'import libxml2' #output was too big to paste in here, so I cut out everything but the last part, which is what seemed most likely to be relevant ###..........many lines deleted....#### ###..........many lines deleted....#### ###..........many lines deleted....#### getcwd("/home/boss", 1024) = 11 stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0 stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0 stat("/home/boss", {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0 openat(AT_FDCWD, "/home/boss", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3 fstat(3, {st_mode=S_IFDIR|0750, st_size=3488, ...}) = 0 getdents64(3, /* 41 entries */, 32768) = 1416 getdents64(3, /* 0 entries */, 32768) = 0 close(3) = 0 stat("/usr/lib/python3.8", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 stat("/usr/lib/python3.8/lib-dynload", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 stat("/home/boss/.local/lib/python3.8/site-packages", {st_mode=S_IFDIR|0700, st_size=3488, ...}) = 0 stat("/usr/lib/python3.8/site-packages", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 stat("/usr/lib/python3.8/site-packages/libxml2.py", {st_mode=S_IFREG|0644, st_size=345896, ...}) = 0 stat("/usr/lib/python3.8/site-packages/libxml2.py", {st_mode=S_IFREG|0644, st_size=345896, ...}) = 0 openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/__pycache__/libxml2.cpython-38.pyc", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=139264, ...}) = 0 ioctl(3, TCGETS, 0x7fffbe383200) = -1 ENOTTY (Inappropriate ioctl for device) lseek(3, 0, SEEK_CUR) = 0 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0644, st_size=139264, ...}) = 0 mmap(NULL, 143360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2172e15000 read(3, "U\r\r\n\0\0\0\0\203\224\246^(G\5\0\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 139265) = 139264 read(3, "", 1) = 0 close(3) = 0 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2172dd5000 write(2, "Traceback (most recent call last"..., 35Traceback (most recent call last): ) = 35 write(2, " File \"<string>\", line 1, in <m"..., 39 File "<string>", line 1, in <module> ) = 39 openat(AT_FDCWD, "<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<string>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 68 File "<frozen importlib._bootstrap>", line 991, in _find_and_load ) = 68 openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 77 File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked ) = 77 openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 68 File "<frozen importlib._bootstrap>", line 671, in _load_unlocked ) = 68 openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 74 File "<frozen importlib._bootstrap_external>", line 779, in exec_module ) = 74 openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 71 File "<frozen importlib._bootstrap_external>", line 911, in get_code ) = 71 openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, " File \"<frozen importlib._boots"..., 80 File "<frozen importlib._bootstrap_external>", line 580, in _compile_bytecode ) = 80 openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python38.zip/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/lib-dynload/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/boss/.local/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/python3.8/site-packages/<frozen importlib._bootstrap_external>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, "EOFError: marshal data too short"..., 33EOFError: marshal data too short ) = 33 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f21734763e0}, {sa_handler=0x7f21736ca3a2, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f21734763e0}, 8) = 0 munmap(0x7f2172dd5000, 262144) = 0 munmap(0x7f2172e15000, 143360) = 0 sigaltstack(NULL, {ss_sp=0x5610230bc580, ss_flags=0, ss_size=16384}) = 0 sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0 exit_group(1) = ? +++ exited with 1 +++
編輯: 這個執行緒似乎很有希望,但我不知道我會在哪裡檢查是否
__init__.py
失去。
原因很可能是
.pyc
文件損壞。嘗試
strace
在 python 程序中import libxml2
查看它在編組錯誤之前打開的文件。然後,刪除該文件(python 不需要
.pyc
文件存在才能工作)並import libxml2
再次刪除。如果導入成功,請將其刪除python-libxml2
並重新安裝(這應該會重新生成錯誤.pyc
文件)。