仕事がちいとも追いつかないのにやる気がちいともわかないので、半ば(というか完全に)ヤケになりつつcvswebを導入してみたら想像以上に障害にあたったのでメモる。
手始めにcvswebをインストール(あ、環境はvine3.1です)。
# apt-get install cvsweb
これにより、cvsweb-1.112-0vl2がインストールされて以下の2ファイルができた模様。
/home/httpd/cgi-bin/cvsweb.cgi
/etc/httpd/cvsweb.conf
cvsweb.cgiを適当な箇所に持ってきた後、cvsweb.confをいじる。26行目のCVSROOTでリポジトリがちゃんと設定されてさえいれば、特に問題なくインストール完了っぽい。ブラウザ経由でアクセスしたら、あっけなくモジュール一覧が見えてしまった。
とっ ても カン タン だ!
さーて、リポジトリ内をゆったりクルージングだ♪ふんふふーん(現実逃避)。しかし
Error: Failed to spawn GNU rlog on '/path/to/repository/module/.hoge,v'
did you set the $ENV{PATH} in your configuration file correctly ?
とかいうエラーが出てモジュール内のファイル一覧が見れない。フンガー。これはperlの汚染チェック機能(Taint)が働いていることが原因らしいので、とりあえずそのフラグを外して再度アクセスしてみることに。具体的にはcvsweb.cgiの1行目をこんな感じに修正。
#!/usr/bin/perl -wsT
↓
#!/usr/bin/perl -ws
■参考
cvsweb で Failed to spawn GNU rlog on エラー
おおお見える!モジュール内のディレクトリやらファイルやらが見えるぞ!!と思いきや、ディレクトリは見えているのにファイルがまったく見えてない。あれ?と思っていると今度は
NOTE: There are 4 files, but none matches the current tag ()
などというエラーが下の方に出ている。コレはrcsが入ってないことによるエラーらしいので、追加でインストールしておく。
# apt-get install rcs
■参考
CVSWeb導入メモ
み、見える!ディレクトリはおろかファイルまで!奥の奥までじっくり見てやるうウヒヒじゅるり
しかし今度はファイルのリビジョン一覧からダウンロードができない。downloadをクリックしても真っ白なポップアップが表示されるだけだ。Firefoxだとこんな感じなのでアレ?と思ってたけど、IEで見てみたらエラーが出てた。んがー。
Error: Unexpected output from cvs co: cvs [checkout aborted]:
Absolute module reference invalid: `/memo/cvs.txt'
Check whether the directory /path/to/repository/CVSROOT exists
and the script has write-access to the CVSROOT/history file if it exists.
The script needs to place lock files in the directory the file is in as well.
当初はCVSROOT/historyに書き込み権限がないズラとかCVSROOTにロックファイルが作れねえズラとかいうエラーかと思ってたけど、CVSROOT/historyは書き込み権限がついているし、CVSROOT/config にはLockdir指定もしてあるしで、よく考えたら別のところが原因っぽい。で、ググってみたらこんなスレッドが見つかった。
■参考
[cvs-jp-info 374] CVSWEB.CGI でエラー
どうやらhistoryとかロックファイルとかの話じゃなく、checkout時にモジュール名を絶対パスで渡そうとしてるのが原因のエラーらしい。なんだcvswebのバグじゃん。だけど「ちょっと回避できそうにないですね」でスレッド終了しちゃってるYO!どしたらいいんだYO!しかたないので海外のサイトを当たってみたらこんなの発見。
■参考
Re: authorisation failed in CVSweb while downloading...
ねえママン、キレイなパッチが落ちてるよ!
で、結局このパッチをあててみたらちゃんとダウンロードできるようになりました。わーいわーい。
エラーメッセージごとの対応方法をまとめると、
- 「Failed to spawn GNU rlog」の時はcvsweb.cgiのTオプションを外してみれ
- 「There are n files, but none matches the current tag ()」の時はrcs入れてみれ
- 「Absolute module reference invalid」の時はcvsweb.cgiを修正してみれ
の3本です。2についてはインストールすれば解決、1と3についてはcvsweb.cgiを修正すればOKということで。一応、上記1と3の修正パッチを置いときます。当然オウンリスクでどうぞ。
cvsweb.cgiのTオプション外し&downloadバグフィックスをするパッチ
Perlわかってないのでなんとも言えないけど、Tオプションを外してPerlスクリプトを利用するのはセキュリティリスクの増加に繋がるような気がしますが、そこんとこどうなんでしょう。信頼できるスクリプトの場合は問題ないのかな?教えてエロい人。
わーい仕事終わったー!クライアントのムチャな要望を全部やっつけてきたYO!
ちなみにcvsweb-1.112-0vl2ってちょうど3年前に作られたRPMパッケージみたいなんだけど、最近のを入れてたらこんなに大変な目にあわないで済んだのだろうか?
せんせー!なんか投稿者が欲情してるっぽいのは気のせいですか?
冬だからね。