2010年11月16日

Pymacs 0.24 beta2

Pymacs 0.24 beta2 が 2010年11月14日に出ていたのでためしてみる。

curl -O http://pymacs.progiciels-bpi.ca/archives/Pymacs-0.24-beta2.tar.gz
tar xvfz Pymacs-0.24-beta2.tar.gz
cd Pymacs-0.24-beta2
make
make install

あと pymacs.el が作成されますので、これは Emacs の load-path の通った所に配置します。

Python 3 サポートが目玉の変更。ほかはインストールのスクリプトが結構高機能になっている。

本体の機能その物はあまり変更ないみたい。とりあえずしばらく使ってみる。

2010年7月14日

Snow Leopard で Python 2.7 を Build する

Python 2.7 の Snow Leopard でのビルド手順メモ。

SQLite のコンパイル。Snow Leopard には最初から SQLite インストールされているけれど、fts3 が有効になってないので、有効にしたものをビルド。

curl -O http://www.sqlite.org/sqlite-3.6.23.1.tar.gz
tar xvfz sqlite-3.6.23.1.tar.gz
cd sqlite-3.6.23.1
CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure
make
sudo make install

readline と gettext は独自ビルドしないで fink とか MacPorts とかでインストール。

# fink
# sudo fink selfupdate # 必要に応じて更新
sudo fink install readline
sudo fiink install gettext

# MacPorts
# sudo port -v selfupdate # 必要に応じて更新
# sudo port upgrade outdated # 必要に応じて更新
sudo port install readline
sudo port install gettext

Python のビルド。

curl -O http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2
tar xvfj Python-2.7.tar.bz2
cd Python-2.7
# fink の場合
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS=-I/sw/include LDFLAGS=-L/sw/lib
# MacPorts の場合
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib
make
find . -name readline.so
sudo make install

以下のようなエラーなら問題ないです。

Failed to find the necessary bits to build these modules:
bsddb185           dl                 imageop
linuxaudiodev      ossaudiodev        spwd
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

_locale や readline がエラーになる場合は主に適切にコンパイルされていないなどが原因と思われます。

特に _locale が上手くコンパイルできない場合は、既存に存在する物をコピーしても動作はします。

sudo cp /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_locale.so /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/

virtual-python をセットアップします。ここでは $HOME/local 以下に設定しています。

curl -O http://peak.telecommunity.com/dist/virtual-python.py
python2.7 virtual-python.py --prefix=$HOME/local/

~/local/bin にパスを通しておくのを忘れないでください。

export PATH=${HOME}/local/bin:${PATH}
export PYTHONPATH=${HOME}/local/lib/python2.7/site-packages

virtual-python で easy_setup を利用するための設定をします。 ~/.pydistutils.cfg に設定を以下のように記述します。

[install]
install_lib = ~/local/lib/python2.7/site-packages
install_scripts = ~/local/bin

easy_install をセットアップします。

python ez_setup.py

easy_install を利用していくつかライブラリをインストールしておきます。とりあえず、思いついた物だけ例を書いときます。

easy_install -UZ readline
easy_install -UZ mercurial
echo "/opt/subversion/lib/svn-python" >  ~/local/lib/python2.7/site-packages/svn-python.pth
easy_install -UZ hgsubversion
easy_install -UZ hg-git
easy_install -UZ docutils
easy_install -UZ Sphinx
easy_install -UZ ipython
sudo port install libffi
easy_install -UZ pyobjc
easy_install -UZ pyobjc-framework-DictionaryServices
easy_install -UZ Cython
sudo port install libxml2
sudo port install libxslt
easy_install -UZ lxml
easy_install -UZ trac
easy_install -UZ chardet
easy_install -UZ TracAccountManager
easy_install -UZ http://svn.edgewall.com/repos/trac/plugins/0.12/mercurial-plugin
easy_install -UZ web.py
easy_install -UZ SQLAlchemy
easy_install -UZ numpy
easy_install -UZ reportlab
easy_install -UZ rst2pdf

