Solaris10 上で gitweb をセットアップ
gitweb は git レポジトリを web ページとして公開するための CGI プログラムです。
本家サイトを含めてセットアップ方法を記述したサイトには沢山ありますが、Solaris 10上で getweb の構築記事は少なく、また Solaris 環境固有と思われる点ではまったところがありましたので構築メモを書いておきます。
ちなみに、gitweb のスナップショットがこちら。
http://git.kernel.org
github のように・・・とまではいきませんが、ちょっとした共有には十分かと思います。
環境と諸設定
git のインストール
gitweb 以前に git がセットアップされていなければ始まりません。
次の項目で紹介するソースからビルドしてもいいのですが、ここでは www.sunfreeware.com からバイナリパッケージをゲットしそれをインストールします。
$ wget ftp://ftp.sunfreeware.com/pub/freeware/sparc/10/git-1.7.2-sol10-sparc-local.gz $ gunzip git-1.7.2-sol10-sparc-local.gz # pkgadd -d git-1.7.2-sol10-sparc-local
上記は sparc Solaris のパッケージの場合の例です。x86 の場合は ftp://ftp.sunfreeware.com/pub/freeware/intel/10/git-1.7.2-sol10-x86-local.gz からダウンロードしてください。
gitweb CGI プログラムのビルド
gitのソースをゲット
gitweb ビルドするために まず git のソースをゲットしてきます。
git コマンドが使える環境で、かつインターネット上のリポジトリにアクセスできる環境なら以下のようにしてソースをダウンロードできます。
$ git clone git://git.kernel.org/pub/scm/git/git.git
できなければ、普通にアーカイブファイルをダウンロードして展開します
http://kernel.org/pub/software/scm/git/git-1.7.3.2.tar.bz2
$ bunzip2 -c git-1.7.3.2.tar.bz2 | tar xvf - :
gitweb のビルド
$ cd git-1.7.3.2/gitweb $ gmake GITWEB_PROJECTROOT="/data/git" prefix=/usr/local gitweb/gitweb.cgi
これで、gitweb ディレクトリが作成され、その中に gitweb.cgi が書き込まれます。
※ なお、上記例の通り、gmake で実行してください。(なければインストール!)バンドルの make だと以下のエラーがが出ます. (おそらく make が -include をサポートしていないため)
make: Fatal error in reader: Makefile, line 244: Unexpected end of line seen
CGIプログラムを含むディレクトリのドキュメントルートへのコピー
デフォルトのドキュメントルートの下に getweb ディレクトリをコピーします。
# cp -rp gitweb /var/apache2/htdocs/
CGIに実行許可を与える
デフォルトではコピーしたディレクトリ配下の cgi プログラムに実行許可がありません。
Apache の設定ファイルである httpd.conf を編集し、gitweb/gitweb.cgi を実行可能にします。
また、CGI プログラムから呼ばれる git コマンドは libcrypt へのリンクが必要なため、SetEnv を追加して LD_LIBRARY_PATH 環境変数に /usr/sfw/ib を追記します。
なお、設定ファイルのひな形として httpd.conf-example ファイルが用意されていますので、こちらを httpd.conf という名前でコピーして使用します。
# cd /etc/apache2 # cp httpd.conf-example httpd.conf
/etc/apache2/httpd.conf に以下を追記。
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch AllowOverride All order allow,deny Allow from all AddHandler cgi-script cgi DirectoryIndex gitweb.cgi SetEnv LD_LIBRARY_PATH /usr/local/lib:/usr/sfw/lib
なお、ライブラリパスの設定については SetEnv で LD_LIBRARY_PATH を指定する代わりに crle(1) コマンドでシステムのデフォルトのサーチパスを追加するという方法もあります。
- 設定例:(crleでライブラリサーチパスを追加する場合)
# /bin/crle -u -l /usr:/usr/lib:/usr/sfw/lib
※ /var/ld/ld.config ファイルが無い場合(デフォルトでは無い)/usr と /usr/lib は自動的に追加されるので明示的に指定する必要はありませんが、上記では念のため指定してます。
万一 which も ls もできない!といった自体になってしまって場合には慌てずオプションを再確認の上 crle コマンドを再実行してみてください。