読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

GitLabで始めるプライベートリポジトリのある生活

gentoo linux git

どこでもいつでもGitと一緒。

GitLabはオープンソースGitHubクローンで、Amazon EC2やさくらVPSなどにプライベートリポジトリを立てて使えます。

プライベートリポジトリのある生活はかなり快適です。非公開のコードや各サーバのetc-filesなどをプライベートリポジトリに入れておき、GitHubのようなWeb UIで管理できるのは便利です。Eclipseの場合は公開リポジトリとプライベートリポジトリを組み合わせて使うと便利です。

GitLabのインストールはちょっと手間がかかります。

The installation consists of 6 steps:

  1. Install packages / dependencies
  2. Install ruby
  3. Install gitolite
  4. Install and configure Gitlab.
  5. Start the web front-end
  6. Start a Resque worker (for background processing)
https://github.com/gitlabhq/gitlabhq/blob/master/doc/installation.md

Amazon EC2 (micro instance) ではメモリが厳しかったため、自宅サーバに構築して使っています。さくさく動いています。

GitLabをGentoo Linuxに構築する

基本的にはドキュメントの手順に従います。はまった点をメモで残しておきます。

依存パッケージ

GitLab自体はドキュメントの通りにgit cloneします。

以下のパッケージはPortageから入れました。

他のパッケージはbundle installでOKです。ただし、charlock_holmesのビルドが失敗したのでリンカオプションを一時的に変更しました*1

リポジトリはどこにあるの?

Gentooの場合は /var/lib/gitolite/repositories にリポジトリがあります。gitoliteでpush & pullできることを確認しておきましょう。

initスクリプトがないんだけど?

ドキュメントのinitスクリプトをベースにGentoo向けに書きました。

※上記が見えない場合は http://gist.github.com/2360407

rubypythonの問題

Pygmentsによるsyntax highlightingがうまくいかないようです。log/production.logに以下が出ていました。

ActionView::Template::Error (undefined method `Py_IsInitialized' for RubyPython::Python:Module):

とりあえずPythonライブラリの検索パスを修正したら解決しました。

# gitlab/vendor/bundle/ruby/1.9.1/gems/rubypython-0.5.3/lib/rubypython/pythonexec.rb

  def find_python_lib
    # By default, the library name will be something like
    # libpython2.6.so, but that won't always work.
    libbase = "#{FFI::Platform::LIBPREFIX}#{@basename}"
    libext = FFI::Platform::LIBSUFFIX
    #libname = "#{libbase}.#{libext}"
    libname = 'libpython2.7.so'
すでに存在するリポジトリの扱い

GitLabを使い始める前から存在するリポジトリは管理画面に現れません。同じ名前で New Project すると、GitLab上にリポジトリが追加されて内容が表示されるようになります。


(4/13修正)gitosisと書いていたのをgitoliteに修正しました。書き間違いです。

*1:詳しくは https://github.com/brianmario/charlock_holmes/issues/10 を参照してください。