easy_install だと目的通りにインスールできない物は setup.py でインストールします。

curl -O http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz
tar xvfz Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
vi setup.py
# 編集内容
# FREETYPE_ROOT =  libinclude("/Developer/SDKs/MacOSX10.6.sdk/usr/X11/")
# JPEG_ROOT = libinclude("/opt/local/lib/")
# LCMS_ROOT = libinclude("/opt/local/lib/")
python setup.py build
python setup.py install
# http://sourceforge.net/projects/epydoc/files/epydoc/3.0.1/epydoc-3.0.1.tar.gz/download
tar epydoc-3.0.1.tar.gz
cd epydoc-3.0.1
python setup.py build
python setup.py install
# http://sourceforge.net/projects/translate/files/Translate%20Toolkit/1.7.0/translate-toolkit-1.7.0.tar.bz2/download
tar xvfz translate-toolkit-1.7.0.tar.bz2
cd translate-toolkit-1.7.0
python setup.py build
python setup.py install

ついでなので mod_wsgi もビルド。

curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
tar xvfz mod_wsgi-3.2.tar.gz
cd mod_wsgi-3.2
./configure
make
sudo make install

apache は再起動しておきましょう。

sudo apachectl restart

2010年5月16日

Mac OS X におけるファイル名に関するメモ(NFC, NFD等)

Mac OS X で ファイルシステムのフォーマットに HFS+ を利用している場合、ファイル名の取り扱いが、 Windows や Linux と異なります。

具体的には濁点や半濁点の扱いが異なります。これは Unicode の正規化に関係しています。

「Unicode の正規化」とは簡単に言うと、どの文字を同じ文字として処理するか、という問題への対処で、「が」を「が」として扱うか「か + ゛」として扱うか、ということです。 「Unicode の正規化」を実施することで「が」で入力されても、「か + ゛」で入力されても、どちらか一方に統一して、同じ文字として扱えるようにします。

こうした正規化形式には4種類存在します。

  • Normalization Form D(正規化形式 D, NFD)
  • Normalization Form C(正規化形式 C, NFC)
  • Normalization Form KD(正規化形式 KD, NFKD)
  • Normalization Form KC(正規化形式 KC, NFKC)

D が Decomposition(分解)、C が Composition(合成)、KがCompatibility(互換性) を意味するようです。つまり NFC が文字を合成側に正規化し、NFD が文字を分解側に正規化します。

Windows や Linux は NFC で正規化されていると考えらますが、動作的には積極的に正規化した結果で NFC になっているのではなくて、合成済みの文字のみしか扱かわないので偶然 NFC になっているように見えます。

Mac の場合は積極的にファイル名に NFD を利用して正規化を実施します。ただし Mac の 正規化は NFD と同じではないため、単純ではありません。NFD の仕様で正規化対象になるべき文字の一部が正規化対象になっていません。

その結果 Mac のファイル名の正規化関しては「UTF-8-MAC」(iconv)や「UTF-8-HFS」(Emacs)等の呼称で扱われています。

ファイル名の正規化は様々な問題を引き起しますが、各アプリケーションで対応されていたりいなかったりします。

Samba は対応されていますが、 PHP や Subversion 等は標準では NFD に対応していません。

Subversion 等のバージョン管理システムを利用して共同作業を実施すると、濁点半濁点を含むファイル名が存在すると別のファイルとして管理されてしまいます。一番簡単なのは処理する時に一時的に NFC にしてしまうことのようです。

MacPorts を利用している場合は、以下のようにインストールするとパッチがあたった Subversion がインストールされます。

port install subversion +unicode_path

Emacs は 23.2 から「ucs-normalize.el」という Mac のファイル名正規化等を扱うためのプログラムが追加されたため、以下のような設定をすることで対応可能です。

