альтернативы обновления не работают из-за/usr/local/bin приоритета

Я имею сталкивающийся с проблемой это, когда я ищу нужную версию Python I каждых раз, найденных python 3.7:

python3 --version
    Python 3.7.0

Затем я проверил конфигурацию альтернатив обновления:

sudo update-alternatives --config python3
There are 3 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                                        Priority   Status
------------------------------------------------------------
  0            /usr/local/bin/python3.7                     2         auto mode
  1            /<HOME_DIR>/Software/anaconda3/bin/python3   1         manual mode
* 2            /usr/bin/python3.6                           1         manual mode
  3            /usr/local/bin/python3.7                     2         manual mode

Затем я проверил местоположение python3:

which python3
/usr/local/bin/python3

Затем я проверил ПУТЬ:

echo $PATH
/usr/lib/x86_64-linux-gnu/dbus-1.0/include:/usr/local/lib/boost/include:/<HOME_DIR>/bin:/<HOME_DIR>/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/<HOME_DIR>/.dotnet/tools

Оказывается, что python3 нашел в/usr/local/bin перед поиском в/usr/bin

Почему альтернативы обновления не создали ссылку в/usr/local/bin для поддержания для надлежащего поиска приложения?

Я не хочу удалять python3 из/usr/local/bin, но в этом случае альтернативы обновления становятся бесполезными

Как зафиксировать его, что альтернативы обновления создают ссылки также в/usr/local/bin?

0
задан 22 September 2018 в 06:12

1 ответ

Отвечать на Ваш первый вопрос

Почему альтернативы обновления не создали ссылку в/usr/local/bin для поддержания для надлежащего поиска приложения?

Это просто потому что alternatives для python3 настроен в данный момент для создания символьной ссылки в/usr/bin. От Вашего вывода выше:

sudo update-alternatives --config python3
There are 3 choices for the alternative python3 (providing /usr/bin/python3).
...

Это довольно нормальный, чтобы любой дистрибутив Linux искал/usr/local/bin прежде/usr/bin для исполняемых файлов, поскольку это дает Вам свободу поместить любые двоичные файлы и библиотеки в/usr/local, не вмешиваясь в dpkg пакеты.

Для Вас определенная проблема и от вывода sudo update-alternatives --config python3 Я предполагаю, что/usr/local/bin/python3 является символьной ссылкой на/usr/local/bin/python3.7

root@host:~# ls -l /usr/local/bin/python3
lrwxrwxrwx 1 root root 25 Sep 22 15:36 /usr/local/bin/python3 -> /usr/local/bin/python3.7

Если это так, просто удалите символьную ссылку/usr/local/bin/python3, и необходимо быть в порядке, с тех пор при вызове python3 только/usr/bin/python3 найден, который должен указать на/etc/alternatives/python3, который в свою очередь должен указать на выбранный двоичный файл.
Если/usr/local/bin/python3 не является символьной ссылкой, переименуйте его и настройте update-alternatives соответственно.

В то время как это могло бы сохранить Вас на данный момент, следующее обновление могло бы представить Вашу конфигурацию, бесполезную снова. Символьная ссылка/usr/bin/python3 поставляется с пакетом python3-minimal и путем управления этой ссылкой с update-alternatives символьная связь разорвана от представления python3-minimal пакет. Следующее обновление этого пакета могло решить эту проблему, но затем связь разорвана от представления update-alternatives.

Чтобы прийти обе проблемы, было бы лучше настроить update-alternatives использовать/usr/local/bin/python3 в качестве символьной ссылки, обеспечивающей выбранную версию.
Для этого шаги следующим образом должны добиться цели, включая фиксацию ссылки/usr/bin/python3.

sudo update-alternatives --install /usr/local/bin/python3 python3 /usr/bin/python3.6 2
apt-get install --reinstall python3-minimal
1
ответ дан 27 October 2019 в 10:22

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

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