8.53.1. Установка пакета Python 3
        
        
          Подготовьте Python к компиляции:
        
        ./configure --prefix=/usr        \
            --enable-shared      \
            --with-system-expat  \
            --enable-optimizations
        
          
            Значение параметров настройки:
          
          
            - 
              --with-system-expat
- 
              
                Этот параметр выполняет линковку с системной версией
                Expat.
               
- 
              --enable-optimizations
- 
              
                Этот параметр позволяет выполнить обширные, но отнимающие
                много времени, действия по оптимизации. Интерпретатор
                собирается дважды; тесты, выполненные при первой сборке,
                используются для улучшения финальной версии.
               
 
        
          Скомпилируйте пакет:
        
        make
        
          Известно, что некоторые тесты Python иногда зависают на
          неопределенный срок. Чтобы протестировать пакет, запустите набор
          тестов, установив 2-минутный лимит времени для каждого тестового
          примера:
        
        make test TESTOPTS="--timeout 120"
        
          На медленной системе вам может потребоваться ещё увеличить
          ограничение по времени, и 1 SBU (измеряется при сборке Binutils -
          Проход 1 с использованием одного ядра ЦП) должно быть достаточно. В
          процессе выполнения некоторых тестов бывают сбои, поэтому набор
          тестов автоматически перезапускает неудачно завершённые тесты. Если
          сначала тест не пройден, но пройден при повторном запуске, его
          следует считать пройденным.
        
        
          Установите пакет:
        
        make install
        
          В некоторых местах книги, мы используем команду pip3 для установки программ и
          модулей Python 3 от имени пользователя root. Это противоречит рекомендации
          разработчиков Python: устанавливать пакеты в виртуальную среду или
          домашний каталог обычного пользователя (путем запуска pip3 от имени этого
          пользователя). Поэтому всякий раз при использовании pip3 от имени пользователя
          root появляется многострочное
          предупреждение.
        
        
          Основная причина этой рекомендации — избежать конфликта с системным
          менеджером пакетов (например, dpkg), но в LFS нет
          общесистемного менеджера пакетов, так что это не проблема. Кроме
          того, pip3 будет
          пытаться проверять наличие новой версии при каждом запуске.
          Поскольку разрешение доменных имен в среде chroot LFS еще не
          настроено, он не сможет проверить наличие новой версии и выдаст
          предупреждение.
        
        
          Как только мы загрузим систему LFS и настроим сетевое подключение,
          pip3 выдаст
          предупреждение, сообщающее пользователю о необходимости обновить
          его с помощью предварительно собранного whl-файла в PyPI (всякий
          раз, когда будет доступна новая версия). Но LFS считает
          pip3 частью Python3,
          поэтому его не следует обновлять отдельно. Кроме того, обновление
          из whl-файла не соответствует цели проекта — собрать систему Linux
          из исходного кода, поэтому предупреждение о новой версии
          pip3 следует
          игнорировать. По желанию, вы можете отключить все предупреждение,
          создав следующий файл конфигурации:
        
        cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
        
          ![[Важно]](../images/important.png) 
          
            Важно
          
          
            В LFS и BLFS мы собираем и устанавливаем модули Python с помощью
            команды pip3.
            Убедитесь, что команда pip3
            install в обеих книгах запускаются от имени
            пользователя root (если только
            она не для виртуальной среды Python). Запуск pip3 install от имени
            пользователя без полномочий root
            может показаться нормальным, но это приведет к тому, что
            установленный модуль будет недоступен для других пользователей.
          
          
            Команда pip3
            install по умолчанию не приведёт к автоматической
            переустановке уже установленного модуля. Чтобы использовать
            команду pip3
            install для обновления модуля (например, с
            meson-0.61.3 до meson-0.62.0), добавьте параметр --upgrade в командную строку. Если
            по какой-то причине необходимо понизить версию модуля или
            переустановить ту же версию, используйте параметр --force-reinstall --no-deps.
          
         
        
          По желанию установите предварительно отформатированную
          документацию:
        
        install -v -dm755 /usr/share/doc/python-3.12.5/html
tar --no-same-owner \
    -xvf ../python-3.12.5-docs-html.tar.bz2
cp -R --no-preserve=mode python-3.12.5-docs-html/* \
    /usr/share/doc/python-3.12.5/html
        
          
            Значение команд установки документации:
          
          
            - 
              --no-same-owner(tar) и--no-preserve=mode(cp)
- 
              
                Параметры обеспечивают, что установленные файлы имеют
                корректные права и владельца файлов. Использование
                tar без этих параметров
                приведет к установке файлов с правами пользователя создавшего
                архив и файлы будут иметь ограниченные разрешения.