gitolite3をDocker on CentOS7で動かす

yumからgitolite3をインストールして使いはじめるまで,だいぶはまってしまったのでメモ.

とりあえず,Dockerを起動してyumでインストール.

  • pでホストの22222番ポートをコンテナの22番に割り当て(ssh用),-vでディレクトリの共有をして,リポジトリのデータをホスト側に保存するようにしてみた.
(↓ホストのCentos7のシェル↓)
[USER]$ sudo docker run -it -p 22222:22 -v /home/USER/gitolite3:/var/lib/gitolite3 centos /bin/bash

(↓Dockerコンテナ内↓)
[root]# yum install -y epel-release
[root]# yum install -y gitolite3
[root]# cat /etc/passwd
...
gitolite3:x:999:998:git repository hosting:/var/lib/gitolite3:/bin/sh

インストールすると,gitolite3ユーザ($HOME=/var/lib/gitolite3/)が自動で作成されている.


ここでいったん,sshdを使うための設定をする.
host keyは,http://blog.glatts.com/blog/imai/?p=949:/etc/init.d/sshd start処理内で自動生成されているらしい.
/etc/init.d/sshdが無いので,自分で生成してみる.

(↓Dockerコンテナ内↓)
[root]# yum install -y openssh-server
[root]# cd /etc/ssh
[root]# ssh-keygen -t rsa -f ssh_host_rsa_key
[root]# ssh-keygen -t rsa -f ssh_host_ecdsa_key


ホスト側でssh-keygenで用意した公開鍵(test.pub)を,コンテナ側のgitolite3のadmin鍵として登録する.
gitolite setup後,sshdを立ち上げてセットアップ完了.

(↓Dockerコンテナ内↓)
[gitolite3]$ gitolite setup -pk test.pub
Initialized empty Git repository in /var/lib/gitolite3/repositories/gitolite-admin.git/
Initialized empty Git repository in /var/lib/gitolite3/repositories/testing.git/

[root] /usr/sbin/sshd -D &


ホスト側からgitoliteの動作を確認してみる.

[ksuzuki@tk2-231-25171 ~]$ ssh -i ~/.ssh/test gitolite3@127.0.0.1 -p 50022
Enter passphrase for key '/home/ksuzuki/.ssh/test':
PTY allocation request failed on channel 0
hello test, this is gitolite3@aaa running gitolite3 3.6.2-1.el7 on git 1.8.3.1

 R W    gitolite-admin
 R W    testing
Connection to 127.0.0.1 closed.

以上で完了.
ここまでで作ったDockerコンテナをcommitして,
docker run -d --name gitolite-run -p 50022:22 -v /home/USER/gitolite3:/var/lib/gitolite3 gitolite /usr/sbin/sshd -D
とかで実行できる.


ちなみに,はまったところは,gitolite setup -pk test.pubしたときに,
WARNING: keydir/admin.pub duplicates a non-gitolite key, sshd will ignore it
のワーニングが出てたのを無視していたら,ホストから動作確認のsshをした時に,
gitレポジトリが表示されず普通に,ログインしてしまったこと.
これは,gitolite setupをする前に,test.pubをコンテナ側のauthorized_keysに登録していたことが原因だった.
このエラーが出たら,authorized_keysの中身を見て,すでに登録してあるtest.pubを消去すれば,動いた.


下記のサイトは,gitolite3をgithubからcloneしてインストールしている.

公式:install and setup
http://gitolite.com/gitolite/install.html

How to setup Gitolite and Cgit on CentOS 6 | Patrick's Blog(2)
http://blog.laimbock.com/2013/10/15/how-to-setup-gitolite-and-cgit-on-centos-6/

Sublime 3でIMESupportがインストール出来ない!?

WindowsのSublime3でいつの間にかIMESupportがインストールできなくなってたので,その対処方メモ.

普通,Package Controlをインストール後,
「Ctrl+Shift+P -> Package Control: Install Package -> IMESupport」でインストールできるはずですが,
ここで,エラーが発生してコンソールに次のようなメッセージが...

...
Package Control: Error downloading package. Connection refused (errno 12029) during HTTP write phase of downloading https://codeload.github.com/chikatoike/IMESupport/zip/master.
error: Package Control

Unable to download IMESupport. Please view the console for more details.
...

