Установите дополнительный Python на OpenSUSE (без повреждения существующих Python)

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

Ситуация

В нашей компании есть внутренний сервер

  • OpenSUSE Leap 15.5
  • Python 3.6(.15)
  • Python 2.7(.18)

Смотрите детали для получения дополнительной информации

Задача

Так как Python 3.6 уже достиг конца поддержки, мы хотим установить более новую версию Python (3.10 или 3.11).
В целях избежания поломок я хотел бы

  1. установить новый python параллельно
  2. установить его дополнительно (не заменяя и не нарушая работу существующих установок или алиасов)
  3. иметь к нему доступ откуда угодно (скрипты)

Так как этот сервер жизненно важен для нашего процесса разработки, я хотел бы выбрать наименьший риск.

Вопросы

  1. Насколько рискованно устанавливать другой python с точки зрения стабильности системы, других установок python и бинарного файла/символической ссылки “python”?
  2. Как мне установить python с наименьшим риском?

Детали

***:~> cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.5"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.5"
PRETTY_NAME="openSUSE Leap 15.5"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.5"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"

***:~> zypper info python
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python
Version        : 2.7.18-150000.51.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 1.4 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python-2.7.18-150000.51.1.src
Upstream URL   : https://www.python.org/
Summary        : Python Interpreter
...

***:~> zypper info python3
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python3
Version        : 3.6.15-150300.10.48.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 141.3 KiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python3-3.6.15-150300.10.48.1.src
Upstream URL   : https://www.python.org/
Summary        : Python 3 Interpreter
....

Это решение предназначено только для openSUSE. Хотя вы также можете использовать его для сервера SUSE Linux Enterprise, в настоящее время это не поддерживается. Используйте на свой страх и риск!

Вы можете попробовать pyenv, который позволяет использовать различные версии Python для конкретного пользователя. Я использую его уже много месяцев и вполне доволен.

Не уверен, разрешено ли это вашими политиками. Тем не менее, это решение будет иметь минимальное воздействие или нарушение вашего системы. Вам не нужно изменять свою систему.

Имейте в виду, что это будет работать только для конкретного пользователя. Другие пользователи не увидят это изменение и не будут затронуты. Это может быть как преимуществом, так и недостатком.

Подготовка системы

Прежде чем вы сможете использовать конкретную версию Python, вам нужно установить и настроить pyenv.

Действуйте следующим образом:

  1. Интегрируйте репозиторий devel:languages:python:backports в вашу систему.

  2. Установите пакет pyenv:

     $ sudo zypper install --details pyenv
    
  3. Установите следующие пакеты разработчиков, которые необходимы для сборки Python:

     $ sudo zypper install -y gcc automake bzip2 libbz2-devel \
       xz xz-devel openssl-devel ncurses-devel readline-devel \
       zlib-devel tk-devel libffi-devel sqlite3-devel \
       gdbm-devel make findutils patch
    
  4. Добавьте следующие строки в ваш файл ~/.bashrc:

     echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
     echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
     echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    

    Если вы используете другую оболочку, обратитесь к https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv

  5. Перезапустите вашу оболочку с помощью exec $SHELL или закройте консоль и откройте новую.

Установка другой версии Python

Теперь ваша система готова. Команда pyenv загружает запрашиваемую версию, компилирует ее и сохраняет в директории ~/.pyenv/versions/. Как только это будет сделано, вы можете использовать вашу новую версию Python в оболочке.

Чтобы установить конкретную версию Python, действуйте следующим образом:

  1. Установите версию Python, например 3.11:

     $ pyenv install 3.11
    
  2. Установите эту версию для вашего конкретного пользователя:

     $ pyenv global 3.11
    

    Если вы хотите ограничить ее только текущими директориями, используйте:

     $ pyenv local 3.11
    
  3. Проверьте, чтобы pip3 ссылался на локальную установку:

     $ pip3.11 --version
     pip 23.1.2 из /home/tux/.pyenv/versions/3.11.4/lib/python3.11/site-packages/pip (python 3.11)
    

    Вы должны увидеть директорию, которая указывает на пользователя, а не начинающуюся с /usr/.