(require 'ucs-normalize)
(setq file-name-coding-system 'utf-8-hfs)
(setq locale-coding-system 'utf-8-hfs)

PHP などで作成されたアプリケーションは独自で対応するしかまだ方法がないようです。

今後改善されるかは不明です。

参考資料

2010年3月21日

Snow Leopard で Python 2.6.5 を Build する

Python 2.6.5 の Snow Leopard でのビルド手順メモ。

SQLite のコンパイル。Snow Leopard には最初から SQLite インストールされているけれど、fts3が有効になってないので、有効にしたものをビルド。

curl -O http://www.sqlite.org/sqlite-3.6.23.tar.gz
tar xvfz sqlite-3.6.23.tar.gz
cd sqlite-3.6.23
CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure
make
sudo make install

readline と gettext は独自ビルドしないで fink とか MacPorts とかでインストール。

# fink
sudo fink install readline
sudo fiink install gettext

# MacPorts
sudo port install readline
sudo port install gettext

Python のビルド。

curl -O http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2
tar xvfj Python-2.6.5.tar.bz2
cd Python-2.6.5
# fink の場合
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS="-I/usr/include -I/usr/local/include -I/sw/include" LDFLAGS="-L/usr/lib -L/usr/local/lib -L/sw/lib"
# MacPorts の場合
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS="-I/usr/include -I/usr/local/include -I/opt/include" LDFLAGS="-L/usr/lib -L/usr/local/lib -L/opt/lib"
make
find . -name readline.so
sudo make install

以下のようなエラーなら問題ないです。

Failed to find the necessary bits to build these modules:
bsddb185           dl                 imageop
linuxaudiodev      ossaudiodev        spwd
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

_locale や readline がエラーになる場合は主に適切にコンパイルされていないなどが原因と思われます。

場合によっては独自ビルドした方が良いかもしれません。

ついでなので mod_wsgi もビルド。

 curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
 tar xvfz mod_wsgi-3.2.tar.gz
 cd mod_wsgi-3.2
 ./configure
make
sudo make install

apache は再起動しておきましょう。

sudo apachectl restart

2010年2月4日

Daredevil SKK 14.0.90 を .emacs.d 以下にインストール

最初に APEL をインストールします。make してからインストール先を確認。実際にインストールの手順で実施しています。インストール前にいろいろ確認するのが好みなので。

curl -O http://kanji.zinbun.kyoto-u.ac.jp/~tomo/lemi/dist/apel/apel-10.7.tar.gz
tar xvfz apel-10.7.tar.gz
cd apel-10.7
make LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make what-where LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make install LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info

Daredevil SKK 14.0.90 を取得します。

curl -O http://openlab.ring.gr.jp/skk/maintrunk/ddskk-14.0.90.tar.gz
tar xvfz ddskk-14.0.90.tar.gz
curl -O http://openlab.jp/skk/dic/SKK-JISYO.L.gz
gunzip SKK-JISYO.L.gz
cd ddskk-14.0.90
mv ../SKK-JISYO.L dict

設定ファイルを修正します。

vi SKK-CFG
(add-to-list 'load-path "~/.emacs.d/lisp/emu")
(add-to-list 'load-path "~/.emacs.d/lisp/apel")
(setq APEL_DIR "~/.emacs.d/lisp/apel")
(setq EMU_DIR "~/.emacs.d/lisp/emu")
(setq SKK_DATADIR "~/.emacs.d/share/skk")
(setq SKK_INFODIR "~/.emacs.d/share/info")
(setq SKK_LISPDIR "~/.emacs.d/lisp/skk")
(setq SKK_SET_JISYO t)

インストールします。

make LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make what-where LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info
make install LISPDIR=~/.emacs.d/lisp VERSION_SPECIFIC_LISPDIR=~/.emacs.d/lisp INFODIR=~/.emacs.d/share/info

設定するならとりあえず init.el に以下を記述しておきます。こまかい設定は info を読んだ方が正確です。

;; 以下を記述するだけで必要な物は全部ロードする
(require 'skk-autoloads)
;; Emacs の起動時に必要な物をロードすることで、SKK の初回起動を速くする
(setq skk-preload t)

以上です。

2010年1月20日

AUCTeX 11.85 を .emacs.d 以下にインストール

curl -O http://ftp.gnu.org/pub/gnu/auctex/auctex-11.85.tar.gz
tar xvfz auctex-11.85.tar.gz
cd auctex-11.85
./configure --prefix=$HOME/.emacs.d --with-lispdir=$HOME/.emacs.d/lisp
make
make install

bitbucket にて sakito の .emacs.d を公開

ちょっと公開までに時間かけちゃった。もうすこしスムーズにやりたい。 http://bitbucket.org/sakito/dot.emacs.d/

2010年1月13日

Snow Leopard で Python 2.6.4 を Build する

Python 2.6.4 の Snow Leopard でのビルド手順メモ。

SQLite のコンパイル。Snow Leopard には最初から SQLite インストールされているけれど、fts3が有効になってないので、有効にしたものをビルド。

curl -O http://www.sqlite.org/sqlite-3.6.22.tar.gz
tar xvfz sqlite-3.6.22.tar.gz
cd sqlite-3.6.22
CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure
make
sudo make install

readline6 のビルド。

curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.1.tar.gz
./configure MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS=“-arch i386 -arch x86_64” LDFLAGS=“-Wall -arch i386 -arch x86_64”
make
sudo make install

Python のビルド。

curl -O http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2
tar xvfj Python-2.6.4.tar.bz2
cd Python-2.6.4
./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/ --with-threads CPPFLAGS="-I/usr/include -I/usr/local/include -I/sw/include" LDFLAGS="-L/usr/lib -L/usr/local/lib -L/sw/lib"
make
find . -name readline.so
sudo make install

以下のようなエラーがなら問題ないです。必要なモジュールが不足しているなら追加でなんとかしてください。

Failed to find the necessary bits to build these modules:
_bsddb             dl                 gdbm
imageop            linuxaudiodev      ossaudiodev
spwd               sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

ついでなので mod_wsgi もビルド。

 curl -O http://modwsgi.googlecode.com/files/mod_wsgi-3.1.tar.gz
 tar xvfz mod_wsgi-3.1.tar.gz
 cd mod_wsgi-3.1
 ./configure
make
sudo make install
sudo apachectl restart

2010年1月11日

convert と filemap を利用した hg リポジトリの分割と統合

リポジトリの分割や統合を実施したい場合があります。 これは hg convert --filemap を利用します。

分割は以下の例です。ポイントは filemap に書く内容で、 includeexcluderename があります。この例では各ディレクトリのみ include していますが、複数のディレクトリを include して分割なんてこともできます。

rename の名前でカレントディレクトリに リポジトリが作成されます。元のリポジトリが壊れるわけではありませんが、注意して作業してください。

また分割が終了したら hg update を忘れないでください。

% mkdir -p repo/foo repo/bar
% cd repo
% hg init
% ls -FA
.hg/ bar/ foo/
% ls -R repo
bar foo

repo/.hg/store:

repo/bar:

repo/foo:

% echo "include foo\nrename foo ." > map-foo.txt
% echo "include bar\nrename bar ." > map-bar.txt
% hg convert --filemap map-foo.txt repo foo
% hg convert --filemap map-bar.txt repo bar
% ls -AF foo bar
bar:
.hg/

foo:
.hg/
% cd bar
% hg update
% cd ../foo
% hg update

統合は以下のようにします。bar を foo のサブディレクトリとして統合してみます。

% ls -AF foo bar
bar:
.hg/

foo:
.hg/
% echo "rename . bar" > map-sub.txt
% hg convert --filemap map-sub.txt bar foo
% cd foo
% hg update

log を引き継いで統合されます。

2010年1月6日

howm-1.3.8 を .emacs.d 以下にインストール

curl -O http://howm.sourceforge.jp/a/howm-1.3.8.tar.gz
tar xvfz howm-1.3.8.tar.gz
./configure --with-lispdir=$HOME/.emacs.d/lisp --with-docdir=$HOME/.emacs.d/share/howm --with-extdir=$HOME/.emacs.d/bin