Как сделать `python` псевдонимом` python3` для всей системы в Debian

Sep 17 2020

Последние обновления моей системы тестирования Debian удалили Python версии 2, а у меня установлен только Python 3 с python3. Имя команды больше не существует python. Это приводит к сбою нескольких скриптов, включая скрипты, совместимые с Python 3.

Мне было бы интересно узнать, как правильно настроить глобальный pythonпсевдоним для python3.

Одним из грязных решений было бы вручную сделать что-то подобное sudo ln -s /usr/bin/python{3,}, но я беспокоюсь, что это может быть не надежным для будущих обновлений APT (или при переустановке Python 2 позже). Другой вариант - установить псевдоним, но тогда он будет работать только для моего пользователя, а не для всей системы.

Я также отмечу, что в Ubuntu есть пакет, python-is-python3который делает именно это, но в Debian такого пакета нет.

Ответы

3 StephenKitt Sep 17 2020 at 19:59

Если вы хотите , чтобы придерживаться правила , что все в /usrкроме /usr/localдолжна исходить из пакета, я бы на самом деле загрузить в python-is-python3пакет и установить его. Он отправляет только /usr/bin/pythonсимволическую ссылку и необходимую документацию, и его отношения между пакетами вряд ли вызовут проблемы в будущем.

Псевдоним не поможет с расширениями ваших сценариев, и, учитывая, что пакеты Python не используют альтернативы, создание собственной альтернативы ( update-alternativesи т. Д.) Не будет надежным решением.

Если ваши скрипты используют /usr/bin/env python, вы можете вручную добавить ссылку /usr/local/bin.

Независимо от того, что вы решите сделать, с этого момента Python-зависимые пакеты в Debian должны явно использовать python2или python3в своих шебангах, поэтому вы не столкнетесь с проблемами, вызванными пакетами из официальных репозиториев (в Debian 11 и новее, за исключением пока нестабильно и экспериментально, так как у них все еще есть старые пакеты Python, которые еще не были очищены).

2 a3nm Nov 02 2020 at 22:17

Это выглядит как Debian теперь поставляет питон-на-python3 сами (в ИДС и тестирования на момент написания), поэтому предпосылка вопроса больше не держит , и вы можете просто: sudo apt update && sudo apt install python-is-python3.