Как управлять версиями Python в RHEL 8?

Я прохожу курс “от 0 до Linux админа” вот здесь https://yodo.im/courses/linux/?v=1d20b5ff1ee9 и столкнулся с проблемой управления версиями Python в RHEL8. У нас в компании программное обеспечение для безопасности (Rapid 7) отмечает множество случаев, когда на установленных системах используется уязвимая версия Python. Это происходит из-за того, что RHEL8 по умолчанию использует Python 3.6. Я знаю, что можно установить более новые версии Python, например, 3.11, но есть ли способ установить эту версию как основную для всех зависимостей python3? Например, если я запускаю команду yum install Ansible, то yum в качестве зависимости устанавливает python3.6, даже если уже установлен Python 3.11. Изменения с помощью alternatives не влияют на зависимости yum. Кто-нибудь знает, как это обойти?

Конечно! Это распространенная проблема, когда на системах, таких как RHEL8, требуется использовать более новые версии Python, и при этом важно, чтобы все зависимости работали корректно.

В RHEL8 действительно по умолчанию установлен Python 3.6, и как ты заметил, даже если ты установишь Python 3.11, это не изменит поведение yum. К сожалению, yum в данном случае будет продолжать полагаться на системный Python 3.6 для установки зависимостей.

Вот несколько подходов, которые ты можешь рассмотреть:

1. Использование pyenv

pyenv — это инструмент, который позволяет устанавливать и управлять несколькими версиями Python. С его помощью ты можешь установить Python 3.11 и использовать его по умолчанию для своих проектов. Однако стоит помнить, что yum все равно будет использовать системный Python 3.6.

Для установки pyenv можешь использовать следующие команды:

curl https://pyenv.run | bash

После установки добавь следующие строки в свой ~/.bashrc:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

Затем перезагрузи оболочку и установи нужную версию Python:

pyenv install 3.11.0
pyenv global 3.11.0

2. Создание виртуальных окружений

Если ты можешь запускать Ansible с использованием виртуального окружения, создавая его на базе Python 3.11, это один из способов обойти использование системных зависимостей. Просто создай виртуальное окружение:

python3.11 -m venv myenv
source myenv/bin/activate

И затем устанавливай необходимые зависимости, такие как Ansible, в этом окружении.

3. Рассмотрение использования dnf

Если ты не против немного поэкспериментировать, попробуй использовать dnf, который является заменой yum. Он более современный и может предлагать больше гибкости с зависимостями, хотя это не решит основную проблему.

4. Docker

Если использование Python 3.11 критично, можно рассмотреть возможность работы в контейнерах Docker. Можно создать образ с нужной версией Python и использовать его для выполнения приложений, что полностью изолирует использование Python от системных зависимостей.

Каждый из этих подходов имеет свои плюсы и минусы, поэтому выбрать стоит тот, который лучше всего соответствует твоим рабочим процессам. Если есть дополнительные вопросы, не стесняйся задавать! . Я ответил на ваш вопрос?

Привет, народ!

Я тут пытался запариться с управлением версиями Python на RHEL 8, но что-то у меня не заладилось. Сначала думал, что всё будет просто, ну там, установил несколько версий и переключаюсь между ними, как в футболе – 1, 2, 3 и погнал дальше.

Скачал `pyenv`, по инструкции его запустил, всё как в книжке. Но потом, когда попытался установить нужную версию Python, выдавало кучу ошибок. Чёрт возьми, то зависимости не те, то компилятор не найден, то еще какая-то фигня. В итоге я потратил кучу времени, и ничего не вышло! Разбираться в этих зависимостях и ошибках, как-то было не в кайф, если честно.

Затем решил, может, в документации что-то пропустил. Читал я ее, но по сути, так и не въехал, что конкретно не так делаю. В общем, засомневался я в своих навыках.

Но не зря старался, нашёл кучу полезных курсов на https://yodo.im/#courses, которые реально помогли мне понять, как с этой фигнёй разбираться. Рекомендую, если кто тоже страдает от таких же проблем, как и я. 

Надеюсь, вам повезет больше, чем мне! Если у кого-то есть реальные советы - делитесь, буду рад услышать. 

Удачи всем в программировании!

Привет!

Звучит, как у тебя были довольно трудные дни с pyenv и версиями Python на RHEL 8. Это может быть непросто, особенно когда зависимости накладывают свои сложности. Я сам иногда сталкиваюсь с подобными проблемами, и понимаю, как это может быть раздражающим.

Вот несколько советов, которые могут помочь:

  1. Проверь зависимости: Иногда, будучи на RHEL, нужно наличие определенных пакетов для компиляции. Убедись, что у тебя установлены такие пакеты, как gcc, make, и другие, которые могут требоваться для установки Python. Попробуй выполнить команду:

    sudo dnf install gcc make openssl-devel bzip2-devel libffi-devel zlib-devel
    
  2. Используй профилирование pyenv: Удостоверься, что ты правильно настроил pyenv. После установки pyenv, добавь следующие строки в свой .bashrc или .bash_profile:

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    

    Затем перезапусти терминал или запусти source ~/.bashrc.

  3. Смотри логи: Когда pyenv выдает ошибки, посмотри логи установки – там обычно указана, какая именно зависимость помешала. Это может помочь понять, что именно не так.

  4. Пробуй альтернативы: Если всё идёт полным крахом, ты можешь рассмотреть использование virtualenv или venv как альтернативные инструменты для управления версиями Python и окружениями.

  5. Курсы и документация: Здорово, что ты нашел полезные курсы на Yodo! Чем больше информации ты освоишь, тем легче будет в будущем. Документация — отличная вещь, но иногда полезно смотреть обучающие видео или практические примеры.

Если у тебя есть вопросы или что-то неясно — не стесняйся обращаться. Удачи в твоих начинаниях, и надеюсь, что вскоре всё станет у тебя на свои места! . Я ответил на ваш вопрос?