前回と同様にvagrantでUbuntu 14.04 LTS (ubuntu/trusty64) の仮想マシンを立ち上げてまっさらな状態からPythonをソースコードからインストールします。
1
2
3
4
5
$ wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
$ tar xzf Python-3.4.2.tgz
$ cd Python-3.4.2
$ ./configure --prefix=/opt/python-3.4.2
$ make 2>&1 | tee make.log
apt-get updateだけしてビルド
特にパッケージを追加インストールしないでそのままビルドすると、こんな感じのモジュールがビルドされない。
1
2
3
4
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _ssl _tkinter
readline zlib
pyenvのwikiを参考にしてビルド
pyenv
の
https://github.com/yyuu/pyenv/wiki/Common-build-problems
で紹介されてる依存パッケージをインストールしてビルドしてみるとこんな感じ。
1
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
1
2
_curses _curses_panel _dbm
_gdbm _lzma _tkinter
パーフェクトPythonを参考にしてビルド
パーフェクトPythonで紹介されていたパッケージをインストールしてビルドしてみるとこんな感じ。
1
$ sudo apt-get install -y libbz2-dev libreadline-dev libssl-dev libsqlite3-dev libgdbm-dev zlib1g-dev tk-dev tcl-dev
1
_curses _curses_panel _lzma
上記+α
さらにliblzma-dev
libncurses5-dev
を追加してビルドしてみるとひとまず全てのモジュールはビルドされている様子。
1
$ sudo apt-get install -y libbz2-dev libreadline-dev libssl-dev libsqlite3-dev libgdbm-dev zlib1g-dev tk-dev tcl-dev iblzma-dev libncurses5-dev
Python Developer’s Guideを参考に
Python Developer’s Guide
https://docs.python.org/devguide/setup.html#compiling-for-debugging
で紹介されているビルド方法はこんな感じ。
1
$ sudo apt-get build-dep python3.4
上記コマンドを実行すると一通りすべてのモジュールがビルドされた状態から追加でインストールされるパッケージは以下のようになってた。この中に気になるのがあればこちらのほうがやはりいいのかも。
1
2
3
4
5
6
7
The following NEW packages will be installed:
autoconf blt blt-dev debhelper dh-apparmor diffstat docutils-common gettext
intltool-debian libbluetooth-dev libbluetooth3 libcroco3 libdb-dev
libdb5.3-dev libffi-dev libjs-sphinxdoc libjs-underscore libmpdec-dev
libncursesw5-dev libunistring0 m4 po-debconf python-docutils python-jinja2
python-markupsafe python-pygments python-roman python-sphinx quilt sharutils
sphinx-common xvfb
ただpython3.4っていうパッケージがない場合は、バージョン下げたりしてパッケージ探してね、とあるのでスクリプト化を考えると若干使いづらいかも。
If that package is not available for your system, try reducing the minor version until you find a package that is available.
まとめ
依存パッケージをインストール
おそらく最小限なパッケージをインストールするか
1
$ sudo apt-get install libbz2-dev libreadline-dev libssl-dev libsqlite3-dev libgdbm-dev zlib1g-dev tk-dev tcl-dev iblzma-dev libncurses5-dev
build-dep
を利用して依存パッケージをインストールする
1
$ sudo apt-get build-dep python3.4
ソースコードをダウンロードしてビルド
1
2
3
4
5
6
$ wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
$ tar xzf Python-3.4.2.tgz
$ cd Python-3.4.2
$ ./configure --prefix=/opt/python-3.4.2
$ make 2>&1 | tee make.log
$ sudo make install 2>&1 | tee make_install.log