最新 追記

ポケットを空にして。

1985|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2100|01|

「人の心に残るというのが大事」と言う話。

何か連絡がある場合はメールでどうぞ(過去の日記へのツッコミは基本的にみていません)
プレゼントは随時受け付けております :-) ここ最近のツッコミ/トラックバックリスト。


2013-07-06 [長年日記] この日を編集

Debian での buildbot 作法…を探索中。

まず、apt-get install buildbot としてインストールすると

Setting up buildbot (0.8.7p1-1) ...
[warn] buildmaster #1: disabled ... (warning).

と出てくる。

これはbuildbot(master/slaveともに)/etc/init.d/以下のinit scriptで制御するようになっているのだが、インストール段階では起動しないようにされているということ。
では、どこで有効にするかというと /etc/default/buildmaster (/etc/default/buildslave) ファイルでの設定。

MASTER_RUNNER=/usr/bin/buildbot
 
# NOTE: MASTER_ENABLED has changed its behaviour in version 0.8.4. Use
# 'true|yes|1' to enable instance and 'false|no|0' to disable. Other
# values will be considered as syntax error.
 
MASTER_ENABLED[1]=0                    # 1-enabled, 0-disabled
MASTER_NAME[1]="buildmaster #1"        # short name printed on start/stop
MASTER_USER[1]="buildbot"              # user to run master as
MASTER_BASEDIR[1]=""                   # basedir to master (absolute path)
MASTER_OPTIONS[1]=""                   # buildbot options
MASTER_PREFIXCMD[1]=""                 # prefix command, i.e. nice, linux32, dchroot

MASTER_ENABLED[1]=0 となっているので disabled になっている。これを 1 に変更すれば走る。
で、実際にbuildbotを実行するユーザーは「buildbot」ユーザーがシステムによって作られている…がどんなのかというと

$ grep buildbot /etc/passwd
buildbot:x:110:111:Buildbot system user,,,:/var/lib/buildbot:/bin/false

/var/lib/buildbot がホームディレクトリになっている。これを見ると /var/lib/buildbot/masters と /var/lib/buildbot/slaves というディレクトリが存在する。おそらくは、ここに master と slave の設定を置く、という形になるのだろう。

/var/lib/buildbot/masters$ sudo buildbot create-master master-jd
/var/lib/buildbot/masters$ sudo mv master-jd/master.cfg.sample master-jd/master.cfg
/var/lib/buildbot/masters$ sudo chown buildbot.buildbot -R master-jd
/var/lib/buildbot/masters$ cd /var/lib/buildbot/slaves
/var/lib/buildbot/slaves$ sudo buildslave create-slave slave-jd localhost:9989 slave-node01 tekitounapass
 # buildslave create-slave directory 動作するホスト名とポート slaveの名前 slaveに接続するためのパスワード
 
mkdir /var/lib/buildbot/slaves/slave-jd
chdir /var/lib/buildbot/slaves/slave-jd
mkdir /var/lib/buildbot/slaves/slave-jd/info
Creating info/admin, you need to edit it appropriately
Creating info/host, you need to edit it appropriately
Not creating info/access_uri - add it if you wish
Please edit the files in /var/lib/buildbot/slaves/slave-jd/info appropriately.
buildslave configured in /var/lib/buildbot/slaves/slave-jd
 
/var/lib/buildbot/slaves$ sudo chown buildbot.buildbot -R slave-jd

まずは slave のinfo/admin,hostを適当に修正する(見れば分かるので省略)。で、master-jd/master.cfg の中を書き換えてslaveと通信できるようにする。

####### BUILDSLAVES
 
# The 'slaves' list defines the set of recognized buildslaves. Each element is
# a BuildSlave object, specifying a unique slave name and password.  The same
# slave name and password must be configured on the slave.
from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave("example-slave", "pass")]

ここに先ほどのslaveの名前とパスワードを入れ替える

/etc/default/buildmaster,buildslaveを編集してみる

MASTER_ENABLED[1]=1
MASTER_NAME[1]="buildmaster #1"
MASTER_USER[1]="buildbot"
MASTER_BASEDIR[1]="/var/lib/buildbot/masters/master-jd"
SLAVE_ENABLED[1]=1
SLAVE_NAME[1]="slave #1"
SLAVE_USER[1]="buildbot"
SLAVE_BASEDIR[1]="/var/lib/buildbot/slaves/slave-jd"
$ sudo /etc/init.d/buildmaster start
[ ok ] Starting buildmaster "buildmaster #1".
henrich@hatchpotch:/var/lib/buildbot$ sudo /etc/init.d/buildslave start
[FAIL] SLAVE_* arrays must have an equal number of elements! ... failed!

init scritptを見たら、設定ファイルの項目数が一致しないとダメっぽい。

SLAVE_ENABLED[1]=1
SLAVE_NAME[1]="slave #1"
SLAVE_USER[1]="buildbot"
SLAVE_BASEDIR[1]="/var/lib/buildbot/slaves/slave-jd"
SLAVE_OPTIONS[1]=""                   
SLAVE_PREFIXCMD[1]=""  

