summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter08/Python.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.2-sysv/chapter08/Python.html')
-rw-r--r--lfs-12.2-sysv/chapter08/Python.html395
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 &gt; /etc/pip.conf &lt;&lt; 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>