Friday, January 02, 2009

在 OS X 上編譯 Subversion

因為 OpenCollabNet 提供的 OS X 映像檔在我的 10.4 PPC 上老是有名稱空間污染的毛病,單純用指令是沒問題,可是用 subclipse 就會有很大的問題,所以只好自己試試看重編一份,最差的情況就是下去 debug 看看到底是怎樣。

比想像中的順利的多,重新編譯就好了... 不用去改程式。

先把舊的 OpenCollabNet 版的資料夾改名,以避免編譯時去用到 OpenCollabNet 的 binary code 而造成相容性的問題。

sudo mv /opt/subversion /opt/subversion-154

要下載的是 subversion-1.5.5.tar.bz2 與 subversion-deps-1.5.5.tar.bz2 這兩個,後者提供了所需的第三方函示庫的原始碼,直接在同一個目錄下解壓兩者就可以了,檔案都會被解到 subversion-1.5.5 這個目錄之下。

tar -jxf subversion-1.5.5.tar.bz2
tar -jxf subversion-deps-1.5.5.tar.bz2
cd subversion-1.5.5/

這篇提到可能會跑去找 jikes 這個比較老舊的東西來當 Java 編譯器,然後會因此編不出東西,所以要下 --with-jikes=no 把他關了,才會去用 javac 來編譯。

export CFLAGS="-g -O3"
export CXXFLAGS="-g -O3"
./configure --prefix=/opt/subversion --enable-javahl --with-jikes=no
make
make javahl
sudomake install
sudo make install-javahl

之前 OpenCollabNet 留下來的 symbolic link 之類的東西大致上都不需要動,可以沿用下來。所以就算是全新安裝,先裝看看 OpenCollabNet 版碰碰運氣也是不錯。

Perl binding 的部份則是要透過 SWIG 來編,也是要另外編譯與安裝。

make swig-pl
sudo make install-swig-pl

不過這邊安裝會裝到系統資料夾裡去,要自己把他們搬出來。

sudo mkdir /opt/subversion/lib/svn-perl
sudo mkdir /opt/subversion/lib/svn-perl/auto
sudo mv /Library/Perl/5.8.6/darwin-thread-multi-2level/SVN /opt/subversion/lib/svn-perl
sudo mv /Library/Perl/5.8.6/darwin-thread-multi-2level/auto/SVN /opt/subversion/lib/svn-perl/auto
sudo mv /usr/local/man/man3/SVN\:\:* /opt/subversion/share/man/man3/

修改 .profile 把 Perl Module 的目錄加到 PERL5LIB 這個環境變數裡,就可以讓 perl 找到。

export PERL5LIB=$PERL5LIB:/opt/subversion/lib/svn-perl/

Thursday, January 01, 2009

Mac OS X 上更新 locate database

在 OS X 上要更新 locate 的 database 有兩個方法,一個是直接執行 /usr/libexec/locate.updatedb 這個更新用的指令稿,另一個是執行 /etc/periodic/weekly/500.weekly 或是長像類似的東西,後者是用來每週定期執行用的指令稿,有比較好的權限處理。

在 man locate 裡頭是說 /etc/periodic/weekly/310.locate 是定期執行用的指令稿,不過在我的機器上沒有這個檔案。

不管是執行哪個,可能都要利用 sudo 去執行,除非把資料庫檔案的權限改掉。

sudo /etc/periodic/weekly/500.weekly