経緯
現在契約しているCORESERVERに GitPrep (GitHubクローン)をインストールして使用しようとしましたが、結局うまくいかなかったという報告です。
インストール操作
Gitのインストール
CORESERVERにはgitがインストールされていないため、まずそこから始めました。
git-2.6.2(現時点での最新版)のソースコードをダウンロードし、以下のようにインストールしました。
tar xzf git-2.6.2.tar.gz cd git-2.6.2 make configure ./configure --prefix=$HOME/local make make install
その後、.bashrcに
export PATH=$HOME/local/bin:$PATH
の行を追加してパスを通しました。
GitPrepのインストールおよび設定
以下の順にインストールおよび設定を行いました。
- ソースコード(当時の最新版であるバージョン1.10)をダウンロードし、ホームページの内容に従ってインストール
- gitprep.my.confを作成し、インストールされたgitの場所などを適切に指定
- http://arat.xyz/gitprep/gitprep.cgi にアクセスし、adminユーザーおよび一般ユーザーを作成
ここまでは正しく動作しました。
一般ユーザーでログインした後に、「Initialize this repository with a README」にチェックを入れて新規レポジトリを作成しようとすると、「Internal error」が表示されてしまいレポジトリの作成に失敗してしまいました。
原因の究明
経過をGitPrepの作者である木本さんに連絡するなどして原因を明らかにしようとしました。
現時点で分ったことは以下の通りです。
- 新規レポジトリ作成時にgit pushを行うが、 CGIプログラムとして動かした場合にエラーが出る。
- サーバにSSH接続してコマンドラインから同じことを行ってもエラーは出ずに正しく動作する。
- CGIプログラムではなく、localhost:10020でアクセスして使用する方法では何の問題もなく使用できる。
- かなりの試行錯誤の結果、簡単なシェルスクリプト(CGI)を書いて、 webから実行してエラーメッセージを表示させたところ、 git push時に以下のエラーが出ました(ちなみにCGIプログラムをコマンドラインから直接実行するとエラーは出ませんでした)。
error: cannot create thread: Cannot allocate memory fatal: send-pack: unable to fork off sideband demultiplexer error: cannot create thread: Cannot allocate memory fatal: bad object 13f4ebbd6ef5a638511e543e16b0ebc544695403
つまり、 CGIプログラムでgit pushを実行させた際に新たなスレッドが作成されないのが原因のようです。 Apacheの設定が関係しているのかもしれません。
これ以上は自分での解決は無理と判断したので、これまでの内容をCORESERVERのサポートに伝えました。ただし、Apacheの設定を変更するなどの処置が必要になるかもしれないため解決は難しいかもしれません。
現在はさくらレンタルサーバのスタンダード(無料お試し)上で動かしているため、問題なく動作しています。 CORESERVERのサポートからの回答次第ではさくらレンタルサーバに完全移行することも考えています。
コメントを残す