# 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-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-creating-rpms.html

  Fedora ユーザー向け

http://www.slackbook.org/html/package-management-making-packages.html

  Slackware ユーザー向け

### 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/<insert your architecture here>/python-<version>.tgz

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

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

### 2.1.3. OpenSolaris

OpenCSW から Python を入手することができます。 Python の様々なバージョンが利用可能でインストールすることができます。e.g. `pkgutil -i python27`.

## 2.2. Python のビルド

CPython を自分でコンパイルしたい場合は、まず ソース を入手します。 最新リリース版のソースをダウンロード、あるいはソースリポジトリから新しく クローン を作成してください。(パッチの作成に貢献したい場合はクローンが必要になるでしょう。)

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

    ./configure
    make
    make install

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

警告

`make install` は `python3` バイナリを上書きまたはリンクを破壊してしまうかもしれません。そのため、`make install` の代わりに `exec_prefix/bin/pythonversion` のみインストールする `make altinstall` が推奨されています。

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

These are subject to difference depending on local installation conventions; `prefix` and `exec_prefix` are installation-dependent and should be interpreted as for GNU software; they may be the same.

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

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

## 2.4. その他

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

    $ chmod +x script

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

    #!/usr/bin/env python3

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

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

## 2.5. Custom OpenSSL

1. To use your vendor's OpenSSL configuration and system trust store, locate the directory with `openssl.cnf` file or symlink in `/etc`. On most distribution the file is either in `/etc/ssl` or `/etc/pki/tls`. The directory should also contain a `cert.pem` file and/or a `certs` directory.

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

2. Download, build, and install OpenSSL. Make sure you use `install_sw` and not `install`. The `install_sw` target does not override `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. Build Python with custom OpenSSL (see the configure `--with-openssl` and `--with-openssl-rpath` options)

       $ 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

注釈

Patch releases of OpenSSL have a backwards compatible ABI. You don't need to recompile Python to update OpenSSL. It's sufficient to replace the custom OpenSSL installation with a newer version.