ももらぼっ!にっき


2012年06月20日 [長年日記]

_ [環境構築] Joe'sのVPSを借りてみた。

OSC2012 北海道に参加したらJoe'sのVPSを1年間無料で貸してくれるとのことで 早速申し込んでみました。 用途も何も考えてないのでアレですが、いろいろやってみたかった環境を 構築してみようと思っています。

_ [環境構築] gitoliteでgitサーバ環境を作成する

…というわけで、今後git環境を自力で構築する機会がありそうなので、 サーバもあることだしやってみることにしました。 google先生に聞いてみるとgitoliteを使うのが良いらしいので、 その環境作成について記録を残しておきます。

情報もそこそこあるし楽勝かと思ったんですが、最近gitoliteがメジャーバージョンアップした為か、 日本語で解説してくれているブログ等の手法が軒並み使えなかったので結構苦労しました…。

Git、Perl等のインストールについてはここでは割愛します。 適当にyumなりapt-getなりしてください。 また、今回はCentOS6.2で構築してますが、多分他のOSでも同じようにいける…はず。

gitolite用ユーザの作成

まずは、gitolite用のユーザを作成します。 githubにならってgitという名前にしてみました。

# useradd git

gitoliteのインストール

git cloneしてgitoliteをインストールします。

# cd /usr/local/src
# git clone git://github.com/sitaramc/gitolite
# gitolite/install -ln /usr/local/bin
# ls -l /usr/local/bin/gitolite
lrwxrwxrwx. 1 root root 36  6月 19 22:25 2012 /usr/local/bin/gitolite -> /usr/local/src/gitolite/src/gitolite

これで、/usr/local/binにgitoliteコマンドのシンボリックリンクが作成されます。 本体はcloneしたリポジトリ上のファイルなので、インストールしたからといって cloneしたリポジトリを消しちゃダメです。

管理者ユーザ用の公開鍵を配置

次に、管理用ユーザの公開鍵を見えるところに置きます。 その際のファイル名がそのまま管理者のユーザ名になるみたい。

admin$ scp ~/.ssh/id_rsa.pub gitserver:/tmp/admin.pub

公開鍵を作っていなければssh-keygenで適宜作成してくださいな。

gitoliteのセットアップ

作成したgitolite用ユーザにsuしてsetupすると、gitoliteの管理用リポジトリと テスト用リポジトリが作成されます。

# su - git
$ gitolite setup -pk /tmp/admin.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one

公開鍵じゃない?

私の環境ではsetupのところで以下のようなエラーが出てしまってハマりました。

$ gitolite setup -pk /tmp/admin.pub
FATAL: errors found before logfile could be created
FATAL: die      '/tmp/admin.pub' does not seem to be a valid ssh pubkey file

admin.pubが公開鍵じゃないよって言われていて、 確かに、ssh-keygen -lがエラーを出してしまってます。

$ ssh-keygen -l -f /tmp/admin.pub
/tmp/admin.pub is not a public key file.

いろいろ悩んだ結果、ssh-keygenのバージョンが合ってないのかな? と予想を付け「sudo yum update」したら解決しました。 予想が合っていたのかどうかは定かではないが、解決したのでよしとしています。 SSH難しい。

テスト用リポジトリで動作確認

※ここからは、基本的にgitoliteを構築したサーバではなく、ローカルの環境で作業します。 プロンプトの前のadminとかmomotaroとかはユーザ名だと思ってください。

まずは、テスト用のリポジトリで動作確認してみます。

admin$ git clone git@gitserver:testing.git
Cloning into 'testing'...
warning: You appear to have cloned an empty repository.
admin$ cd testing
admin$ echo "Hello gitolite." > hello.txt
admin$ git add hello.txt
admin$ git commit -m"first commit"
[master (root-commit) e68732c] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt
admin$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 221 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:testing.git
 * [new branch]      master -> master

うまく動いてるっぽいですね。

別のユーザを作成してみる。

管理者用のユーザでリポジトリの操作ができたので、 次は別のユーザを作成してみることにします。

まずは、管理用のリポジトリをcloneします。

admin$ git clone git@gitserver:gitolite-admin.git
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
admin$ cd gitolite-admin
admin$ tree
.
├── conf
│     └── gitolite.conf
└── keydir
       └── admin.pub

2 directories, 3 files

keydir以下に<ユーザ名>.pubという名前で公開鍵を置いて commit&pushするとユーザが登録されます。

admin$ cp /home/momotaro/.ssh/id_rsa.pub keydir/momotaro.pub
admin$ git add keydir/momotaro.pub
admin$ git commit -m"add momotaro user"
admin$ git push origin master

で、このmomotaro.pubを使ってgit cloneやpushすると 無事に作成されていることがわかります。

momotaro$ git clone git@gitserver:testing.git
momotaro$ cd testing
momotaro$ ls
hello.txt
momotaro$ echo "add comment." >> hello.txt
momotaro$ git commit -am"second commit"
momotaro$ git push origin master

リポジトリを追加してみる。

リポジトリを追加するには、conf/gitolite.confを編集するようです。

admin$ vi conf/gitolite.conf
admin$ git diff
diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index 007f160..e915cb0 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -3,3 +3,7 @@ repo gitolite-admin

 repo testing
     RW+     =   @all
+
+repo repotest
+    RW      =   admin
+    R       =   momotaro
admin$ git commit -am "add repotest repository"
admin$ git push origin master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 428 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /home/git/repositories/repotest.git/
To git@gitserver:gitolite-admin.git
   eae3c06..37ce1c6  master -> master

