Подробный гайд по развёртыванию среды разработки Python 3.12 на CentOS 7 - Часть 1
Важно:
Поддержка CentOS 7 официально завершена 30.06.2024. Обновлений безопасности больше нет. Если система доступна из интернета, лучше мигрировать на AlmaLinux 8/9, Rocky Linux 8/9, Ubuntu 22.04/24.04 или Debian 12.
Если CentOS 7 нужно оставить по требованию инфраструктуры, лучше использовать изолированный сервер, закрытый сетевой доступ и не размещать на нём публичные сервисы.
1. Что получится в результате
После настройки у вас будет:
- рабочий
yum, переведённый на архивные репозиторииvault.centos.org; - компиляторы и зависимости для сборки Python;
- собственный современный
OpenSSL 1.1.1; - установленный
Python 3.12из исходников; - отдельные виртуальные окружения
venvдля проектов; - обновлённые
pip,setuptools,wheel; - базовые инструменты разработки:
pytest,ruff,black,mypy; - понимание, как подключить проект к VS Code или PyCharm.
В гайде используется путь: сборка Python из исходников. Для CentOS 7 это самый надёжный способ получить актуальный Python 3.
2. Важные принципы для CentOS 7
2.1. Не удаляйте системный Python 2.7
В CentOS 7 системный python — это Python 2.7. Он используется системными утилитами, включая yum.
Не делайте:
sudo rm -f /usr/bin/python
Нежелательно делать:
sudo ln -s /usr/local/bin/python3.12 /usr/bin/python
Лучше использовать отдельные команды:
python3
python3.12
или активировать виртуальное окружение проекта.
2.2. Не устанавливайте пакеты через sudo pip
Плохо:
sudo pip install requests
Правильно:
python3 -m venv .venv
source .venv/bin/activate
pip install requests
2.3. Репозитории нужно перевести на vault.centos.org
После завершения поддержки стандартные зеркала mirror.centos.org больше не работают как источник пакетов.
Нужно использовать архив:
http://vault.centos.org
3. Подготовка пользователя
Рекомендую не разрабатывать под root. Создайте отдельного пользователя.
Например:
sudo useradd -m -s /bin/bash dev
sudo passwd dev
sudo usermod -aG wheel dev
Далее зайдите под пользователем dev:
su - dev
Если sudo не работает, проверьте, что пользователь состоит в группе wheel:
groups
В выводе должна быть группа wheel.
4. Переводим yum на архивные репозитории
Сделайте резервную копию репозиториев:
sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak
Отключите mirrorlist и замените адреса на vault.centos.org:
sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo
sudo sed -i 's|^#baseurl=http://mirror.centos.org/centos|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
sudo sed -i 's|^baseurl=http://mirror.centos.org/centos|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
Очистите кэш и пересоздайте его:
sudo yum clean all
sudo yum makecache
Проверьте:
yum repolist
Если репозитории видны и команды yum install работают, значит замена выполнена успешно.
5. Установка базовых пакетов
Установите необходимые утилиты и компиляторы:
sudo yum groupinstall -y "Development Tools"
sudo yum install -y \
wget \
curl \
ca-certificates \
tar \
which \
git \
sudo \
vim-enhanced
Проверьте:
gcc --version
make --version
git --version
6. Установка зависимостей для сборки Python
Установите библиотеки, чтобы у Python были модули ssl, sqlite3, lzma, bz2, readline, ctypes и другие:
sudo yum install -y \
zlib-devel \
bzip2-devel \
xz-devel \
libffi-devel \
sqlite-devel \
readline-devel \
ncurses-devel \
gdbm-devel \
tk-devel \
libuuid-devel
Если графический интерфейс и tkinter не нужны, tk-devel можно исключить. Но для полноценной сборки лучше оставить.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.