MacPortsを使うとPythonのバージョン管理がお手軽だってことを知ったのでメモっとく。

Python2.5, 2.6

まずMacPortsを使ってPython2.5と2.6をインストールする。

$ sudo port install python25
...
--->  Installing python25 @2.5.5_1
--->  Activating python25 @2.5.5_1
 
To fully complete your installation and make python 2.5 the default, please run
 
	sudo port install python_select  
	sudo python_select python25
 
--->  Cleaning python25

sudo port install python25したらなんでかpython2.6も一緒にインストールされた。

おそらく依存関係の都合だろうということにしといて次にすすむ。

python_select

python_selectをインストールする。

$ sudo port install python_select
...
--->  Installing python_select @0.3_0
--->  Activating python_select @0.3_0
--->  Cleaning python_select

Pythonのバージョンを切り替える

Python2.5を選択。

$ sudo python_select python25
$ which python
/opt/local/bin/python
$ ls -l /opt/local/bin/python
lrwxr-xr-x  1 root  admin  24  9 28 00:22 /opt/local/bin/python -> /opt/local/bin/python2.5

Python2.6を選択

$ sudo python_select python26
$ ls -l /opt/local/bin/python
lrwxr-xr-x  1 root  admin  24  9 28 00:37 /opt/local/bin/python -> /opt/local/bin/python2.6

Google app engine用に2.5を入れてみたいなときに使ったりしてる。

2.5の中でプロジェクト単位にライブラリを管理したいみたいなときは、virtualenv

 

MacPorts で MySQL5 と Apach2 と PHP5 を入れたメモ。

インストール完了まで意外と時間をくってしまった。

MySQL5

ややこしいことに mysql5 と mysql5-server の2つが対象としてあるので要注意。

mysql5 を選ぶと mysql_install_db5 で一手間必要だったり、 plistを自前で書く必要がでてくるので、mysql5-server を選ぶ。

$ sudo port install mysql5-server
--->  Computing dependencies for mysql5-server
--->  Fetching mysql5
--->  Verifying checksum(s) for mysql5
--->  Extracting mysql5
--->  Applying patches to mysql5
--->  Configuring mysql5
--->  Building mysql5
--->  Staging mysql5 into destroot
--->  Installing mysql5 @5.1.46_0
The MySQL client has been installed.
If you also want a MySQL server, install the mysql5-server port.
--->  Activating mysql5 @5.1.46_0
--->  Cleaning mysql5
--->  Fetching mysql5-server
--->  Verifying checksum(s) for mysql5-server
--->  Extracting mysql5-server
--->  Configuring mysql5-server
--->  Building mysql5-server
--->  Staging mysql5-server into destroot
--->  Creating launchd control script
###########################################################
# A startup item has been generated that will aid in
# starting mysql5-server with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
###########################################################
--->  Installing mysql5-server @5.1.46_0
******************************************************
* In order to setup the database, you might want to run
* sudo -u _mysql mysql_install_db5
* if this is a new install
******************************************************
--->  Activating mysql5-server @5.1.46_0
--->  Cleaning mysql5-server

無事インストールが終わったら、mysql_install_db5 を実行する。

$ sudo -u _mysql mysql_install_db5
Installing MySQL system tables...
...略
Please report any problems with the /opt/local/lib/mysql5/bin/mysqlbug script!

ログイン時、MySQLが自動で起動するように設定。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

これで、mysqld が勝手に立ち上がる。
最後にログイン出来るか確認して、インストール完了。

$ mysql5 -u root
...略
mysql>

Apach2 と PHP5

Apach2 と PHP5 をいっぺんにインストール。

$ sudo port install php5 +apache2 +mysql5 +pear
Password:
--->  Computing dependencies for php5
...略
--->  Building apache2
--->  Staging apache2 into destroot
--->  Creating launchd control script
###########################################################
# A startup item has been generated that will aid in
# starting apache2 with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
###########################################################
Note: apache2 installs files outside the common directory structure.
--->  Installing apache2 @2.2.15_1+darwin+preforkmpm
--->  Activating apache2 @2.2.15_1+darwin+preforkmpm
--->  Cleaning apache2
...略
--->  Configuring php5
The +mysql5 variant is obsolete. Please install the php5-mysql port instead.
--->  Building php5
--->  Staging php5 into destroot
Note: php5 installs files outside the common directory structure.
--->  Installing php5 @5.3.2_0+apache2+darwin_10+macosx+mysql5+pear
--->  Activating php5 @5.3.2_0+apache2+darwin_10+macosx+mysql5+pear
To customize php, copy
/opt/local/etc/php5/php.ini-development (if this is a development server) or
/opt/local/etc/php5/php.ini-production (if this is a production server) to
/opt/local/etc/php5/php.ini and then make changes.
 