Connection refused...???
とりあえず,「https://codeload.github.com/chikatoike/IMESupport/zip/master」にブラウザからアクセスしてみると,ちゃんとつながってZIPファイルをゲットできる.
このZIPを解凍して中身を「C:\users\(ユーザ名)\AppData\Roaming\Sublime Text 3\Packages\IMESupport」にコピー.
次にsublime側で,「Preferences -> Package Settings -> Package Control -> Settings - User」で開いたファイルに次のように書き込み.

{
	"installed_packages":
	[
		"IMESupport"
	]
}

sublimeを再起動すれば,IMESupportが使えるようになった.
ネット上ではダウンロードに失敗しているような情報はなかったので,うちの環境依存の問題?

CentOS 7/docker1.0.0でハマったところメモ.

その1:ポートの割り当て
コンテナの22をホストの11111に割り当てようとして,次のコマンドを打つと,11111がipv6のポートとしてバインドされてしまう.
docker run -d -p 11111:22 something /usr/sbin/sshd -D


これは,次のようにして回避.
docker run -d -p 0.0.0.0:11111:22 something /usr/sbin/sshd -D

ちなみに,0.0.0.0を127.0.0.1とかにすると,ローカルホストからの接続しか出来なくなる.

(修正)
$ netstat -na
...
tcp6 0 0 :::80 :::* LISTEN
...
と表示されるので,IPv6でアクセスしないといけないように見えたけど,IPv4でアクセスできた.


その2:ポートがすでにバインドされている,と言われてしまう
netstatで確認しても,バインドされてないはずのポートを-pで指定しているのに,なぜか
2014/07/10 15:51:36 Error: Cannot start container : port has already been allocated
と言われてしまう.

これは,systemctl restart dockerで解決した.

QEMUでシリアルコンソールを標準出力に表示してLinuxを起動する

まず,普通にSDLなどを使ってLinuxをインストール(今回はFedora20で試した).

そして,GRUBの設定を変える↓
https://wiki.archlinux.org/index.php/working_with_the_serial_console

一旦ゲストOSをシャットダウンして,以下のコマンドを実行.
qemu-kvm -m 1024 -smp 2 -drive file=../vms/fedora20.img,if=virtio -nographic -serial mon:stdio

できあがり.
これでCUI環境でもゲストOSを操作できる.

PuTTYでX11 Forwardingが認証エラーになるときの対処

通常ユーザではできるが,rootになるとエラーが出たりする.

[エラーメッセージ]
PuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedPuTTY X11 proxy: wrong authorisation protocol attemptedError: cannot open display: localhost:10.0

[対処]
$ xauth list
hogehoge:10 MIT-~~~
$ su
# xauth add :10 MIT-~~~

@IT:Xのウィンドウで別のデスクトップを表示するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/560usexnest.html

ファゴット・コンチェルト 隠れた名曲編

ただでさえマイナーな隠れた名曲ばかりファゴット曲の中の,さらに隠れた曲を2曲.

まずは,ヴェルディファゴットのためのカプリッチョ
Youtubeの動画upした人が自分で「これ,世界でたった一つのめっちゃレアな録音!」と言うほど珍しい.

Capriccio for Bassoon by Giuseppe Verdi


次は,フランセのファゴット・コンチェルト.
こっちのほうがちょっと知っている人が多いかな.

Jean FRANÇAIX Bassoon Concerto (1979)

Tico Ticoの演奏

吹奏楽やってた人ならきっと知ってるTico Tico.

原題は「Tico-Tico no Fubá」で「コーンミールの中のスズメ」の意味らしい.
(Tico-Tico = アカエリシトド(スズメの仲間),Fubá = コーンミール.)
エサの中で楽しげにちょこちょこ動き回るスズメ?
1917年にZequinha de Abreuという人が作曲したショーロというブラジルのポピュラー音楽とのこと.
ここまでwikipedia

ポップスでもクラシックでも演奏されていて,立ち位置がリベルタンゴ情熱大陸と近いような気がする曲です.
いい曲.

実はオケ編曲されていてベルリン・フィル/バレンボイムが演奏しちゃってます.

でも,やっぱりこの曲だったら,ポップスの自由でノリノリな演奏のほうが好み.

オケでも後半の盛り上がったところでアドリブかましたり,もっとはっちゃけて演奏したほうが面白いのに.
ちなみに,バイオリンを演奏しているDavid Garrettは,葉加瀬太郎みたいなクラシック・ポップスクロスオーバーな演奏者らしい.