Home > setup Archive
setup Archive
gitosis - Git リポジトリ群の管理とアクセス制御 vol.1
gitosis - Git リポジトリ群の管理とアクセス制御 vol.0 の続編です。
前回のエントリでは、Git リポジトリの管理に対する不満と、それを少し改善してくれる gitosis を簡単に紹介をしました。このエントリでは gitosis のインストール編ということで話を進めていきます。
基本的に Hosting Git repositories, The Easy (and Secure) Way のエントリと同様です。本家の方が安心という人はそちらのエントリをどうぞ。
サーバ/クライアント(ローカル)両方で作業する必要があるので、識別しやすいように以下の表記をします。
サーバ作業のプロンプト表記
remote%
クライアント(ローカル)作業のプロンプト表記
local%
また、サーバアドレスを便宜上 remote-name.com とします。
まずは Git リポジトリをホストするサーバに git 及び gitosis をインストールします。サーバにログインしてインストールを開始します。
local% ssh keiji@remote-name.com remote% sudo aptitude install git git-core remote% sudo aptitude python python-setuptools # gitosis は python で書かれてるため必要に応じてインストールする。 remote% mkdir ~/src remote% cd ~/src remote% git clone git://eagain.net/gitosis.git remote% cd gitosis remote% sudo python setup.py install # gitosis をシステムにインストールする。
ここまでで gitosis のインストールは終了。僕は ubuntu 8.04 server edition で試していますが特に問題なくインストール完了しました。
次に、サーバ上にホストする Git リポジトリの管理用ユーザを作成します。gitosis は ~/.ssh/authorized_keys をいじる(生成する)ので、~/.ssh/authorized_keys を編集している場合は gitosis によって勝手に上書きされてしまって「うわーん」な状況になってしまいます。そのため Git 用に新しくユーザを作った方が無難です。
そういうことで、ここでは git ユーザを作成します。このユーザは公開鍵によるログインしか行わないのでパスワードログインは無効にしておきます。
remote% sudo adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /home/git git
git ユーザの作成が完了したら、gitosis が管理する Gitリポジトリコンテナ1 を作成します。このコンテナを作成するには、少なくとも一つはアカウントを登録しなければなりません(ここで登録するアカウントはコンテナの管理アカウントになります。管理アカウントは後で変更できます)。gitosis は公開鍵 によってアカウントを識別するので、まずは自分自身のアカウントを作るために自分の公開鍵をサーバに転送することにします(公開鍵を持っていない場合は適宜作成する)。
local% % scp ~/.ssh/id_rsa.pub keiji@remote-name.com:/home/keiji # 自分の公開鍵をサーバに転送
さて、ようやく gitosis のリポジトリコンテナを作成するときがきました!コンテナの作成には gitosis に付属する gitosis-init スクリプトを使用します。このスクリプトは gitosis のインストールが完了していれば、既にシステム上に存在しているはずです。
% sudo -H -u git gitosis-init < /home/keiji/id_rsa.pub # gitosis-init を用いて先程転送してきた鍵を登録。上で作ったユーザ(git)で実行 Initialized empty Git repository in ./ Initialized empty Git repository in ./ % sudo ls /home/git # git ユーザのホームディレクトリにgitosisとrepositoriesという二つのディレクトリが作られてる gitosis repositories
gitosis-init を実行すると /home/git は以下のファイルとディレクトリが作られているはずです。
/home/git/
|-- .gitosis.conf -> /home/git/repositories/gitosis-admin.git/gitosis.conf
|-- .ssh
| `-- authorized_keys # gitosis-admin.git の内容が push されると、gitosis-admin.git の内容に応じて再生成される
|-- gitosis
| `-- projects.list
`-- repositories
`-- gitosis-admin.git
そして最後に gitosis がアクセス制御に使用する Git リポジトリ(gitosis-admin.git) に含まれる post-update フックスクリプトのパーミッションをチェックしておきます。post-update フックスクリプトには実行権限が付与されている必要があります。通常 755 になっているはずですが、なっていなかったら適宜 chmod して下さい。これは重要な作業です。
パーミッションが以下のようになっていれば問題ありません。
remote% sudo ls -l /home/git/repositories/gitosis-admin.git/hooks/post-update -rwxr-xr-x 1 git git 69 2008-11-06 15:26 /home/git/repositories/gitosis-admin.git/hooks/post-update
これでサーバ上のリポジトリコンテナのセットアップは完了!
クライアントからこのリポジトリコンテナにアクセスできるかどうか試してみます。
local% mkdir -p ~/workspace/hosting-self local% cd ~/workspace/hosting-self local% git clone git@remote-name.com:gitosis-admin.git # or ssh://git@remote-name/gitosis-admin.git
gitosis-admin.git を git clone することができれば完了です。
gitosis-admin.git リポジトリについて簡単に説明します。 このリポジトリはアカウントを登録/削除したり、アクセス制御を設定するために使用します。アカウントを追加登録したい場合には、リポジトリ内の keydir ディレクトリ以下に追加アカウント用の公開鍵を git add することで行います。アクセス制御を設定するにはリポジトリ内にある gitosis.conf を編集します。
もちろん、この gitosis-admin.git リポジトリ自体もアクセス制御の対象です。
gitosis-admin.git については次のエントリでもう少し詳しく紹介します。
- 複数の Git リポジトリを収容するという意味で僕が勝手にリポジトリコンテナと表現した ↩
- Comments: 0
- Trackbacks: 6
インストール済みの Git を 1.6 系にアップグレードする
- 2008-10-07 (火)
- setup
Ubuntu 8.04 のパッケージリポジトリから Git をインストールすると 1.5.4 くらいのバージョンのものが入ります(2008-10-07now)。1.6系は既にリリースされているようですが、特に必要に迫られることもなかったのでそのまま 1.5 系を使っていました。しかし、今日 git.git のクローンを久々に git pull したらかなりの変更がおっこちてきました。そのうち、graph.c というファイルが追加されていたので試しに最新版の Git をビルドして使ってみました。
すると git log --graph --pretty=oneline で、前から「こんなのあったらいいなぁ」と思ってた表示形式でログを一覧できることが分かりました。こんな表示。
* 38f7950acc657b03265c488b301fd779a4d09512 Merge branch 'branch-a' |\ | * 54a96d32e7add6d89532666bf6f39ac322d2da42 modified * | 4a3cd0a96e26684bdc17336f451f355b37aa43f5 MANIFEST.SKIP file added * | 17636f86133c3dc6cb6d78d7ee9d2c6671042388 modified at master |/ * 7f5bf37677b166506a209b215274510316bec791 initial
ということで最新版をインストールすることにしました。ただ、ソースからビルドすると後々管理が面倒になるので、Git 1.6 の debパッケージをホストしてるリポジトリを探してインストールすることに。以下は Git 関係のパッケージをアップグレードする手順です。
まず、/etc/apt/sources.list に Git の最新版をホストしてるリポジトリを追加します。以下の二行を追加します。hardy 以外のバージョンを使ってる場合は適宜 https://launchpad.net/~smartlounge/+archive から探すと良いと思います。
deb http://ppa.launchpad.net/smartlounge/ubuntu hardy main deb-src http://ppa.launchpad.net/smartlounge/ubuntu hardy main
次に、 インストール作業。
% sudo aptitude update % sudo aptitude safe-upgrade % sudo aptitude install git-core gitk git-gui git-doc
これでパッケージの更新は終わり。 apt 素晴らしい。ただし、今回はサードパーティのリポジトリを追加しているのでインストール途中に脅されます。
警告: 以下のパッケージは信頼できないバージョンがインストールされます! 信頼できないパッケージはシステムのセキュリティを危うくする可能性があります。 自分がこのインストールを望んでいると確信できる場合のみ、インストールを先に進め てください。 git-gui gitk git-core この警告を無視して意地でも先に進みますか? 続行する場合は "Yes" を、中断する場合は "No" を、入力してください:
ですが承知の上ですので、サクっと Yes と応えました。
念のため、ちゃんと最新のバージョンが入ったかどうか確認しておきました。
% git --version git version 1.6.0.2
ちゃんと入ったみたいです。 zsh 用 completion の更新はどうすれば良いか分かってないのでそのままです。completion は非常に重宝してる(というか無いと非常にイライラする)のではやいところ方法を見つけたいところです。
- Comments: 0
- Trackbacks: 0
Ubuntu に M+IPA フォントをインストールする
- 2008-09-20 (土)
- setup
フォントをインストールする度にググっている気がするので、メモとして残しておく。
手順
- フォントをダウンロードする
- 解凍
- フォントをインストール (~/.fonts にコピー, ~/.fonts ディレクトリがない場合は予め作っておく)
- フォントキャッシュを更新
ターミナルで作業する(Nautilus とか使って解凍/コピーしてもいい)
% mkdir -p ~/fonts
%
% wget "http://osdn.dl.sourceforge.jp/mix-mplus-ipa/25997/mixfont-mplus-ipa-TrueType-20060520p1.tar.bz2"
% tar jxf mixfont-mplus-ipa-TrueType-20060520p1.tar.bz2
% cp mixfont-mplus-ipa-TrueType-20060520p1/opfc-ModuleHP-1.1.1_withIPAFonts_and_Mplus/fonts/M+*.ttf ~/.fonts/
%
% fc-cache -f
以上でインストールは終了。一応フォントキャッシュが更新されているから確認する。
% fc-list | grep 'M\+'
M+1P+IPAG:style=regular
M+2P+IPAG circle:style=regular
M+1P+IPAG circle:style=regular
M+1VM+IPAG circle:style=regular
M+2P+IPAG:style=regular
M+2VM+IPAG circle:style=regular
あとは、 システム > 設定 > 外観の設定 から設定する等々…
M+IPA フォントは結構カワイイ字体で気に入ってます。
- Comments: 5
- Trackbacks: 0
Ubuntu で e-mobile(D02HW) を使う
- 2008-08-30 (土)
- setup
外出先でもネットに繋げる環境が必要になったので e-mobile と契約した。ホストマシンが ubuntu なのですが、ググってみると動作報告がチラホラと見つかるので安心して契約した。安心して契約したのですが、上手くいかない方法もあったのでエントリとしてあげておくことにする。
まず、僕の動作環境
- ubuntu 8.04
- D02HW (e-mobile 端末)
接続のために参考になったページは Ubuntu日本語フォーラム / Emobile D02HW です。
接続方法はいたって簡単です。GnomePPPを使って設定すると上手くいかなかった(なぜか ‘ネットワークの設定’ ダイアログを利用した場合も同様に接続できなかった)ので、直接ダイアルアップ用の設定ファイルを編集する方法で e-mobile の端末設定を行いました。設定は全てターミナルで作業します。
$ sudo sh -c 'cat > /etc/ppp/peers/ppp0'
user "em"
connect "/usr/sbin/chat -v -f /etc/chatscripts/ppp0"
/dev/ttyUSB0
115200
noipdefault
usepeerdns
defaultroute
persist
noauth
$ sudo sh -c 'cat > /etc/chatscripts/ppp0'
TIMEOUT 60
ABORT ERROR
ABORT BUSY
ABORT VOICE
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO DIAL TONE"
ABORT "NO ANSWER"
"" "ATZ"
"" "AT&FH0M0"
OK-AT-OK "ATDT*99***1#"
TIMEOUT 75
CONNECT
設定自体はこれで終わりです。簡単
次に、e-mobile 端末を↑で設定を行ったマシンに接続して端末のライトがブルー色に点滅するのを待ちます。
ライトがブルー点滅をはじめたら接続準備ができたということ (だと思う) なので、ネットワークへの接続を開始します。
まだターミナルで作業します。以下のコマンドを実行します。
$ sudo pon ppp0
暫くすると e-mobile 端末のブルー点滅が常時点灯に変わると思います。ブルーのライトが常時点灯するようになったらネットワークへの接続が成功しています。以下のコマンドを実行して接続確認してみます。
$ ping www.google.com
レスポンスが返ってきたら無事接続成功です。端末のブルーのライトが点滅したままの場合、ネットワークに接続できていないので、以下のコマンドを実行して端末を再認識させてから、再度↑の通り pon しなおしてみると上手くいくかもしれません。ただし、端末のブルーの点滅をはじめる前に pon しても上手くいきませんので注意。
$ sudo modprobe -r uhci_hcd
$ sudo modprobe uhci_hcd
接続するためにわざわざターミナルでコマンドを実行するのは面倒なので、一度マシンを再起動します。起動すると画像のネットワーク管理用の通知領域に ダイアルアップ接続 という選択肢が増えていますので、これを使って接続と切断を管理できるようになります。
ただし、これは無線LANの接続状態のインジケーターとは連動していないので接続できているかは e-mobile の端末がブルー点灯しているかで確認します。
windows と比べると設定が面倒ですが、一度設定できてしまえばあとは
- e-mobile 端末を ubuntu マシンに接続
- ブルー点滅するのを待つ
- ネットワークの通知領域から [ ダイアルアップ接続 > ppp0 via Modem に接続します ] をクリック
という手順なのでよしとしましょう。
接続が上手くいかない場合は、デバイスを再認識させる必要がありますが。
$ sudo modprobe -r uhci_hcd
$ sudo modprobe uhci_hcd
許容できる範囲じゃないでしょうかね。
- Comments: 2
- Trackbacks: 0
好きな場所に cpan モジュールをインストールする
- 2008-08-29 (金)
- setup
cpan モジュールを /usr/share/local といったシステムグローバルな場所にではなく ~/local といった個人のディレクトリにインストールしたい (or しなければならない) 場合の cpan シェルの設定方法を備忘録的に書き残しておく。因みに僕の環境は ubuntu 8.04 + perl 5.8.8 + zsh。
今回は cpan というユーザを作って、$HOME/local 以下に cpan モジュールをインストールできるようにしてみる。まずは、とにもかくにも cpan を実行する。
$ cpan
You don't seem to have a user configuration (MyConfig.pm) yet.
Do you want to create a user configuration now? (Y/n) [yes]
初回起動時は、設定のために色々と質問をされるので適当に応える。僕の場合、直接設定ファイルを手修正してしまうので、ここではひたすら Enter キー を連打する。root ユーザで cpan シェルの設定がされている場合は、以下のように「自動で設定する?」と聞かれるので、Enter キーを押す(yes の意)。yes を選択した場合、設定は一瞬で終わる。
Would you like me to configure as much as possible automatically? [yes]
設定が終わると、cpan シェルが起動するので以下のように o conf commit して、それまで設定してきた内容を保存しておく。保存しないと、次回また同じことをしないといけないので忘れずに。終わったら quit。
cpan[1]> o conf commit
cpan[2]> quit
次に、たった今保存された ~/.cpan/CPAN/MyConfig.pm の設定内容の一部を手で書き直していく。↑で Enter キー連打したところで一つ一つ設定できるので別に手で修正する必要はないんだけども、インタラクティブに回答して設定していくのはなんか疲れる。
$ vim ~/.cpan/CPAN/MyConfig.pm
設定ファイルは “key” => [value] という形式 (perl のハッシュ) で記述されている。編集するキーは以下のよっつ(余分な設定もあるかもしれないけど)。
- make_arg
- make_install_arg
- makepl_arg
- mbuildpl_arg
これらのキーを探して、以下のように値を編集する。
'make_arg' => q[PREFIX=/home/cpan/local],
'make_install_arg' => q[PREFIX=/home/cpan/local],
'makepl_arg' => q[PREFIX=/home/cpan/local],
'mbuildpl_arg' => q[--install_base /home/cpan/local],
編集が終わったらファイルを保存する。
次に 環境変数 PERL5LIB に /home/cpan/local 以下にある cpan モジュールの情報を設定しておく。これをしないと、cpan モジュールはインストールされているけど、実行時に perl がモジュールを見つけられないという状態になってしまうので注意。僕は zsh を使っているので ~/.zshrc に以下の行を追加した。PERL5LIB に設定する値はバージョンによって変わるので適宜置き換えて下さい。
export PERL5LIB=/home/cpan/local/lib/perl/5.8.8:/home/cpan/local/share/perl/5.8.8:/home/cpan/local/lib/perl5:$PERL5LIB
これで設定は完了!ちゃんと設定されているか確認するために何か適当な cpan モジュールをインストールしてみる。
$ cpan
CPAN: File::HomeDir loaded ok (v0.80)
cpan shell -- CPAN exploration and modules installation (v1.9205)
ReadLine support enabled
cpan[1]> install Readonly
モジュールのインストールが成功すれば終了。
以下のようなエラーが出てしまったら ~/.cpan/CPAN/MyConfig.pm のビルド関係の設定を見直してみてください。因みに以下のエラーは PREFIX を指定しなかったために /usr/local 以下に man をインストールしようとしてパーミッションエラーで おつ な状態。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ERROR: Can't create '/usr/local/man/man3' Do not have write permissions on '/usr/local/man/man3' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Comments: 0
- Trackbacks: 0
Home > setup Archive
- Search
- Feeds
- Meta