push時のログからリポジトリが追加されていることが分かります。 また、ついでにユーザ毎のアクセスコントロールもしてみたので、 その辺の検証をしてみることにします。

admin$ git clone git@gitserver:repotest.git
admin$ cd repotest
admin$ echo "Hello repotest." > hello.txt
admin$ git add .
admin$ git commit -m"first commit"
admin$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:repotest.git
 * [new branch]      master -> master

adminはRWなので、pushできていることが分かります。

momotaro$ git clone git@gitserver:repotest.git
momotaro$ cd repotest
momotaro$ cat hello.txt
Hello repotest.

momotaro$ echo "edit by momotaro" >> hello.txt
momotaro$ git commit -am "second commit"
momotaro$ git push origin master
FATAL: W any repotest momotaro DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

momotaroユーザはRなので、cloneはできてもpushはエラーになっています。 きちんと権限制御が働いていますね。すばらしい。

リポジトリを消してみる。

検証できたので最後にリポジトリを消してみます。 消す場合はconf/gitolite.confを編集するだけじゃダメっぽいです。

admin$ vi conf/gitolite.conf
admin$ git diff
diff --git a/conf/gitolite.conf b/conf/gitolite.conf
index e915cb0..007f160 100644
--- a/conf/gitolite.conf
+++ b/conf/gitolite.conf
@@ -3,7 +3,3 @@ repo gitolite-admin

 repo testing
     RW+     =   @all
-
-repo repotest
-    RW      =   admin
-    R       =   momotaro
admin$ git push origin master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 369 bytes, done.
Total 4 (delta 1), reused 1 (delta 0)
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
remote: WARNING: split conf not set, gl-conf present for 'repotest'
To git@gitserver:gitolite-admin.git
   37ce1c6..055e2c7  master -> master

何やら不審なエラーが出てます。 gitoliteを構築したサーバにログインして手でリポジトリを消してやる 必要があるようでした。

admin$ ssh gitserver
$ su -
# su - git
$ rm -rf repositories/repotest.git

これで本当にいいかは不明です…。 よっぽどのことが無い限りリポジトリは消さない方がよさそうです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ moata [can somebody please explain in english why am getting erro..]

_ とり [remote: WARNING: split conf not set, gl-conf present for '..]


2012年05月24日 [長年日記]

_ [tDiary] tDiaryのバージョンを上げた。

ずっと放置していたtDiaryのバージョンを最新の3.1.3まであげました。 ぱっと見きちんと動いているように見えるけど、どこか変な表示の箇所を見つけたら教えてくれると助かります。

ついでに取得元をsourceforgeのsvnからgithubに変えたので、自分用の定義ファイルもバージョン管理できるようになったのが地味に嬉しい。


2012年05月16日 [長年日記]

_ gistのソースを張ってみるテスト。

ものすごいご無沙汰ですが、生きてます。

最近、自分用にちょろっと作ったスクリプトをgistに登録するようにし始めたので、その内容を日記に貼りつけてみるテストです。


2010年04月01日 [長年日記]

_ [WM] W-ZERO3 Mail Filter Ver.0.23テスト公開。

さて、前回のにっきから1ヵ月半ほど放置してしまいましたが、とりあえずぶりさんでも動くといいなーと思いながらwmfの修正版をテスト公開してみます。

試してみていただける人がいましたら、ここから持っていってください。

いただいたコメントによると、WILLCOM UI2.0を使っているとwmfが起動しないらしいので、動かない場合は、WILLCOM UIを切って試してみていただけると。人柱大募集ですが、相変わらず対応は遅い気がしてなりません。すみません。

というわけで修正点は以下の通りです。

  • HYBRID W-ZERO3に対応するため、初代W-ZERO3を前提とした初期設定値をやめた。

追記

ぶらっく あんどさんのツッコミを見落としてました。 「受信トレイ」か「受信フォルダ」かの違いってことなんですね。

であれば、このテスト版を使ってもらって、(既にWMFを試している場合は)一度設定ファイル(wmf.ini)を削除or別名に変更してからWMFを起動するとうまく動作してくれるような気がします。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ DIJO [はじめまして。 hybridに機種変してからwmfを使用し始めました。 wmfでは連絡先の分類項目を参照してメール..]

_ かえぅすき [使用状況報告です。 私の環境(WillcomUI不使用UI向けアップデートもしてません)では DIJOさんと違い正常..]

_ りょう [はじめまして。 人柱版、ありがたく使用させていただきます。 Hybridに機種変をしていろいろ試行錯誤しております。..]


2010年02月16日 [長年日記]

_ [WM][W-ZERO3] W-ZERO3 Mail Filter。

さて、とりあえずHYBRID W-ZERO3で動くと良いなーって状態に修正することができたのだけれど、どうやってテストしようか…。 実機をもっていないので、どういう状態にしておけばよいか、余り理解できていないのだよね。 エミュでいろいろやってみるつもりだけどうまくいくかなぁ。 これまで、デバッグは常に実機で行っていたので、エミュの扱いに慣れていないのですよ。

とりあえず人柱になってくれそうな人を探して、手伝ってもらうかなー。

…という内容をみて、「あ、自分のことだ」と思った人は手を上げてくださいねw

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ Gekko [はじめまして。 ずっとWMFが動いていたのに、UIメール起動直後、WMFが動かなくなったのは、ぶらっく あんどさんの..]

_ ぶらっく あんど [ここでやりとするのも何ですが。 他でも情報が出ていますが、WILLCOM UI 2.0にした場合、wmf.iniの「..]

_ saito [はじめまして。 Mail Filterとは関係ないですが、HYBRID W-ZERO3でのexecselectの動作..]