2013年07月21日

[Homebrew] バージョンを指定してフォーミュラをインストールする方法 (1)

MBA11(Mac OS X)上のCommand Line ToolsをXcode 4.2.1からXcode 4.3.3のもの換えたので、このMacのHomebrew環境を再構築したが、この作業に伴って、Python開発環境も一から再構築した。

05/09の記事でPython環境を構築したときはPython 2系と3系の最新バージョンはそれぞれPython 2.7.4とPython 3.3.1だったが、その後フォーミュラが更新されたようで、Python 2.7.5とPython 3.3.2が最新バージョンになっていた。
$ brew info python
python: stable 2.7.5, HEAD
http://www.python.org
Not installed
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/python.rb
==> Dependencies
Build: pkg-config
Recommended: readline, sqlite, gdbm
==> Options
--quicktest
Run `make quicktest` after the build (for devs; may fail)
--universal
Build a universal binary
--with-brewed-openssl
Use Homebrew's openSSL instead of the one from OS X
--with-brewed-tk
Use Homebrew's Tk (has optional Cocoa and threads support)
--with-dtrace
Experimental DTrace support (http://bugs.python.org/issue13405)
--with-poll
Enable select.poll, which is not fully implemented on OS X (http://bugs.python.org/issue5154)
--without-gdbm
Build without gdbm support
--without-readline
Build without readline support
--without-sqlite
Build without sqlite support
==> Caveats
Python demo
/usr/local/share/python/Extras

Setuptools and Pip have been installed. To update them
pip install --upgrade setuptools
pip install --upgrade pip

To symlink "Idle" and the "Python Launcher" to ~/Applications
`brew linkapps`

You can install Python packages with (the outdated easy_install or)
`pip install `

They will install into the site-package directory
/usr/local/lib/python2.7/site-packages

See: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python
$ brew info python3
python3: stable 3.3.2, HEAD
http://www.python.org/
Not installed
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/python3.rb
==> Dependencies
Build: pkg-config
Recommended: readline, sqlite, gdbm, xz
==> Options
--quicktest
Run `make quicktest` after the build
--universal
Build a universal binary
--with-brewed-openssl
Use Homebrew's openSSL instead of the one from OS X
--with-brewed-tk
Use Homebrew's Tk (has optional Cocoa and threads support)
--without-gdbm
Build without gdbm support
--without-readline
Build without readline support
--without-sqlite
Build without sqlite support
--without-xz
Build without xz support
==> Caveats
Setuptools and Pip have been installed. To update them
pip3 install --upgrade setuptools
pip3 install --upgrade pip

To symlink "Idle 3" and the "Python Launcher 3" to ~/Applications
`brew linkapps`

You can install Python packages with
`pip3 install `

They will install into the site-package directory
/usr/local/lib/python3.3/site-packages

See: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python

再構築するPython環境ではどのバージョンを使うか悩んだが、結局前回と同じPython 2.7.4と3.3.1をインストールすることにした。Homebrewではバージョンを指定してフォーミュラをインストールすることができるし、複数のバージョンを共存させて必要に応じて切り替えて使うことも可能だなので、最新版のPythonは将来必要になったときに入れれば良い良いだろうと考えたからだ。

フォーミュラの利用可能なバージョンは、「brew versions FORMULA」というコマンドで知ることができる。
$ brew versions python
2.7.5 git checkout 6552a8d /usr/local/Library/Formula/python.rb
2.7.4 git checkout 280581d /usr/local/Library/Formula/python.rb
2.7.3 git checkout 51fb481 /usr/local/Library/Formula/python.rb
2.7.2 git checkout 97c6869 /usr/local/Library/Formula/python.rb
2.7.1 git checkout 83ed494 /usr/local/Library/Formula/python.rb
2.7 git checkout 1bf3552 /usr/local/Library/Formula/python.rb
2.6.5 git checkout acd49f7 /usr/local/Library/Formula/python.rb
2.6.4 git checkout 843bff9 /usr/local/Library/Formula/python.rb
2.6.3 git checkout 5c6cc64 /usr/local/Library/Formula/python.rb
$ brew versions python3
3.3.2 git checkout 6552a8d /usr/local/Library/Formula/python3.rb
3.3.1 git checkout 280581d /usr/local/Library/Formula/python3.rb
3.3.0 git checkout 864e9f1 /usr/local/Library/Formula/python3.rb
3.2.3 git checkout f33f3ea /usr/local/Library/Formula/python3.rb
3.2.2 git checkout f3408c9 /usr/local/Library/Formula/python3.rb
3.2.1 git checkout 949d521 /usr/local/Library/Formula/python3.rb
3.2 git checkout 83ed494 /usr/local/Library/Formula/python3.rb
3.1.3 git checkout 0476235 /usr/local/Library/Formula/python3.rb
3.1.2 git checkout 164db80 /usr/local/Library/Formula/python3.rb

バージョンを変更していなければ、常に最新バージョンのフォーミュラがインストールされるようになっている。インストール対象のフォーミュラのバージョンを指定するには、「git checkout HASH FORMULA_FILE」というコマンドを実行すれば良い。

上のバージョン情報に表示されているコマンドをそのまま入力すれば良さそうな気がしたので、さっそく、pythonとpython3フォーミュラのインストール対象バージョンを変更してみた。
$ checkout 280581d /usr/local/Library/Formula/python.rb
fatal: Not a git repository (or any of the parent directories): .git
$ git checkout 280581d /usr/local/Library/Formula/python3.rb
fatal: Not a git repository (or any of the parent directories): .git

すると、どちらも上のようなエラーが表示された。gitコマンドについて調べると、カレントディレクトリがgitリポジトリとして登録されていない場合にこのエラーが表示されるらしいことが判った。カレントディレクトリがgitリポジトリとして登録されているかどうかは、そのディレクトリに.gitというディレクトリが存在するかどうかで確認できる。上のコマンドはホームディレクトリで実行したが、ホームディレクトリには.gitは存在していなかった。

さらにググって調べると、gitコマンドはカレントディレクトリがgitリポジトリであると仮定してすべての処理を実行するらしいことが判った。そこで、当てずっぽうで、次のようなコマンドを実行してみた(/usr/local/.gitというディレクトリが存在していたから)。
$ cd /usr/local
$ git checkout 280581d Library/Formula/python.rb
$ git checkout 280581d Library/Formula/python3.rb

すると、今度はエラーは出力されなかった。フォーミュラのインストール対象バージョンが変更されたどうかは、「brew info FORMULA」によって確認できる。
$ brew info python
python: stable 2.7.4
http://www.python.org
Not installed
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/python.rb
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
$ brew info python3
python3: stable 3.3.1
http://www.python.org/
Not installed
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/python3.rb
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....
.... ....

よしよし、ちゃんと指定したバージョンに変更されているようだ。

この状態で「brew install FORMULA」を実行すれば、上で指定したバージョンのフォーミュラがインストールされるはずだ。pythonとpython3のインストールが終了した後に、Pythonインタプリタのバージョンを確認したら、ちゃんと指定したバージョンが入っていた。
$ which python
/usr/local/bin/python
$ python --version
Python 2.7.4
$ which python3
/usr/local/bin/python3
$ python3 --version
Python 3.3.1

なお、「git checkout HASH FORMULA_FILE」で変更したフォーミュラのバージョンを最新版に戻すには、下のようなコマンドを実行すれば良い。
$ cd /usr/local
$ git reset HEAD Library/Formula/python.rb
$ git checkout -- Library/Formula/python.rb

この操作を行った後「brew info FORMULA」を実行すれば、フォーミュラのバージョンが最新版(HEAD)に変わっていることが確認できるはずだ。
タグ:Homebrew
posted by とみやん at 12:07| Comment(0) | TrackBack(0) | 開発・プログラミング > Mac
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/71170621

この記事へのトラックバック