8.52.1. Python 3 のインストール
Python をコンパイルするための準備をします。
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--enable-optimizations
configure オプションの意味
-
--with-system-expat
-
本スイッチは、システムにインストールされている Expat をリンクすることを指示します。
-
--enable-optimizations
-
本スイッチは、拡張的ではあるものの高くつく最適化を有効にします。 インタープリターは二度ビルドされます。 そこでは 1
回めのビルドにて実施されるテストを用いて、最適化された最終バージョンが適正化されます。
パッケージをコンパイルします。
make
テストの中には不安定でありハングするものがあります。 そういったものをテストする場合は、各テストケースにおいて 2
分以内の制限をかけてテストスイートを実行してください。
make test TESTOPTS="--timeout 120"
比較的遅いシステムの場合は、その時間制限を増やせば 1 SBU (1 コアを使った Binutils 1 回目のビルド時間)
で処理できるはずです。 テストの中には一風変わったものがあって、自動的に再実行された上で失敗するものがあります。
一度失敗して再実行の際に成功したものは、テストが成功したものとみなすことができます。
パッケージをインストールします。
make install
Python 3 プログラムやモジュールをインストールする際には、全ユーザー向けのインストールを行うために root
ユーザーになって pip3 コマンドを用いています。 このことは Python
開発者が推奨している、仮想環境内にて一般ユーザーにより(そのユーザーが pip3
を実行することで)パッケージビルドを行う方法とは相容れないものです。 これを行っているため、root
ユーザーとして pip3 を用いると、警告メッセージが複数出力されます。
開発者がなぜその方法を推奨しているかというと、システムパッケージマネージャー(たとえば dpkg)などと衝突が発生するからです。 LFS
ではシステムワイドなパッケージマネージャーを利用していないため、このことは問題となりません。 また pip3
そのものが、自分の最新版が存在していないかどうかを実行時に確認します。 LFS の chroot
環境においては、ドメイン名解決がまだ設定されていないので、最新版の確認は失敗して警告が出力されます。
LFS システムを再起動してネットワーク設定を行えば、(最新版の入手可能時にはいつでも)あらかじめビルドされていた wheel を
PyPI から更新するような警告メッセージが示されます。 もっとも LFS では pip3 を Python 3
の一部として考えるので、個別に更新しないでください。 したがってあらかじめビルドされた wheel を更新することは、ソースコードから
Linux システムをビルドするという目的から逸脱してしまいます。 このことから、pip3 の最新版を求める警告は無視してください。
警告メッセージを省略したい場合は、以下のコマンドを実行します。 ここでは設定ファイルを生成します。
cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
重要
LFS や BLFS においては通常、Python モジュールのビルドとインストールには pip3 コマンドを用いています。
この両ブックにおいて実行する pip3
install コマンドは、(Python 仮想環境内でない場合には) root
ユーザーで実行するようにしてください。 root
ユーザー以外によって pip3 install
を実行しても問題なく動作するように見えるかもしれませんが、インストールしたモジュールが別のユーザーからはアクセスできない事態を作り出してしまいます。
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
ドキュメント install コマンドの意味
-
--no-same-owner
(tar) と --no-preserve=mode
(cp)
-
インストールするファイルの所有者とパーミッションを適切に設定します。 このオプションがないと tar
によって展開されるファイルは、アップストリームが作り出した値になってしまい、またファイルのパーミッションが限定的になることがあります。