Ошибка при обновлении sudo apt-get; и Termnial не открывается: это вызвало обновление Python?

Я в затруднении :-( Я надеюсь, что кто-нибудь может мне с этим помочь.

У меня (был) отлично работающий 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 до новой версии, почему система так сильно хрипит ??

0
задан 19 November 2020 в 21:52

3 ответа

для записи, пожалуйста, посмотрите мой ответ в Обновлениях 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:~$ 
0
ответ дан 3 January 2021 в 22:48

Начал писать комментарий, но он уже слишком длинный ... :)

В любом случае, Python - довольно важный пакет, так как от него зависит множество базовых пакетов ОС. Удаление или повреждение Python приводит к тому, что другие приложения по существу теряют свои зависимости.

И если эти приложения являются важными системными приложениями, и они были написаны на Python, и ваша отмена заставляет их пропустить модули Python или в новой версии Python есть критические изменения, тогда ад вырвется наружу.

Что касается использования Python 3.8, если он вам действительно нужен (например, вы занимаетесь разработкой), кажется, вам лучше всего использовать его в отдельной среде (виртуальная машина, контейнер) или вам следует по крайней мере, исследование с использованием виртуальных сред Python. Начните с этого:

pip install virtualenv

Что касается краткого списка подходящих репозиториев, это просто ... Репозиторий, который он проходит. Если очень хочешь,вы можете добавить больше.

P.S. Рад, что вам уже удалось это исправить, на самом деле это было довольно быстро. Вы должны опубликовать свой ответ с исправлением, которое вы сделали, для других.

0
ответ дан 3 January 2021 в 22:48

Это классический пример сложной задачи, требующий комплексного решения.

Я просто прошел через то же самое и использовал ваш вопрос/ответ (который я нашел в поиске по загадочной ошибке 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 использовал вашу новую версию.

0
ответ дан 16 December 2021 в 15:40

Другие вопросы по тегам:

Похожие вопросы: