2. Unix プラットフォームで Python を使う
****************************************


2.1. 最新バージョンの Python の取得とインストール
=================================================


2.1.1. Linux
------------

ほとんどの Linux ディストリビューションには Python があらかじめインス
トールされており、それ以外のディストリビューションでもパッケージとして
利用できます。 ただし、使いたい機能がディストリビューションのパッケー
ジでは利用できないこともあります。 最新バージョンの Python はソースか
らコンパイルできます。

最新バージョンの Python があらかじめインストールされておらず、リポジト
リにもない場合は、自分のディストリビューション向けにパッケージを作成で
きます。 次のリンクを参照してください:

参考:

  https://www.debian.org/doc/manuals/maint-guide/first.en.html
     Debian ユーザー向け

  https://en.opensuse.org/Portal:Packaging
     OpenSuse ユーザー向け

  https://docs.fedoraproject.org/en-US/package-
  maintainers/Packaging_Tutorial_GNU_Hello/
     Fedora ユーザー向け

  https://slackbook.org/html/package-management-making-packages.html
     Slackware ユーザー向け


2.1.1.1. IDLE のインストール
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

場合によっては、 IDLE は Python インストールに含まれていない可能性があ
ります。

* Debian と Ubuntu ユーザー:

     sudo apt update
     sudo apt install idle

* Fedora や RHEL 、 CentOS ユーザーは:

     sudo dnf install python3-idle

* SUSE と OpenSUSE ユーザーは:

     sudo zypper install python3-idle

* Alpine Linux ユーザーは:

     sudo apk add python3-idle


2.1.2. FreeBSD と OpenBSD
-------------------------

* FreeBSD ユーザーが Python パッケージを追加するには次のようにしてくだ
  さい:

     pkg install python3

* OpenBSD ユーザーが Python パッケージを追加するには次のようにしてくだ
  さい:

     pkg_add -r python

     pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/<ここにアーキテクチャを挿入>/python-<バージョン>.tgz

  例えば、i386 ユーザーが Python 2.5.1 を取得するには次のようにします:

     pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2.tgz


2.2. Python のビルド
====================

参考: CPython に貢献したい場合は、ビルド手順や環境設定のヒントを掲載した
    開発者ガイド を参照してください。

CPython を自分でコンパイルする場合は、まず ソース を入手してください。
最新リリースのソースをダウンロードするか、最新の クローン を取得できま
す。 ビルドに必要なもの もインストールする必要があります。

ビルド手順は通常のコマンドで行います

   ./configure
   make
   make install

Configure のオプション や特定の Unix プラットフォームにおける注意点は
Python ソースツリーのルートにある README.rst に細かく記載されています
。

警告:

  "make install" は "python3" バイナリを上書きしたり、既存のバイナリに
  代わって使われるようにしたりする可能性があります。 そのため、"make
  install" の代わりに、"*exec_prefix*/bin/python*version*" のみをイン
  ストールする "make altinstall" を推奨します。


2.3. Python に関係するパスとファイル
====================================

これらは、インストール先での慣例に応じて異なります。 "prefix" と
"exec_prefix" はインストール方法に依存し、GNU ソフトウェアの場合と同じ
意味で解釈してください。 両者が同じ値になることもあります。

例えば、ほとんどの Linux システムでは、両方のデフォルトが "/usr" です
。

+-------------------------------------------------+--------------------------------------------+
| ファイル/ディレクトリ                           | 意味                                       |
|=================================================|============================================|
| "*exec_prefix*/bin/python3"                     | インタプリタの推奨される場所               |
+-------------------------------------------------+--------------------------------------------+
| "*prefix*/lib/python*version*",                 | 標準モジュールを格納するディレクトリの、推 |
| "*exec_prefix*/lib/python*version*"             | 奨される場所。                             |
+-------------------------------------------------+--------------------------------------------+
| "*prefix*/include/python*version*",             | Python 拡張や Python の埋込みに必要となる  |
| "*exec_prefix*/include/python*version*"         | include ファイルを格納するデ ィレクトリの  |
|                                                 | 推奨される場所。                           |
+-------------------------------------------------+--------------------------------------------+


2.4. その他
===========

Python スクリプトを Unix で簡単に使うためには、例えば次のようにしてス
クリプトを実行可能ファイルにし、

   $ chmod +x script

適切な shebang 行をスクリプトの先頭に置きます。たいていの場合良い方法
は

   #!/usr/bin/env python3

で、"PATH" 全体から Python インタープリターを探します。しかし、いくつ
かの Unix は **env** コマンドを持たないので、インタープリターのパスを
"/usr/bin/python3" のようにハードコードしなければならないかもしれませ
ん。

シェルコマンドを Python スクリプトから使うには、 "subprocess" モジュー
ルを参照してください。


2.5. カスタムの OpenSSL
=======================

1. ベンダーの OpenSSL 設定とシステムの信頼ストアを使用するには、"/etc"
   内で "openssl.cnf" ファイルまたはそのシンボリックリンクを含むディレ
   クトリを探してください。 ほとんどのディストリビューションでは、ファ
   イルは "/etc/ssl" または "/etc/pki/tls" にあります。 そのディレクト
   リには "cert.pem" ファイル、"certs" ディレクトリ、またはその両方も
   あるはずです。

      $ find /etc/ -name openssl.cnf -printf "%h\n"
      /etc/ssl

2. OpenSSL をダウンロードし、ビルドしてインストールします。 "install"
   ではなく、必ず "install_sw" を使用してください。 "install_sw" ター
   ゲットは "openssl.cnf" を上書きしません。

      $ curl -O https://www.openssl.org/source/openssl-VERSION.tar.gz
      $ tar xzf openssl-VERSION
      $ pushd openssl-VERSION
      $ ./config \
          --prefix=/usr/local/custom-openssl \
          --libdir=lib \
          --openssldir=/etc/ssl
      $ make -j1 depend
      $ make -j8
      $ make install_sw
      $ popd

3. カスタムの OpenSSL を使って Python をビルドします (configure の "--
   with-openssl" および "--with-openssl-rpath" オプションを参照してく
   ださい)

      $ pushd python-3.x.x
      $ ./configure -C \
          --with-openssl=/usr/local/custom-openssl \
          --with-openssl-rpath=auto \
          --prefix=/usr/local/python-3.x.x
      $ make -j8
      $ make altinstall

注釈:

  OpenSSL のパッチリリースでは、ABI の後方互換性が保たれます。 OpenSSL
  を更新するために Python を再コンパイルする必要はありません。 インス
  トール済みのカスタム OpenSSL を新しいバージョンで置き換えるだけで十
  分です。
