Вопрос или проблема
Я каким-то образом испортил окружение 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:
-
Проверьте разрешения для Python3.8:
Чтобы убедиться, что проблема действительно в разрешениях, выполните следующую команду:ls -l /usr/bin/python3.8
Убедитесь, что у файла есть права на выполнение (x). Ожидаемое значение представлено следующим образом:
-rwxr-xr-x 1 root root 5457536 апр 27 17:53 /usr/bin/python3.8
Если третья буква в первом столбце
-
(что означает нет прав на выполнение для владельца), это основная причина проблемы. -
Восстановление прав на выполнение:
Если разрещение действительно потеряно, вы можете восстановить его с помощью команды:sudo chmod +x /usr/bin/python3.8
-
Проверка работоспособности:
После изменения прав попробуйте снова запустить gnome-terminal:gnome-terminal
Если все прошло успешно, терминал должен открыться без ошибок.
-
Переустановка Python3, если проблема не решена:
Если после выполнения предыдущих шагов ошибка все еще присутствует, возможно, придется переустановить Python. Однако, как вы упомянули, при попытке переустановить Python3 у вас возникали ошибки. Эта ситуация может требовать особого внимания к скриптам, связанным с установкой. Попробуйте выполнить следующие команды:sudo apt-get clean sudo apt-get update sudo apt-get install --reinstall python3
-
Восстановление из Live CD (в редких случаях):
Если ничего не помогает, возможно, стоит рассмотреть возможность загрузки системы с Live CD/USB. Это поможет получить доступ к файловой системе и выполнить команды в chroot окружении для исправления ошибок. -
Проверка и восстановление других зависимостей:
Ваша система может также страдать от других проблем с разрешениями. Рекомендуется проверить права на другие критически важные файлы и директории:sudo chmod -R u+rwX,go-w /usr/lib/python3/dist-packages
Заключение
Проблемы с Python в Ubuntu могут быть вызваны некорректными изменениями прав. Аккуратное восстановление прав, переустановка пакета и тщательная проверка системы помогут решить большинство проблем. Если даже после всех шагов ситуация не улучшается, можете обратиться к сообществу Ubuntu или профессиональным IT-специалистам для получения дополнительной помощи.