顯示具有 Trac 標籤的文章。 顯示所有文章
顯示具有 Trac 標籤的文章。 顯示所有文章

2010年7月28日 星期三

繼續昨天的奮鬥──Subversion + Trac on Solaris, Part 2

今天花的時間比較少,但是一樣遇到問題。

依照昨天的作法,已經把所有該 compile 的東西都 compile 好了,但是今天啟動 apache 的時候才發現,mod_dav_svn 和 mod_authz_svn 這兩個 module 版本和 Solaris 內建的 Apache 不合。內建的是 2.0.x 系列,Collabnet 上面抓下來的是給 2.2 系列用的。所以……係裡~又要自己來惹~

參考了這篇文章,先去這裡抓 subversion 最新版的 source 回來。後來發現直接用 Sun Studio 12 也可以順利 compile,唯二的麻煩是 neon 和 sqlite3;這兩個 lib 在系統裡面都是沒有的,要另外抓。sqlite3 要抓這個版本,neon 要抓這個

sqlite3 裡面有個 sqlite3.c,解開後放在 subversion/sqlite-amalgamation 底下,然後把 neon 整個放在 subversion/neon 下。這時還要解決 ld 找 library 的問題。

Solaris 下,常用 LD_LIBRARY_PATH 來取得 ld(1) 找 library 的位置,但是也可以用 crle(1) 來設定整個機器上整體的 library search path。編譯 subversion 需要 libexpat (會在 install phase 的時候用到),這個奧妙的 library 放在 /usr/sfw/lib 裡面,往裡面一看還有好多其他常用的 3rd party library。

總結一下我們需要以下幾個 LD_LIBRARY_PATH:

/usr/local/lib
/usr/local/ssl/lib
/usr/sfw/lib

PATH 裡面則必須至少含

/usr/local/bin
/usr/ccs/bin

全部準備好,就可以開始下指令了:

./configure --prefix=/opt/subversion --with-apxs=/usr/apache2/bin/apxs --enable-shared --enable-ssl

這樣編譯出來的 subversion 會自動把該有的 module 丟進 apache2 的 libexec 目錄裡面,也會把 LoadModule 的敘述行放進 /etc/apache2/httpd.conf

經過這樣下來,至少已經把 subversion/apache2 這對工具搞定了,已經可以開始提供服務了,至於 Trac,那又是另外一個我還沒寫的故事了~

2010年7月27日 星期二

Subversion + Trac on Solaris

今天為了要把 SVN + Trac系統移植到 Solaris上吃足了苦頭。

Trac 0.12 推出了,好處是可以一次使用多個 repository,但是最低要求要有 Python 2.5 or 2.6。Solaris 10u6 內建的只到 2.4,所以得要裝套件。找來找去沒有很好的套件,只好自己抓 source 來編。

自己抓來的東西有個麻煩就是不知道該放哪,於是把 --prefix 設定到 /opt/python-2.6 底下去,這樣如果要砍掉重練比較單純一點。用安裝好的 gcc-3.4.6 來編。 Python 安裝完成,抓了 setuptools, Genshi-0.6 和 Trac-0.12 下來,直接就安裝到 python 2.6 的 site-packages 裡面去。

沒想到要裝 mod_wsgi 的時候卻出了包。mod_xxx 在編譯的時候,最好使用和 apache 編譯的原始編譯器一樣,根據 /var/apache2/build 裡面的 libtool 表示,原來的 apache2 是用 /opt/SUNWspro/bin/cc 編出來的,查了一下發現是 SUN 自己的 compiler...orz,還好現在的 Sun Studio 12u1 是不要錢的,抓了放進去,才知道原來新的 cc 已經不放在 SUNWspro 裡面了,解決的方法也不難,直接把 /usr/ccs/bin/cc symlink 過來,這樣 libtool 就不會抱怨找不到正確的 compiler 了。

解決了 mod_wsgi 的編譯問題。整理一下整個的編譯過程和 flags:

Python:

export CC="cc -mt -fast"
export CFLAGS="-fast"
./configure --prefix=/opt/python-2.6 --with-threads --without-gcc --disable-ipv6 --without-fpectl --enable-shared

後面的 enable-shared 很重要,不然編譯會出錯。mod_wsgi 需要 multi-threaded python,所以 CC 那邊要加上"-mt",而且 configure 要加上 --with-threads

mod_wsgi:

./configure --with-apxs=/usr/apache2/bin/apxs --with-python=/opt/python-2.6/bin/python

SVN 用的是 CollabNet 出的安裝包,明天再來看看這樣配起來能不能動吧~