Ошибка при попытке обновления sudo apt-get - связано с Python?
Я надеюсь, что вы можете мне помочь. Я установил Ubuntu 18.04 несколько дней назад и, пытаясь настроить его и установить новое упакованное и программное обеспечение, я думаю, что сделал что-то плохое. Я думаю, что это может быть связано с установкой Python. В любом случае, ни гном-терминал, ни гном-твики больше не могут запускаться. Кроме того, когда я пытаюсь обновить (sudo apt-get update), я получаю следующую ошибку:
sh 1: /usr/lib/cnf-update-db: not found
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Succes 'if /usr/bin/test -w /var/lib/command-not-found -a -e /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
Я новичок в Linux, поэтому понятия не имею, как мне это исправить. Любая идея? Даже восстановить дефолтные конфигурации / настройки?
Большое спасибо!
3 ответа
Это, как полагает guiverc, наиболее похожая версия Python. В этот день в нем представлено множество руководств по Python, предлагающих изменить версию Python по умолчанию с 2 на 3. Хотя это полезно и практично для разработки на Python, оно ломает систему пакетов.
Так что проверь где ссылка /usr/bin/python
готовится к:
$ ls -la /usr/bin/python
lrwxrwxrwx 1 root root 9 Jan 24 2017 /usr/bin/python -> python2.7
Он должен указывать на python2, а не на любой исполняемый файл python3. Если он указывает на python3, сделайте следующее ( man ln):
$ sudo rm -f /usr/bin/python
$ sudo ln -s /usr/bin/python2.7 /usr/bin/python
После этого apt-get
снова начнет работать.
В моем случае установка python на python2 привела к немного другому сообщению об ошибке:
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'
У меня установлен python 3.9, и для меня это решило сделать так, чтобы python3 указывал на python3.8 вместо python3.9:
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 16 Dec 22 13:53 /usr/bin/python -> /usr/bin/python2
lrwxrwxrwx 1 root root 18 Dec 22 13:54 /usr/bin/python2 -> /usr/bin/python2.7
-rwxr-xr-x 1 root root 3674216 Mar 8 2021 /usr/bin/python2.7
lrwxrwxrwx 1 root root 18 Dec 22 13:56 /usr/bin/python3 -> /usr/bin/python3.8
-rwxr-xr-x 1 root root 5490488 Nov 26 21:14 /usr/bin/python3.8
lrwxrwxrwx 1 root root 33 Nov 26 21:14 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
-rwxr-xr-x 1 root root 5803968 Nov 23 16:27 /usr/bin/python3.9
В моем случае
ссылка на python была сломана. Итак, я сделал мягкую ссылку, как показано ниже.
ln -s /usr/bin/python2.7 /usr/bin/python2
ln -s /usr/bin/python3.8 /usr/bin/python3
полный!