После подготовки вашей системы pyenv позволяет установить любую библиотеку Python в вашу локальную установку. Например:

$ pip3.11 install <БИБЛИОТЕКА>

Заключительные замечания

Имейте в виду, что этот метод обходит систему RPM и zypper. Вы не получите от них никаких обновлений. Тем не менее, если вам нужна более новая версия Python, вам нужно обновить пакет pyenv, чтобы получить доступ к последним версиям.

Кроме того, вам следует быть осторожным с версиями Python, поступающими из RPM. Вы можете запутаться, так как есть похожие названия (pip3.11 и pip3-3.11).

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

Установка дополнительной версии Python на OpenSUSE без нарушения работоспособности существующих интерпретаторов

Ситуация

Ваша компания использует сервер на базе OpenSUSE Leap 15.5, на котором уже установлены Python 3.6 и Python 2.7. Поскольку Python 3.6 больше не поддерживается, возникла необходимость установить более новую версию Python (3.10 или 3.11) с минимальными рисками для системы и существующих установок.

Задача

Для достижения поставленной цели необходимо:

  1. Установить новую версию Python параллельно с существующими.
  2. Убедиться, что новая версия не заменяет и не нарушает работу имеющихся интерпретаторов.
  3. Обеспечить доступность новой версии Python из любых мест (например, для сценариев).

Вопросы

  1. Каков риск установки новой версии Python относительно стабильности системы и существующих установок?
  2. Как установить Python с минимальными рисками?

Анализ рисков

Установка новой версии Python может повлиять на систему, если она заменяет стандартные или системные пакеты, используемые другими программами. Учитывая, что OpenSUSE использует систему управления пакетами RPM, важно избегать воздействия на системные библиотеки. Установка через pyenv — это решение, которое с минимальными рисками позволяет использовать несколько версий Python, так как pyenv устанавливает интерпретатор в пользовательскую директорию, не нарушая системную конфигурацию.

Рекомендации по установке

Для установки новой версии Python в безопасном режиме, следуйте этим шагам:

1. Подготовка системы

  • Добавление репозитория: Сначала добавьте репозиторий devel:languages:python:backports.

    sudo zypper addrepo https://download.opensuse.org/repositories/devel:languages:python:backports/openSUSE_Leap_15.5/devel:languages:python:backports.repo
    sudo zypper refresh
  • Установка pyenv:

    sudo zypper install pyenv
  • Установка зависимостей для сборки Python:

    sudo zypper install -y gcc automake bzip2 libbz2-devel xz xz-devel openssl-devel ncurses-devel readline-devel zlib-devel tk-devel libffi-devel sqlite3-devel gdbm-devel make findutils patch
  • Настройка окружения: Добавьте следующие строки в файл ~/.bashrc:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc
  • Перезапустите терминал или выполните:

    exec $SHELL

2. Установка новой версии Python

После завершения вышеописанных действий вы можете установить новую версию Python:

  • Установка Python 3.11:

    pyenv install 3.11.4
  • Установка глобальной версии Python для текущего пользователя:

    pyenv global 3.11.4
  • Проверка установки:
    Убедитесь, что pip ссылается на нужную версию:

    pip --version

Заключительные замечания

Использование pyenv позволяет установить новую версию Python без вмешательства в систему и существующие версии, что минимизирует риски. Однако, имейте в виду, что обновления для Python, установленных через pyenv, не будут управляться менеджером пакетов zypper. Будьте внимательны к разным версиям pip и используйте pip соответствующей версии Python.

Следуя этим рекомендациям, вы сможете успешно установить новую версию Python, обеспечив стабильность вашей системы и оставив существующие версии функциональными.

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

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