Yukiharu YABUKI の tDiary
このtDiaryを検索します。
2009-07-14 [長年日記]
_ [Debian] gitosis : setting of Debian GNU/Linux Lenny way
gitを使う上で、複数のgitリポジトリを扱いたい場合、githubなどのサービスを利用する人もいるだろう。でも、全員が github のサービスを利用できるわけでもない。自分の書いたコードや文章を自分のサーバに保存したいという要求がでてくることは自然なことである。
そこで、Debian GNU/Linux Lenny に入っている、gitosis をつかって Debian package の意図に沿った gitosis の設定方法について少し書いてみる。
Debian GNU/Linux lenny に入っている gitosis パッケージは、gitosis というユーザを作っており、ちまたに言われている git ユーザで作るってやる方式とは異なる。
お約束、この内容は私が調べながら書いたけども内容は無保証です。自分でやるときには何を自分でやっているか自覚的に作業してください。いまから行う作業をおこなってどのような損害がでたとしても私は何も補償しません。
- gitosisをサーバーにインストールする
lv /usr/share/doc/gitosis/README.Debian
を実行し、ドキュメントを読む- 自分のマシン(クライアント)のid_rsa.pubを、サーバに転送する。sshの鍵を作ってない場合は、まず鍵を作りましょう。その場合は、
man ssh_genkey
を参照。ssh-copy-idを使って、クライアントからサーバにssh鍵を転送すると便利でよいのですが、2つ注意点があります。- ssh-copy-idを使うと、簡単に.ssh/id_rsa.pubをコピーできて便利なのですが、私の場合、サーバ機の~/.ssh/authorized_keysが、鍵だけコピーされていました。そのため
sudo -H -u gitosis gitosis-init < ~/.ssh/authorized_keys
とすると、次のようなエラーを吐いていました。yabuki@Ernalda:~$ sudo -H -u gitosis gitosis-init < .ssh/authorized_keys We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for yabuki: Traceback (most recent call last): File "/usr/bin/gitosis-init", line 8, in
load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-init')() File "/var/lib/python-support/python2.5/gitosis-0.2-py2.5.egg/gitosis/app.py", line 24, in run return app.main() File "/var/lib/python-support/python2.5/gitosis-0.2-py2.5.egg/gitosis/app.py", line 38, in main self.handle_args(parser, cfg, options, args) File "/var/lib/python-support/python2.5/gitosis-0.2-py2.5.egg/gitosis/init.py", line 121, in handle_args user = ssh_extract_user(pubkey) File "/var/lib/python-support/python2.5/gitosis-0.2-py2.5.egg/gitosis/init.py", line 39, in ssh_extract_user raise InsecureSSHKeyUsername(repr(user)) gitosis.init.InsecureSSHKeyUsername: Username contains not allowed characters: '(ここは公開鍵が表示される。たしかにユーザ名が入ってない)' - 仕方ないので、いったん、~/.ssh/authorized_keysを/tmpにコピーし chmod o+rw してから 最終行に、元の~/.ssh/id_rsa.pub を参考にユーザー名@マシン名を入れる。
- ssh-copy-idを使うと、簡単に.ssh/id_rsa.pubをコピーできて便利なのですが、私の場合、サーバ機の~/.ssh/authorized_keysが、鍵だけコピーされていました。そのため
-
すると下記のように成功します。
$ gitosis-init < /tmp/authorized_keys Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
これを見てもわかるように、Debian GNU/Linux Lenny に収録されている。gitosis は
gitosis@Ernalda:~$ ls -la /srv/gitosis/ 合計 24 drwxr-xr-x 5 gitosis gitosis 4096 2009-07-14 00:33 . drwxr-xr-x 3 root root 4096 2009-06-26 08:47 .. lrwxrwxrwx 1 gitosis gitosis 56 2009-07-14 00:33 .gitosis.conf -> /srv/gitosis/repositories/gitosis-admin.git/gitosis.conf drwx------ 2 gitosis gitosis 4096 2009-07-14 00:33 .ssh -rw------- 1 gitosis gitosis 895 2009-07-14 00:33 .viminfo drwxr-xr-x 2 gitosis gitosis 4096 2009-07-14 00:33 gitosis drwxr-xr-x 3 gitosis gitosis 4096 2009-07-14 00:33 repositories gitosis@Ernalda:~$ ls -la /srv/gitosis/repositories/ 合計 12 drwxr-xr-x 3 gitosis gitosis 4096 2009-07-14 00:33 . drwxr-xr-x 5 gitosis gitosis 4096 2009-07-14 00:33 .. drwxr-x--- 8 gitosis gitosis 4096 2009-07-14 00:33 gitosis-admin.git
にファイルを置いています。このあたりも他の記事と違う所だと思います。 - あとは/usr/share/doc/gitosis/README.Debianに書いてあったり、参照した記事と同じように git clone します。
yabuki@yelona:~/scm/git/Ernalda$ git clone gitosis@192.168.11.250:gitosis-admin.git Initialized empty Git repository in /home/yabuki/scm/git/Ernalda/gitosis-admin/.git/ remote: Counting objects: 5, done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 0), reused 5 (delta 0) Receiving objects: 100% (5/5), done.
残りの部分は下記に上げる参照記事を参考にすれば、うまくやっていけると思います。上にあるものほど、英語情報ですがお勧めです。日本語情報は参考になりますが Debian風味な所はいくつか読み替える必要があります。
あと、個人的な意見では gitosis に管理者やユーザが慣れることができるように、sandbox のリポジトリを作って実験領域を作るのが良いと思います。sandboxで様々な実験や実際の操作をして慣れたら、本当のプロジェクトで利用するという風にすると、管理者およびユーザの心理的障壁が下がるのと練度向上が期待できると思っています。ではでは
- /usr/share/doc/gitosis/にあるREADME.DebianおよびREADME.rst などの各種ドキュメント
- Gitosis on Debian Lenny(http://www.bloggroll.com/view/2)
- gitosis - Git リポジトリ群の管理とアクセス制御 vol.0(http://openbooth.org/archives/60.html)
- gitosis - Git リポジトリ群の管理とアクセス制御 vol.1(http://openbooth.org/archives/65.html)
- gitosis - Git リポジトリ群の管理とアクセス制御 vol.2(http://openbooth.org/archives/82.html)
_ [tDiary] bq plugin
src: 引用するテキストtitle: 引用元のタイトルurl: 引用元のURL
[blockquoteを使った引用を生成するより引用]
hereドキュメントを使った記法が、うまく書けない様な気がするけど、ぼちぼちやるか。