Всем привет! 🦝 Давайте сегодня попытаемся установить Python 3.12 в операционную систему Astra Linux CE. Да, я понимаю что операционка мертва, но, опыт полученный в процессе установки можно применить и для других дистрибутивов Linux.
🌊вВодная часть
В официальных репозиториях Astra Linux CE последняя доступная версия Python это 3.7.3. В целом ее достаточно для решения большинства задач. Но а как же оператор match .. case, который появился в Python начиная с версии 3.10? Всегда же хочется чтобы было всё, не стоит себе отказывать в удовольствии :)
На момент написания статьи, последняя доступная версия Python - это 3.12.3, её мы и будем устанавливать.
📥Подготовка и загрузка исходных файлов
Давайте создадим папку в домашней директории куда мы с вами будем скачивать исходные файлы Python. Открываем терминал и проверяем где мы находимся командой pwd (print working directory). Далее, как видно на скриншоте я вывел список файлов и каталогов командой ls.
Теперь здесь создадим папку в которую скачаем исходные файлы Python. Для этого воспользуемся командой mkdir:
mkdir <название_папки>
Вместо название_папки, пишете имя папки, которую хотите создать. У меня это папка python. Далее переходим в эту папку с помощью команды cd (change direcory)
Для начала давайте скачаем исходные файлы с официального сайта. Тут можно пойти несколькими путями. Первый - это скачать исходные файлы со страницы загрузок. И для загрузки выбрать Gzipped архив.
Второй - это воспользоваться встроенной в Linux утилитой wget для загрузки файлов из интернета, я выбрал второй путь, так как терминал это удобно. Пишем в нем команду:
wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
Данная команда загрузит архив исходных файлов Python в директорию в которой вы находитесь.
👨💻Установка Python из исходников
Перед сборкой и последующей установкой Python из исходников, необходимо установить свежую версию OpenSSL в систему, как это сделать, я рассказал в одной из своих статей.
После загрузки архива с исходными файлами, его необходимо распаковать. Для этого воспользуемся встроенной утилитой tar (Tape Archive). Вводим команду
sudo tar xzf Python-3.12.3.tgz
Стоить немного уточнить, что такое xzf. Это опции, которые указывают утилите tar, какие действия нужно выполнять, а именно:
- x - Извлечь файлы из архива
- z - Использовать gzip для распаковки
- f - Определяет имя файла, с которым будет работать tar
После успешного извлечения, появиться папка с таким же названием как и у загруженного ранее архива, переходим в эту папку уже известной нам командой cd
cd Python-3.12.3
И если перейдя в папку проверить в терминале её содержимое командой ls мы увидим список исходных файлов Python.
Далее начинается самое интересное. Нам необходимо подготовить систему для сборки Python из исходников. Рекомендую перед установкой пакетов, если вы используете Astra Linux CE, добавить репозитории Debian.
Давайте установим в систему все необходимые для сборки пакеты:
sudo apt install build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb-dev libdb++-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev libffi-dev
После установки необходимых для сборки пакетов, давайте сконфигурируем исходники Python для дальнейшей сборки. Для этого в папке с исходниками выполняем команду:
sudo ./configure --enable-optimizations --with-openssl=/<путь_до_библиотек_ssl> --with-openssl-rpath=auto --prefix=$HOME/python3.12
Давайте разберем, что за флаги я указал в этой команде:
- enable-optimizations - этот флаг указывает, что необходимо включить оптимизации при компиляции программного обеспечения, чтобы повысить его производительность;
- prefix - Этот флаг указывает корневую директорию, в которой будут установлены файлы, в данном случае я буду устанавливать Python в домашнюю директорию.
- with-openssl - этот флаг указывает путь к библиотеке OpenSSL, которая будет использована при компиляции и установке программного обеспечения.
Немного про саму команду configure. Эта команда выполняет скрипт, который обычно используется для настройки параметров перед сборкой программного обеспечения из исходного кода. Он проверяет зависимости, определяет оптимальные параметры конфигурации и готовит среду для последующей установки.
Дополнения про openssl (это корень зла при установке Python из исходников в Astra Linux). У меня путь до библиотек OpenSSL это $HOME/openssl_dist.
Соответственно при конфигурации установки я указал путь до папки openssl_dist. Главное для Python установить OpenSSL версии 1.1.1. Версии новее, например 3.3.0 не подходят для конфигурации установщика Python. Почему так? Если бы я знал, если у вас есть идеи - пишите в комментарии. А так получается снова сработала тактика "старых версий".
sudo ./configure --enable-optimizations --with-openssl=/home/enotik/openssl_dist --with-openssl-rpath=auto --prefix=$HOME/python3.12
После недолгого процесса конфигурирования, запускаем процесс сборки, вот он будет весьма долгим. Но, его можно немного ускорить, указав количество задействованных в сборке потоков.
sudo make -j 4
Здесь флаг -j 4 указывает на количество потоков, которые будут использованы для ускорения процесса сборки. Вы можете изменить это число в зависимости от вашего оборудования.
Далее приступаем к установке. Вводим следующую команду в терминале:
sudo make install
Далее чтобы Python работал из терминала, нам нужно добавить путь к исполняемому файлу в переменные среды PATH. Это можно сделать выполнив команду в терминале:
export PATH="<путь_к_python>/bin:$PATH"
Путь_к_python в моем случае это тот путь который я указывал во флаге prefix, при конфигурации установщика.
🖥️Проверка работы
Далее давайте проверим работоспособность Python.
Ну а теперь самое аппетитное, то ради чего было столько плясок вокруг OpenSSL. Давайте попробуем установить какой-нибудь модуль через pip, например numpy. Просто если бы при конфигурации установки Python не удалось бы собрать модули SSL, то pip напрочь отказывался бы работать.
Установка numpy прошла успешно. PIP работает. Давайте чтобы удостовериться в полной работоспособности, попробуем создать виртуальное окружение.
Даже виртуальное окружение создалось! Отлично, кажется у нас получилось установить Python из исходников в Astra Linux.
Работоспособность виртуального окружения дополнительно подтверждаю скриншотом из VS Code.
Кстати как установить VS Code в Astra Linux, я писал в одной из своих статей.