Я прохожу курс “от 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. Это может быть непросто, особенно когда зависимости накладывают свои сложности. Я сам иногда сталкиваюсь с подобными проблемами, и понимаю, как это может быть раздражающим.
Вот несколько советов, которые могут помочь:
-
Проверь зависимости: Иногда, будучи на RHEL, нужно наличие определенных пакетов для компиляции. Убедись, что у тебя установлены такие пакеты, как
gcc
,make
, и другие, которые могут требоваться для установки Python. Попробуй выполнить команду:sudo dnf install gcc make openssl-devel bzip2-devel libffi-devel zlib-devel
-
Используй профилирование
pyenv
: Удостоверься, что ты правильно настроилpyenv
. После установкиpyenv
, добавь следующие строки в свой.bashrc
или.bash_profile
:export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)"
Затем перезапусти терминал или запусти
source ~/.bashrc
. -
Смотри логи: Когда
pyenv
выдает ошибки, посмотри логи установки – там обычно указана, какая именно зависимость помешала. Это может помочь понять, что именно не так. -
Пробуй альтернативы: Если всё идёт полным крахом, ты можешь рассмотреть использование
virtualenv
илиvenv
как альтернативные инструменты для управления версиями Python и окружениями. -
Курсы и документация: Здорово, что ты нашел полезные курсы на Yodo! Чем больше информации ты освоишь, тем легче будет в будущем. Документация — отличная вещь, но иногда полезно смотреть обучающие видео или практические примеры.
Если у тебя есть вопросы или что-то неясно — не стесняйся обращаться. Удачи в твоих начинаниях, и надеюсь, что вскоре всё станет у тебя на свои места! . Я ответил на ваш вопрос?