]
トップ «前の日記(2009-07-13) 最新 次の日記(2009-07-15)» 編集

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 ユーザで作るってやる方式とは異なる。

お約束、この内容は私が調べながら書いたけども内容は無保証です。自分でやるときには何を自分でやっているか自覚的に作業してください。いまから行う作業をおこなってどのような損害がでたとしても私は何も補償しません。

  1. gitosisをサーバーにインストールする
  2. lv /usr/share/doc/gitosis/README.Debianを実行し、ドキュメントを読む
  3. 自分のマシン(クライアント)のid_rsa.pubを、サーバに転送する。sshの鍵を作ってない場合は、まず鍵を作りましょう。その場合は、man ssh_genkeyを参照。ssh-copy-idを使って、クライアントからサーバにssh鍵を転送すると便利でよいのですが、2つ注意点があります。
    1. 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: '(ここは公開鍵が表示される。たしかにユーザ名が入ってない)'
                  
    2. 仕方ないので、いったん、~/.ssh/authorized_keysを/tmpにコピーし chmod o+rw してから 最終行に、元の~/.ssh/id_rsa.pub を参考にユーザー名@マシン名を入れる。
  4. すると下記のように成功します。
    $ 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
    
    にファイルを置いています。このあたりも他の記事と違う所だと思います。

  5. あとは/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.
    
  6. 残りの部分は下記に上げる参照記事を参考にすれば、うまくやっていけると思います。上にあるものほど、英語情報ですがお勧めです。日本語情報は参考になりますが Debian風味な所はいくつか読み替える必要があります。

    あと、個人的な意見では gitosis に管理者やユーザが慣れることができるように、sandbox のリポジトリを作って実験領域を作るのが良いと思います。sandboxで様々な実験や実際の操作をして慣れたら、本当のプロジェクトで利用するという風にすると、管理者およびユーザの心理的障壁が下がるのと練度向上が期待できると思っています。ではでは

    1. /usr/share/doc/gitosis/にあるREADME.DebianおよびREADME.rst などの各種ドキュメント
    2. Gitosis on Debian Lenny(http://www.bloggroll.com/view/2)
    3. gitosis - Git リポジトリ群の管理とアクセス制御 vol.0(http://openbooth.org/archives/60.html)
    4. gitosis - Git リポジトリ群の管理とアクセス制御 vol.1(http://openbooth.org/archives/65.html)
    5. gitosis - Git リポジトリ群の管理とアクセス制御 vol.2(http://openbooth.org/archives/82.html)

_ [tDiary] bq plugin

src: 引用するテキスト
title: 引用元のタイトル
url: 引用元のURL

[blockquoteを使った引用を生成するより引用]

hereドキュメントを使った記法が、うまく書けない様な気がするけど、ぼちぼちやるか。