Я в затруднении :-( Я надеюсь, что кто-нибудь может мне с этим помочь.
У меня (был) отлично работающий Ubuntu 18.04 с python2.7.17 и python3.6.9. Я хотел обновить свой Python до 3.8, поэтому воспользовался онлайн-справкой. (например, здесь: Как мне установить Python 3.8 в Lubuntu 18.04? , и здесь: Ошибка при попытке обновления sudo apt-get - связано с Python? )
Я установил Python3. 8.0 (из каналов Ubuntu, а не PPA).
Я выполнил update-alternatives --config python3
и в момент слабости я также сделал update-alternatives --config python
. Net-net, из-за моей настройки python терминалы не открывались.
Я отменил эти изменения. Мне пришлось вручную настроить ссылку на python2 снова, используя: $ sudo ln -s /usr/bin/python2.7 / usr / bin / python
. Но проблемы остаются.
Проблемы: В настоящее время Терминал по-прежнему не открывается, а sudo apt-get update
не работает. : - (
(У меня уже открыто несколько терминалов ... но я боюсь перезагрузить систему, чтобы терминалы не открылись)
По разным причинам я должен оставаться на Ubuntu 18.04 , и я не могу выполнить повторную установку. Как это исправить? Любая помощь очень ценится !! Спасибо!
Текущая настройка ниже:
avtester@a3computer:~$ update-alternatives --list python
update-alternatives: error: no alternatives for python
avtester@a3computer:~$ update-alternatives --list python3
/usr/bin/python3.6
/usr/bin/python3.8
avtester@a3computer:~$
...
avtester@a3computer:~$ ls -lt /usr/bin/python*
lrwxrwxrwx 1 root root 18 Nov 19 09:33 /usr/bin/python -> /usr/bin/python2.7
lrwxrwxrwx 1 root root 25 Nov 18 23:36 /usr/bin/python3 -> /etc/alternatives/python3
-rwxr-xr-x 2 root root 4526456 Oct 8 05:12 /usr/bin/python3.6
lrwxrwxrwx 1 root root 33 Oct 8 05:12 /usr/bin/python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4526456 Oct 8 05:12 /usr/bin/python3.6m
lrwxrwxrwx 1 root root 34 Oct 8 05:12 /usr/bin/python3.6m-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x 1 root root 3628976 Sep 30 06:38 /usr/bin/python2.7
lrwxrwxrwx 1 root root 33 Sep 30 06:38 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
-rwxr-xr-x 2 root root 4456208 Apr 17 2020 /usr/bin/python3.5
-rwxr-xr-x 2 root root 4456208 Apr 17 2020 /usr/bin/python3.5m
-rwxr-xr-x 1 root root 5203488 Oct 28 2019 /usr/bin/python3.8
lrwxrwxrwx 1 root root 33 Oct 28 2019 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 16 Oct 25 2018 /usr/bin/python3-config -> python3.6-config
lrwxrwxrwx 1 root root 10 Oct 25 2018 /usr/bin/python3m -> python3.6m
lrwxrwxrwx 1 root root 17 Oct 25 2018 /usr/bin/python3m-config -> python3.6m-config
lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python2 -> python2.7
lrwxrwxrwx 1 root root 16 Apr 16 2018 /usr/bin/python2-config -> python2.7-config
lrwxrwxrwx 1 root root 16 Apr 16 2018 /usr/bin/python-config -> python2.7-config
avtester@a3computer:~$
avtester@a3computer:~$ python --version
Python 2.7.17
avtester@a3computer:~$ python3 --version
Python 3.8.0
avtester@a3computer:~$
Ошибка для sudo apt-get update
здесь:
avtester@a3computer:~$ sudo apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu bionic-backports 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'
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
avtester@a3computer:~$
ОБНОВЛЕНИЕ 1 и 2
После некоторой помощи (см .: https://stackoverflow.com/questions/56218562/how-to-fix-modulenotfounderror-no-module- named-apt-pkg ), я переназначил свой python3
альтернативы исходному python3.6
вместо недавно установленного python3.8
, как показано ниже:
avtester@a3computer:~$ ls -l /etc/alternatives/python3
lrwxrwxrwx 1 root root 18 Nov 18 23:36 /etc/alternatives/python3 -> /usr/bin/python3.8
avtester@a3computer:~$ sudo update-alternatives --config python3
[sudo] password for avtester:
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.8 2 auto mode
1 /usr/bin/python3.6 1 manual mode
2 /usr/bin/python3.8 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python3 (python3) in manual mode
avtester@a3computer:~$
avtester@a3computer:~$ ls -l /etc/alternatives/python3
lrwxrwxrwx 1 root root 18 Nov 19 10:37 /etc/alternatives/python3 -> /usr/bin/python3.6
И теперь я могу открыть терминалы и выполнить sudo apt-get install
.
ОДНАКО, я вижу очень маленький список обновлений? Я не уверен, что это значит.
avtester@a3computer:~$ sudo apt-get update
[sudo] password for avtester:
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Reading package lists... Done
avtester@a3computer:~$
Что это за вуду? Если обновить систему python3
до новой версии, почему система так сильно хрипит ??
для записи, пожалуйста, посмотрите мой ответ в Обновлениях 1 и 2.
Обновление 1 и 2:
После некоторой помощи (см .: https://stackoverflow.com/questions/56218562/how-to-fix-modulenotfounderror-no-module- named-apt-pkg ), Я переназначил свои python3
альтернативы исходному python3.6
вместо недавно установленного python3.8
, как показано ниже:
avtester@a3computer:~$ ls -l /etc/alternatives/python3
lrwxrwxrwx 1 root root 18 Nov 18 23:36 /etc/alternatives/python3 -> /usr/bin/python3.8
avtester@a3computer:~$ sudo update-alternatives --config python3
[sudo] password for avtester:
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.8 2 auto mode
1 /usr/bin/python3.6 1 manual mode
2 /usr/bin/python3.8 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python3 (python3) in manual mode
avtester@a3computer:~$
avtester@a3computer:~$ ls -l /etc/alternatives/python3
lrwxrwxrwx 1 root root 18 Nov 19 10:37 /etc/alternatives/python3 -> /usr/bin/python3.6
Теперь я могу открыть терминалы и выполните sudo apt-get install
,
однако я вижу очень маленький список обновлений? Не знаю, что это значит.
avtester@a3computer:~$ sudo apt-get update
[sudo] password for avtester:
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Reading package lists... Done
avtester@a3computer:~$
Начал писать комментарий, но он уже слишком длинный ... :)
В любом случае, Python - довольно важный пакет, так как от него зависит множество базовых пакетов ОС. Удаление или повреждение Python приводит к тому, что другие приложения по существу теряют свои зависимости.
И если эти приложения являются важными системными приложениями, и они были написаны на Python, и ваша отмена заставляет их пропустить модули Python или в новой версии Python есть критические изменения, тогда ад вырвется наружу.
Что касается использования Python 3.8, если он вам действительно нужен (например, вы занимаетесь разработкой), кажется, вам лучше всего использовать его в отдельной среде (виртуальная машина, контейнер) или вам следует по крайней мере, исследование с использованием виртуальных сред Python. Начните с этого:
pip install virtualenv
Что касается краткого списка подходящих репозиториев, это просто ... Репозиторий, который он проходит. Если очень хочешь,вы можете добавить больше.
P.S. Рад, что вам уже удалось это исправить, на самом деле это было довольно быстро. Вы должны опубликовать свой ответ с исправлением, которое вы сделали, для других.
Это классический пример сложной задачи, требующий комплексного решения.
Я просто прошел через то же самое и использовал ваш вопрос/ответ (который я нашел в поиске по загадочной ошибке sh 1: /usr/lib/cnf-update-db: not found
) и некоторые другие, чтобы выяснить решение.
Во-первых, я попал в этот беспорядок с обновлениями-альтернативами - я просто возился с ним после установки Python 3.7, 3.8 и 3.9. Я каким-то образом также запутал отображение для python, которое должно идти в 2.7.
В моем случае (Ubuntu 18.04) именно альтернативы Python3 ломали меткую, поэтому мне пришлось
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
, затем
sudo update-alternatives --config python3
, чтобы выбрать 3.6.1.
Однако, прежде чем я это сделал, я попробовал 20 других вещей, ориентированных на «исправление управления пакетами», поскольку загадочная ошибка sh 1: /usr/lib/cnf-update-db: not found
часто является симптомом какой-то проблемы с пакетами. В этом ключе, по совету незнакомцев в Интернете, я удалил несколько различных файлов и каталогов, относящихся к пакетам. Я мог бы отметить здесь, что в целом к советам незнакомых людей в интернете, связанным с rm -rf чем-либо
, следует относиться оченьосторожно, но я не был осторожен.
Во всяком случае, после решения моей проблемы с альтернативами обновлений, apt-get снова «работал», но на самом деле не работал - я получил супер короткий список, и ничего не обновлялось или не устанавливалось.
Требовалось восстановить и т.д./apt/sources.list
- из командной строки я просто взял это из одной из моих других (рабочих) систем Ubuntu 18 и скопировал его. В моем случае файл выглядит так:
# deb cdrom:[Ubuntu 18.04.1 LTS _Bionic Beaver_ - Release amd64 (20180725)]/ bionic main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://ca.archive.ubuntu.com/ubuntu/ bionic main restricted deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://ca.archive.ubuntu.com/ubuntu/ bionic-updates main restricted # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://ca.archive.ubuntu.com/ubuntu/ bionic universe # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic universe deb http://ca.archive.ubuntu.com/ubuntu/ bionic-updates universe # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://ca.archive.ubuntu.com/ubuntu/ bionic multiverse # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic multiverse deb http://ca.archive.ubuntu.com/ubuntu/ bionic-updates multiverse # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://ca.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse # deb-src http://ca.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu bionic partner # deb-src http://archive.canonical.com/ubuntu bionic partner deb http://security.ubuntu.com/ubuntu bionic-security main restricted # deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted deb http://security.ubuntu.com/ubuntu bionic-security universe # deb-src http://security.ubuntu.com/ubuntu bionic-security universe deb http://security.ubuntu.com/ubuntu bionic-security multiverse
Решение было немедленным - apt-get снова работает, версии Python правильные, а мои альтернативы все еще доступны для venvs.
Последний урок, который я усвоил здесь, заключается в том, что при добавлении дополнительных версий Python в вашу систему для разработки/тестирования использование виртуальных сред имеет еще более важное значение. В системах, где все venvs используют одну и ту же базовую версию Python, это не проблема, но когда вы хотите работать в другой версии, вам нужно убедиться, что вы не добавляете ссылку «удобство», чтобы python3 использовал вашу новую версию.