Сборка python из исходного кода без создания символьной ссылки для двоичного файла

#python #build #compilation

#python #сборка #Сборник

Вопрос:

Существует ли опция компиляции для Python, которая предотвратит создание python3 символической ссылки на вновь созданный двоичный файл?

Я пытаюсь собрать и установить несколько версий python в одной системе для использования с системой CI для запуска тестов с использованием нескольких версий python. В частности, Python-3.6.6, Python-3.7.4 и Python-3.8.0.

Процесс сборки и установки приведен ниже (при условии, что исходный код уже загружен и распакован в /usr/src/python ):

 cd /usr/src/python
./configure 
  --prefix=/usr/ 
  --build=x86_64-linux-gnu 
  --enable-loadable-sqlite-extensions 
  --enable-shared 
  --with-system-expat 
  --with-system-ffi 
  --without-ensurepip
make -j "$(nproc)"
make install
  

Когда вышеупомянутый процесс завершен, я получаю встроенный двоичный файл (например, /usr/bin/python3.7 для Python-3.7.8), а также символическую ссылку из /usr/bin/python3 на этот двоичный файл. Какая бы версия python, которую я устанавливаю последней, перезаписывает символическую ссылку для ссылки на себя, независимо от того, с чем она была связана раньше:

Мой вопрос: есть ли флаг, который я могу передать configure скрипту или make, который полностью отключит создание этой символической ссылки? Я могу создать символическую ссылку на двоичный файл, который я хочу использовать как версию python3 по умолчанию, как часть моего собственного процесса установки, поскольку я бы предпочел не полагаться на порядок установки для определения моей версии по умолчанию.

Я просмотрел документацию разработчика python, но не смог найти исчерпывающий список аргументов сборки и документацию о том, что они делают. Это также не моя область знаний, поэтому я не смог найти то, что искал в исходном коде (но если бы кто-нибудь мог указать мне на это, это было бы очень ценно).

Комментарии:

1. Вы ищете make altinstall ?

2. Да, это именно то, что я ищу @DeepSpace. Если вы оставите ответ с этим, я его проверю. Большое вам спасибо!

Ответ №1:

make altinstall сделано именно для этого:

make install может перезаписывать или маскировать двоичный файл python3. make altinstall поэтому рекомендуется вместо make install , поскольку он только устанавливается exec_prefix/bin/pythonversion .