スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

git-daemon (gitプロトコル)におけるcloneエラー

git-daemonをVPSサーバへ構築する際に少しハマったので
こちらへ紹介しておきます。

通常、Linuxでよくつかわれるアプリやライブラリのインストール先は /usr/local だと思うのですが、ソースファイルからインストールしたときなどに別の場所へインストールしたいという場合もあるかと思います。

この場合に注意しなければならないのが、
gitをコンパイルするときのzlibのバージョンです。

CentOS 5.7だとデフォルトのzlibのバージョンが1.2.3なのですが、このバージョンのzlibをコンパイル時にリンクすると、git-daemonコマンドを実行した際に「/lib/libz.so.1: no version information available」といった警告が発生します。

gitコマンドそのものはこの警告が発生しても動くのですが、git-daemonを動かしている際に、コンソールに余計な文字列が出力されるとgitプロトコルによるcloneに失敗するようで、クライアント側で「fatal: protocol error: bad line length character: git-」といったエラーメッセージが出力されてcloneに失敗します。

これを解決するには、サーバ側のgitをコンパイルする際にリンクするzlibのバージョンを1.2.5以降にする必要があります。具体的には、gitのコンパイル時のオプション指定で

./configure --prefix=/opt/git/git-1.7.7 --with-zlib=/opt/zlib/zlib-1.2.5


このように1.2.5のzlibの場所を明示してあげれば、git-daemon実行時に警告が発生しなくなりますので、gitプロトコルによるcloneも問題なく成功するようになります。


サーバ側の.bashrcなどに余計なechoがあるとgit-daemonに失敗するというの話は聞いたことがありましたが、まさか警告が出ているだなんてなかなか気づきませんでした。(というのも、rootユーザでgit-daemonを実行した際は何も警告が発生せず、git-daemon用に作成したユーザで実行すると警告が発生していましたので、rootでインストール作業をすることが多いと中々気付けないですね)

サーバで試しにgit-daemonを動かす際も、

sudo -u gituser git daemon --export-all


といったように、ユーザを明示してから実行してみた方がいいですね。(って、これが当たり前なのですが…)
スポンサーサイト
プロフィール

Author:Kou
モバイル関連の開発ばかりやってる人のブログです。たまにWebもやります。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。