If this is your first install, you need to activate PHP in your web server.
 
To enable PHP in Apache, run
  cd /opt/local/apache2/modules
  /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
--->  Cleaning php5

ログイン時、Apache2 が自動で起動するように設定。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

php.ini をコピー。

$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini

php5 単体では、MySQLインターフェースがインストールされない。
なので、別途インストールする必要がある。

$ sudo port install php5-mysql
...略
--->  Staging php5-mysql into destroot
--->  Installing php5-mysql @5.3.2_0+mysqlnd
To use mysqlnd with a local MySQL server, edit /opt/local/etc/php5/php.ini and set
mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket
to /opt/local/var/run/mysql5/mysqld.sock
--->  Activating php5-mysql @5.3.2_0+mysqlnd
--->  Cleaning php5-mysql

MySQLに関わる設定をする為、php.ini を修正する。

$ sudo vi /opt/local/etc/php5/php.ini
pdo_mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysql.default_socket =/opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket =/opt/local/var/run/mysql5/mysqld.sock

mbstring も分離されているので、別途インストールする。

$ sudo port install php5-mbstring
...略
--->  Installing php5-mbstring @5.3.2_0
--->  Activating php5-mbstring @5.3.2_0
--->  Cleaning php5-mbstring

以上で、port を使ったインストール作業は完了。
続いて、httpd.conf の設定を行う。

httpd.conf に php5 モジュールを追加。

$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so 
[activating module `php5' in /opt/local/apache2/conf/httpd.conf]

httpd.conf に php の設定を追加。

$ sudo vi /opt/local/apache2/conf/httpd.conf
...
<IfModule php5_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
 
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

httpd を再起動。

$ sudo /opt/local/apache2/bin/apachectl restart

最後に、php ファイルを用意しブラウザからアクセス出来ることを確認して、インストール完了。

なんか・・・

意外と手間取った。

 

ここ最近、まつもとゆきひろコードの世界 を読んでる。
それに載ってるサンプルを実践しようと tk 付き ruby のインストールを試みたらつまずいたのでメモ。

インストール

普通に MacPorts を使ってインストールを試みたところ、

$ sudo port install ruby +thread_hooks +mactk
...
/usr/bin/gcc-4.2 -dynamic -bundle -undefined suppress -flat_namespace -o ../../.ext/i686-darwin10/tcltklib.bundle stubs.o tcltklib.o -L. -L../.. -L. -L/opt/local/lib -framework Tk -framework Tcl  -arch x86_64  -lruby -lm -ldl  -lpthread -ldl -lobjc  
ld: in /opt/local/lib/libsqlite3.dylib, file is not of required architecture
collect2: ld returned 1 exit status
make[1]: *** [../../.ext/i686-darwin10/tcltklib.bundle] Error 1
make: *** [all] Error 1

失敗。
-arch x86_64 や file is not of required architecture があやしい。
アーキテクチャがどうのこうの。
調べたら標準の OS 10.6 は dynamic libraries が 64bit で動作しているんだとか。
Snow Leopard にアップデートしたことが原因っぽい。

いったん・・・

MacPorts でインストールしたライブラリなどを
全部アンインストール&リビルドすればいけるようだったので、

$ port installed
$ sudo port -f uninstall installed
...
$ port installed
No ports are installed.

何をインストールしてたか確認してから、キレイに全部アンインストール。

もう一度インストール

もう一度 ruby を最初からインストール。

$ sudo port install ruby +thread_hooks +mactk
...
--->  Installing ruby @1.8.7-p174_0+darwin+mactk+thread_hooks
--->  Activating ruby @1.8.7-p174_0+darwin+mactk+thread_hooks
--->  Cleaning ruby

無事成功した。
Leopard からの互換性を保ちつつ進化したように感じた Snow Leopard だったけど、
意外と対応してないアプリだとかしばらく弊害あるのかね。

参考

Snow Leopardにアップデートした後に気をつけること 主にMacPortsとrubygemsについて