diff options
Diffstat (limited to 'lfs-12.2-sysv/chapter08/Python.html')
-rw-r--r-- | lfs-12.2-sysv/chapter08/Python.html | 395 |
1 files changed, 395 insertions, 0 deletions
diff --git a/lfs-12.2-sysv/chapter08/Python.html b/lfs-12.2-sysv/chapter08/Python.html new file mode 100644 index 0000000..c85ec03 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/Python.html @@ -0,0 +1,395 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <title> + 8.52. Python-3.12.5 + </title> + <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> + <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> + <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= + "text/css" media="print" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + </head> + <body class="lfs" id="lfs-12.2"> + <div class="navheader"> + <h4> + Линукс с нуля - Версия 12.2 + </h4> + <h3> + Глава 8. Установка базового системного программного обеспечения + </h3> + <ul> + <li class="prev"> + <a accesskey="p" href="libffi.html" title="Libffi-3.4.6">Пред.</a> + <p> + Libffi-3.4.6 + </p> + </li> + <li class="next"> + <a accesskey="n" href="flit-core.html" title= + "Flit-Core-3.9.0">След.</a> + <p> + Flit-Core-3.9.0 + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + <h1 class="sect1"> + <a id="ch-system-Python" name="ch-system-Python"></a>8.52. + Python-3.12.5 + </h1> + <div class="wrap" lang="ru" xml:lang="ru"> + <div class="package" lang="ru" xml:lang="ru"> + <p> + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и разработка + целых приложений. Python — это интерпретируемый язык + программирования. + </p> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Приблизительное время сборки:</strong> + <span class="segbody">2.2 SBU</span> + </div> + <div class="seg"> + <strong class="segtitle">Требуемое дисковое + пространство:</strong> <span class="segbody">530 MB</span> + </div> + </div> + </div> + </div> + <div class="installation" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + 8.52.1. Установка пакета Python 3 + </h2> + <p> + Подготовьте Python к компиляции: + </p> + <pre class="userinput"><kbd class= + "command">./configure --prefix=/usr \ + --enable-shared \ + --with-system-expat \ + --enable-optimizations</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение параметров настройки:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><em class= + "parameter"><code>--with-system-expat</code></em></span> + </dt> + <dd> + <p> + Этот параметр выполняет линковку с системной версией + <span class="application">Expat</span>. + </p> + </dd> + <dt> + <span class="term"><em class= + "parameter"><code>--enable-optimizations</code></em></span> + </dt> + <dd> + <p> + Этот параметр позволяет выполнить обширные, но отнимающие + много времени, действия по оптимизации. Интерпретатор + собирается дважды; тесты, выполненные при первой сборке, + используются для улучшения финальной версии. + </p> + </dd> + </dl> + </div> + <p> + Скомпилируйте пакет: + </p> + <pre class="userinput"><kbd class="command">make</kbd></pre> + <p> + Известно, что некоторые тесты <span class= + "command"><strong>Python</strong></span> иногда зависают на + неопределенный срок. Чтобы протестировать пакет, запустите набор + тестов, установив 2-минутный лимит времени для каждого тестового + примера: + </p> + <pre class="userinput"><kbd class= + "command">make test TESTOPTS="--timeout 120"</kbd></pre> + <p> + На медленной системе вам может потребоваться ещё увеличить + ограничение по времени, и 1 SBU (измеряется при сборке Binutils - + Проход 1 с использованием одного ядра ЦП) должно быть достаточно. В + процессе выполнения некоторых тестов бывают сбои, поэтому набор + тестов автоматически перезапускает неудачно завершённые тесты. Если + сначала тест не пройден, но пройден при повторном запуске, его + следует считать пройденным. + </p> + <p> + Установите пакет: + </p> + <pre class="userinput"><kbd class="command">make install</kbd></pre> + <p> + В некоторых местах книги, мы используем команду <span class= + "command"><strong>pip3</strong></span> для установки программ и + модулей Python 3 от имени пользователя <code class= + "systemitem">root</code>. Это противоречит рекомендации + разработчиков Python: устанавливать пакеты в виртуальную среду или + домашний каталог обычного пользователя (путем запуска <span class= + "command"><strong>pip3</strong></span> от имени этого + пользователя). Поэтому всякий раз при использовании <span class= + "command"><strong>pip3</strong></span> от имени пользователя + <code class="systemitem">root</code> появляется многострочное + предупреждение. + </p> + <p> + Основная причина этой рекомендации — избежать конфликта с системным + менеджером пакетов (например, <span class= + "command"><strong>dpkg</strong></span>), но в LFS нет + общесистемного менеджера пакетов, так что это не проблема. Кроме + того, <span class="command"><strong>pip3</strong></span> будет + пытаться проверять наличие новой версии при каждом запуске. + Поскольку разрешение доменных имен в среде chroot LFS еще не + настроено, он не сможет проверить наличие новой версии и выдаст + предупреждение. + </p> + <p> + Как только мы загрузим систему LFS и настроим сетевое подключение, + <span class="command"><strong>pip3</strong></span> выдаст + предупреждение, сообщающее пользователю о необходимости обновить + его с помощью предварительно собранного whl-файла в PyPI (всякий + раз, когда будет доступна новая версия). Но LFS считает + <span class="command"><strong>pip3</strong></span> частью Python3, + поэтому его не следует обновлять отдельно. Кроме того, обновление + из whl-файла не соответствует цели проекта — собрать систему Linux + из исходного кода, поэтому предупреждение о новой версии + <span class="command"><strong>pip3</strong></span> следует + игнорировать. По желанию, вы можете отключить все предупреждение, + создав следующий файл конфигурации: + </p> + <pre class="userinput"><kbd class= + "command">cat > /etc/pip.conf << EOF +<code class="literal">[global] +root-user-action = ignore +disable-pip-version-check = true</code> +EOF +</kbd></pre> + <div class="admon important"> + <img alt="[Важно]" src="../images/important.png" /> + <h3> + Важно + </h3> + <p> + В LFS и BLFS мы собираем и устанавливаем модули Python с помощью + команды <span class="command"><strong>pip3</strong></span>. + Убедитесь, что команда <span class="command"><strong>pip3 + install</strong></span> в обеих книгах запускаются от имени + пользователя <code class="systemitem">root</code> (если только + она не для виртуальной среды Python). Запуск <span class= + "command"><strong>pip3 install</strong></span> от имени + пользователя без полномочий <code class="systemitem">root</code> + может показаться нормальным, но это приведет к тому, что + установленный модуль будет недоступен для других пользователей. + </p> + <p> + Команда <span class="command"><strong>pip3 + install</strong></span> по умолчанию не приведёт к автоматической + переустановке уже установленного модуля. Чтобы использовать + команду <span class="command"><strong>pip3 + install</strong></span> для обновления модуля (например, с + meson-0.61.3 до meson-0.62.0), добавьте параметр <em class= + "parameter"><code>--upgrade</code></em> в командную строку. Если + по какой-то причине необходимо понизить версию модуля или + переустановить ту же версию, используйте параметр <em class= + "parameter"><code>--force-reinstall --no-deps</code></em>. + </p> + </div> + <p> + По желанию установите предварительно отформатированную + документацию: + </p> + <pre class="userinput"><kbd class= + "command">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</kbd></pre> + <div class="variablelist"> + <p class="title"> + <strong>Значение команд установки документации:</strong> + </p> + <dl class="variablelist"> + <dt> + <span class="term"><code class="option">--no-same-owner</code> + (tar) и <code class="option">--no-preserve=mode</code> + (cp)</span> + </dt> + <dd> + <p> + Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + <span class="application">tar</span> без этих параметров + приведет к установке файлов с правами пользователя создавшего + архив и файлы будут иметь ограниченные разрешения. + </p> + </dd> + </dl> + </div> + </div> + <div class="content" lang="ru" xml:lang="ru"> + <h2 class="sect2"> + <a id="contents-python" name="contents-python"></a>8.52.2. + Содержимое пакета Python 3 + </h2> + <div class="segmentedlist"> + <div class="seglistitem"> + <div class="seg"> + <strong class="segtitle">Установленные программы:</strong> + <span class="segbody">2to3, idle3, pip3, pydoc3, python3 и + python3-config</span> + </div> + <div class="seg"> + <strong class="segtitle">Установленные библиотеки:</strong> + <span class="segbody">libpython3.12.so и libpython3.so</span> + </div> + <div class="seg"> + <strong class="segtitle">Созданные каталоги:</strong> + <span class="segbody">/usr/include/python3.12, /usr/lib/python3 + и /usr/share/doc/python-3.12.5</span> + </div> + </div> + </div> + <div class="variablelist"> + <h3> + Краткое описание + </h3> + <table border="0" class="variablelist"> + <colgroup> + <col align="left" valign="top" /> + <col /> + </colgroup> + <tbody> + <tr> + <td> + <p> + <a id="python-2to3" name="python-2to3"></a><span class= + "term"><span class= + "command"><strong>2to3</strong></span></span> + </p> + </td> + <td> + <p> + программа на <span class="application">Python</span>, + которая читает файлы написанные на <span class= + "application">Python 2.x</span>, применяет к ним серию + изменений и переводит их в валидный код <span class= + "application">Python 3.x</span>. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="idle3" name="idle3"></a><span class= + "term"><span class= + "command"><strong>idle3</strong></span></span> + </p> + </td> + <td> + <p> + скрипт-обертка, который открывает графический редактор с + поддержкой <span class="application">Python</span>. Для + запуска этого скрипта, перед установкой Python необходимо + установить <span class="application">Tk</span>, чтобы + модуль Tkinter Python был собран. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pip3" name="pip3"></a><span class= + "term"><span class= + "command"><strong>pip3</strong></span></span> + </p> + </td> + <td> + <p> + Установщик пакетов для Python. Вы можете использовать pip + для установки пакетов из каталога PyPI (Python Package + Index) и других источников. + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="pydoc3" name="pydoc3"></a><span class= + "term"><span class= + "command"><strong>pydoc3</strong></span></span> + </p> + </td> + <td> + <p> + инструмент документации <span class= + "application">Python</span> + </p> + </td> + </tr> + <tr> + <td> + <p> + <a id="python3" name="python3"></a><span class= + "term"><span class= + "command"><strong>python3</strong></span></span> + </p> + </td> + <td> + <p> + это интерпретатор для Python, интерпретируемый, + интерактивный, объектно-ориентированный язык + программирования + </p> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + <div class="navfooter"> + <ul> + <li class="prev"> + <a accesskey="p" href="libffi.html" title="Libffi-3.4.6">Пред.</a> + <p> + Libffi-3.4.6 + </p> + </li> + <li class="next"> + <a accesskey="n" href="flit-core.html" title= + "Flit-Core-3.9.0">След.</a> + <p> + Flit-Core-3.9.0 + </p> + </li> + <li class="up"> + <a accesskey="u" href="chapter08.html" title= + "Глава 8. Установка базового системного программного обеспечения">Наверх</a> + </li> + <li class="home"> + <a accesskey="h" href="../index.html" title= + "Линукс с нуля - Версия 12.2">Начало</a> + </li> + </ul> + </div> + </body> +</html> |