几乎没有任何命令工作,没有名为“apt_pkg”的模块

Ret*_*sek 22 path python kernel-modules apt

我不知道我做了什么,但是像“ls”和“sudo”这样的基本命令不再起作用,现在向我抛出这个错误消息。

File "/usr/lib/command-not-found", line 28, in <module>
from CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
from CommandNotFound.db.db import SqliteDatabase
File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
from apport.packaging_impl import impl as packaging
File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 28, in <module>
from CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
from CommandNotFound.db.db import SqliteDatabase
File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg' 
Run Code Online (Sandbox Code Playgroud)

请帮忙,我正在哭,我明天有截止日期。

我应该重新安装 Ubuntu 但保留文件吗?

ica*_*rus 38

我们对 OP 进行了一些调试。

  1. cd /bin 这有效,所以我们知道 /bin 没有被删除
  2. cd /bin; echo ls* 这产生了“ls lsblk lsmod”而不是“ls*”,所以我们知道/bin中至少有3个文件
  3. /bin/ls -l /bin/ls 这产生了“-rwxr-xr-x 1 root root 133792 Jan 18 2018 /bin/ls”,所以这不是删除执行权限的问题。
  4. PATH=/bin:/usr/bin:$PATH这创建了几个理智的地方来寻找命令,现在ls又开始sudo工作了。

结论:PATH变量已损坏,因此 bash 找不到任何东西。使用仅从内置命令 (cdecho)开始的逐步调试,可以快速诊断出这一点。希望 OP 已经擦干了眼泪,再次满脸笑容。

OP 刚刚评论说他们“删除了对我的 .bashrc 的一些非常愚蠢的编辑,一切似乎都没问题”。

  • 你不是第一个破坏 `PATH` 的人。这也是我的第一个想法。这里的区别在于,为了用户友好性,Ubuntu 向 Bourne Again shell 添加了一个扩展,该扩展在找不到命令时运行另一个程序,而不是打印简短的“未找到命令”消息。当该程序失败时,如下所示,_its_ 错误消息比普通的“未找到命令”消息对用户友好得多。icarus 没有涉及修复未找到命令的系统,以阻止实用程序失败。 (12认同)
  • 您是 Unix 侦探、天才和圣人。感谢您为我提供故障排除服务 &lt;3 (4认同)