python3 сломан на Ubuntu 20.04, и я не могу его починить.

Вопрос или проблема

Я каким-то образом испортил окружение python3 в своем Ubuntu 20.04 (обновил с 19.10). Не знаю, как это конкретно произошло, но после перезагрузки я не могу больше запустить gnome-terminal. Обратите внимание, что до сих пор он работал вполне нормально с момента обновления примерно 2 недели назад.

Я подозреваю, что это могло быть связано с ошибочной командой chmod, которую я выполнил с sudo перед перезагрузкой ноутбука. Хотя я не на 100% уверен, потому что выполнял эту команду chmod внутри папки программного проекта (чтобы исправить права доступа), и мне действительно нужно было сильно испортить команду, чтобы причинить этот ущерб.

Сейчас я не могу установить python3, чтобы исправить систему, и не могу обновить/переустановить его в системе (чтобы, возможно, исправить права доступа пакета python3), потому что все зависит от python3.

Вот что я пробовал до сих пор:

Запуская gnome-terminal из XTerm, я получаю эту ошибку:

root@ierbert2:/home/micha# gnome-terminal
bash: /usr/bin/gnome-terminal: /usr/bin/python3: bad interpreter: Permission denied

ll /usr/bin/python* возвращает:

root@/****:/home/****# ll /usr/bin/python*
lrwxrwxrwx 1 root root       7 Apr 15 12:45 /usr/bin/python -> python2*
lrwxrwxrwx 1 root root       9 Mär 13 13:31 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3694632 Apr  7 14:05 /usr/bin/python2.7*
lrwxrwxrwx 1 root root       9 Mär 13 13:20 /usr/bin/python3 -> python3.8
-rw-rw-r-- 1 root root 5457536 Apr 27 17:53 /usr/bin/python3.8
lrwxrwxrwx 1 root root      33 Apr 27 17:53 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config*
lrwxrwxrwx 1 root root      16 Mär 13 13:20 /usr/bin/python3-config -> python3.8-config*
-rwxr-xr-x 1 root root     384 Mär 28 03:39 /usr/bin/python3-futurize*
-rwxr-xr-x 1 root root     388 Mär 28 03:39 /usr/bin/python3-pasteurize*
-rwxr-xr-x 1 root root     152 Apr  9 21:32 /usr/bin/python3-pbr*
-rwxr-xr-x 1 root root     384 Dez 17 13:47 /usr/bin/python3-unit2*
lrwxrwxrwx 1 root root      58 Feb 18 02:49 /usr/bin/pythontex -> ../share/texlive/texmf-dist/scripts/pythontex/pythontex.py*

Я пытался переустановить пакет python3 с помощью apt-get и dpkg, но оба метода не удались:

Используя опцию apt-get install:

root@******:/home/****# sudo apt-get install python3
Чтение списков пакетов... Готово
Сборка дерева зависимостей       
Чтение состояния информации... Готово
python3 уже является новейшей версией (3.8.2-0ubuntu2).
0 обновлено, 0 ново установленного, 0 для удаления и 8 не обновлено.
1 не полностью установлен или удален.
Необходимо скачать 0 B/47,6 kB архивов.
После этой операции используется 0 B дополнительного дискового пространства.
Вы хотите продолжить? [Y/n] Y
dpkg: ошибка при настройке пакета python3 (--configure):
 пакет находится в очень плохом непоследовательном состоянии; вам следует
 переустановить его перед попыткой настройки
При обработке возникли ошибки:
 python3
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Используя опцию apt-get install --reinstall:

root@******:/home/****# sudo apt-get install --reinstall python3
Чтение списков пакетов... Готово
Сборка дерева зависимостей       
Чтение состояния информации... Готово
0 обновлено, 0 ново установленного, 1 переустановлено, 0 для удаления и 8 не обновлено.
1 не полностью установлен или удален.
Необходимо скачать 0 B/47,6 kB архивов.
После этой операции используется 0 B дополнительного дискового пространства.
(Чтение базы данных ... 325889 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке .../python3_3.8.2-0ubuntu2_amd64.deb ...
/var/lib/dpkg/info/python3.prerm: 5: py3clean: Permission denied
dpkg: предупреждение: старый предвосхищающий скрипт пакета python3 вернул код ошибки 126
dpkg: вместо этого пытается запустить скрипт из нового пакета ...
/var/lib/dpkg/tmp.ci/prerm: 5: py3clean: Permission denied
dpkg: ошибка при обработке архива /var/cache/apt/archives/python3_3.8.2-0ubuntu2_amd64.deb (--unpack):
 новый предвосхищающий скрипт пакета python3 вернул код ошибки 126
/var/lib/dpkg/info/python3.postinst: 47: py3compile: Permission denied
dpkg: ошибка при очистке:
 установленный пакет python3 вернул код ошибки 126
При обработке возникли ошибки:
 /var/cache/apt/archives/python3_3.8.2-0ubuntu2_amd64.deb
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Используя dpkg:

root@****:/home/****# dpkg -i /var/cache/apt/archives/python3_3.8.2-0ubuntu2_amd64.deb 
(Чтение базы данных ... 325889 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке .../python3_3.8.2-0ubuntu2_amd64.deb ...
/var/lib/dpkg/info/python3.prerm: 5: py3clean: Permission denied
dpkg: предупреждение: старый предвосхищающий скрипт пакета python3 вернул код ошибки 126
dpkg: вместо этого пытается запустить скрипт из нового пакета ...
/var/lib/dpkg/tmp.ci/prerm: 5: py3clean: Permission denied
dpkg: ошибка при обработке архива /var/cache/apt/archives/python3_3.8.2-0ubuntu2_amd64.deb (--install):
 новый предвосхищающий скрипт пакета python3 вернул код ошибки 126
/var/lib/dpkg/info/python3.postinst: 47: py3compile: Permission denied
dpkg: ошибка при очистке:
 установленный пакет python3 вернул код ошибки 126
При обработке возникли ошибки:
 /var/cache/apt/archives/python3_3.8.2-0ubuntu2_amd64.deb

Я нашел ошибку. Почему-то /usr/bin/python3.8 потерял бит выполнения (вероятно, из-за того, что я испортил команду; это был длинный день). Я исправил это, выполнив:

sudo chmod +x /usr/bin/python3.8

Ответ или решение

Решение проблемы с Python3 на Ubuntu 20.04

Если вы столкнулись с проблемой, когда не можете запустить gnome-terminal из-за ошибки «bad interpreter: Permission denied», это может быть связано с тем, что исполняемый файл Python3 потерял права на выполнение. Ваша ситуация также указывает на то, что возможно, вы случайно изменили разрешения на исполняемые файлы Python.

Подход к решению проблемы

Исходя из вашего описания, вот пошаговое руководство по восстановлению исправной работы Python3 на Ubuntu 20.04:

  1. Проверьте разрешения для Python3.8:
    Чтобы убедиться, что проблема действительно в разрешениях, выполните следующую команду:

    ls -l /usr/bin/python3.8

    Убедитесь, что у файла есть права на выполнение (x). Ожидаемое значение представлено следующим образом:

    -rwxr-xr-x 1 root root 5457536 апр  27 17:53 /usr/bin/python3.8

    Если третья буква в первом столбце - (что означает нет прав на выполнение для владельца), это основная причина проблемы.

  2. Восстановление прав на выполнение:
    Если разрещение действительно потеряно, вы можете восстановить его с помощью команды:

    sudo chmod +x /usr/bin/python3.8
  3. Проверка работоспособности:
    После изменения прав попробуйте снова запустить gnome-terminal:

    gnome-terminal

    Если все прошло успешно, терминал должен открыться без ошибок.

  4. Переустановка Python3, если проблема не решена:
    Если после выполнения предыдущих шагов ошибка все еще присутствует, возможно, придется переустановить Python. Однако, как вы упомянули, при попытке переустановить Python3 у вас возникали ошибки. Эта ситуация может требовать особого внимания к скриптам, связанным с установкой. Попробуйте выполнить следующие команды:

    sudo apt-get clean
    sudo apt-get update
    sudo apt-get install --reinstall python3
  5. Восстановление из Live CD (в редких случаях):
    Если ничего не помогает, возможно, стоит рассмотреть возможность загрузки системы с Live CD/USB. Это поможет получить доступ к файловой системе и выполнить команды в chroot окружении для исправления ошибок.

  6. Проверка и восстановление других зависимостей:
    Ваша система может также страдать от других проблем с разрешениями. Рекомендуется проверить права на другие критически важные файлы и директории:

    sudo chmod -R u+rwX,go-w /usr/lib/python3/dist-packages

Заключение

Проблемы с Python в Ubuntu могут быть вызваны некорректными изменениями прав. Аккуратное восстановление прав, переустановка пакета и тщательная проверка системы помогут решить большинство проблем. Если даже после всех шагов ситуация не улучшается, можете обратиться к сообществу Ubuntu или профессиональным IT-специалистам для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...