sudo apt-get update 子进程返回错误代码

sudo apt-get update 子进程返回错误代码

我正在运行 Ubuntu 18.04我注意到在屏幕的左上角,突然出现了这个图标。我以为只是短暂断线而已,所以没太担心。

现在,每当我运行时,sudo apt-get update进程都会因以下错误而停止:

Hit:1 http://it.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://it.archive.ubuntu.com/ubuntu bionic-updates InRelease             
Hit:3 http://it.archive.ubuntu.com/ubuntu bionic-backports InRelease           
Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease              
Hit:5 http://packages.ros.org/ros/ubuntu bionic InRelease                      
Hit:6 https://download.sublimetext.com apt/stable/ InRelease                   
Traceback (most recent call last):                 
  File "/usr/lib/cnf-update-db", line 8, in <module>
    from CommandNotFound.db.creator import DbCreator
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, 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/cnf-update-db", line 8, in <module>
    from CommandNotFound.db.creator import DbCreator
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code

在看到这样的图标之前,我记得做的唯一一件“邪恶”的事就是输入sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 0优先考虑这个较新版本的 Python。

由于从错误中我可以看到一些 python 导入失败,所以我想说清楚。
到目前为止,我已经尝试过:

  • sudo apt-get clean
  • sudo dpkg--configure-a
  • sudo apt-get 自动删除
  • sudo apt-get 升级
  • sudo apt-get 安装 apt_pkg -->E: Unable to locate package apt_pkg
  • sudo 更新替代品 --remove-all python && sudo 更新替代品 --remove-all python3

--> 输出错误改为

(...)
sh: 1: /usr/lib/cnf-update-db: not found           
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code

而且:我无法再访问我的终端。我发现唯一不方便的方法是右键单击任意位置,然后选择“打开终端”。为此,我尝试过

  • 更改语言设置,即使它们从未被损坏。
  • 从“应用程序”启动终端,这将导致出现一条通知,提示failed to execute child process gnome-terminal: no such file or directory
  • 通过“右键单击”启动它并输入$ gnome-terminal结果bash: /usr/bin/gnome-terminal: /usr/bin/python3: bad interpreter: No such file or directory

希望解决一个问题就能解决另一个问题。

答案1

使用 update-alternatives 将默认的 Python 版本恢复为原来的版本。我也在运行 Ubuntu 18.04,我的 Python 版本是 2.7.15

$ python --version
Python 2.7.15+

然后,我建议研究使用venv(python3 中的 venv 和 python2 中的 virtualenv)设置虚拟 python 环境来测试或运行需要 python 3 的程序。

首先,通过运行确保您已安装 pip sudo apt install python3-pip,或者通过运行确保它是最新的python3 -m pip install --user --upgrade pip

然后运行安装 venvpython3 -m pip install --user virtualenv

我不想将您链接到外部网页,但 python.org 网站上有明确的说明。您可以在以下网址找到该网站的链接这里

答案2

好吧,我最终重新安装了 Ubuntu:无论我找到多少解决方案,导致的问题都太多样化了,即使所有问题都类似于以某种方式弄乱了 Python 默认版本的事实。

我猜 Python 真的在使用 Ubuntu 时,你应该格外小心。这是惨痛的教训。

答案3

嗯,试试“windows 方式”

sudo apt install --reinstall  python3-commandnotfound  command-not-found            

相关内容