最後の2行を追加。

$ sudo /etc/init.d/buildslave start
[ ok ] Starting buildslave "slave #1".

ということで、/etc/default/buildslaveのコメントアウトしてある行はすべて有効にしておく必要がある。

…あれ?masterノードが走ってない、と思ったらmasters/master-jd/twistd.logを見たら答えが書いてあった。変更漏れ。…なんでこけないんだよ…

$ w3m http://localhost:8010/

として、ようやくbuildbotの画面を伺った。次にmaster.cfgでのブラウザ接続を変更するため

c['buildbotURL'] = "http://localhost:8010/"

を適当に変更して接続…と思ったら ufw で接続を制限してたのでした。

$ sudo ufw allow 8010

で外部ブラウザから接続出来るように。認証についてはmaster.cfg内で

authz_cfg=authz.Authz(
    # change any of these to True to enable; see the manual for more
    # options
    auth=auth.BasicAuth([("pyflakes","pyflakes")]),
    gracefulShutdown = False,
    forceBuild = 'auth', # use this to test your slave once it is set up
    forceAllBuilds = False,
    pingBuilder = False,
    stopBuild = False,
    stopAllBuilds = False,
    cancelPendingBuild = False,
)

とあるので、ID: pyflakes、pass: pyflakes なのを適当に変更。

こちらの記述を参考にSVNで引っ張るようにした。。。のだが、これどうやって調べるのだろう。正直分からないのだが…

課題
chroot してクリーンルームビルドはどうするかね?

2013-07-12 [長年日記] この日を編集

bind10に手を出してみた

ビルドは通るがtestが通らんのだが、これは一体なぜなのかね 1.1.0。

checking for setproctitle module... missing configure: WARNING: Missing setproctitle python module. 

とか configure で出たけど、これ放置されてるよ、pythonパッケージ。ということで、先にこちらを手を入れる方が先のような気がするのさ。

泥沼。


2013-07-28 [長年日記] この日を編集

dpkg-debの標準圧縮形式がxzになった

昨年のDebConf12でのプレゼン以来、一年越しではありますが、dpkg-debの標準圧縮形式がxzになりました。

差分を見ても分かるとおり1行修正なわけで、さらに実際に変更作業をしたのは自分ではないわけですが、結構うれしいです。

大まかな経緯。

  • Debianパッケージのサイズについて、圧縮形式をxzにした方が場合によっては大幅に縮むということが判明(メンテしているフォントパッケージの一部で劇的)。
  • 「…ん?ってことは他のパッケージでも同じように圧縮率が高まるんじゃね?」(ぴこーん)
  • デスクトップにリポジトリフルミラーして、すべての.debファイル を ar -x で展開→中のdata.tar.gzを gzip -d して xz で圧縮する作業を実施(数行のスクリプトを書いて後は1週間ほど放置)
  • ほぼ目論見どおり圧縮が効くのを確認。
  • 「…あ、これミラーサーバーのトラフィック削減にもなるんじゃね?」(ぴこーん)
  • ミラーサーバーのログをいただいて簡単なスクリプトで削減量を算出。
  • DebConf12でプレゼン。ちょうどリリースCDにGNOMEが入りきらなくって、xz適用するのがいいんじゃね?というdebian-cdチームの話題に乗っかっていい感じに
  • ここまで「少なくともx86/x86_64なマシンだったらxzは問題ないよね」という結論だったのだが、その頃に衝動的にNASを購入して、中身がほぼDebianというARMマシン(NETGEARのReadyNAS Duo v2)だったので「じゃぁ非intel/AMDなCPUでの傾向を確認しよう」と簡単にテスト→問題なかったので「全部xzにしちゃえよ!」とdebian-develメーリングリストで提案
  • dpkgメンテナが「wheezyのリリース後にdpkgの圧縮形式をxzにしようと思う」と賛成してくれた
  • Debian7 "Wheezy"リリース
  • dpkg 1.17.0 がリリース、圧縮形式が xz に(←イマココ!)

ここでのポイント

  • やった検証は gzip -d して xz するだけという「どなたでも可能な作業」
  • その後の変更も他力本願
  • 変更自体も簡易
  • でも効果は絶大

2013-07-30 [長年日記] この日を編集

tdiaryを4.0.0にする、で微調整

エラーメッセージを見つつ、とりあえず入れるだけはしてみた

  • ruby-rackが依存パッケージとして必須
  • さらに /usr/share/tdiary/tdiary/request.rb で require 'rack' してやらないとダメだった。
  • /usr/share/tdiary/misc/style/wiki/wiki_style.rb と /usr/share/tdiary/tdiary/style/wiki_style.rb がなぜか存在してしまってる。あれー?
  • /usr/share/tdiary/tdiary/style/wiki_style.rb で「require 'hikidoc'」だったので、ruby-hikidocも追加で必要
  • /usr/share/tdiary/tdiary/style/gfm_style.rb で「require 'pygments'」だが、これのパッケージはまだないのでコメントアウト