最新 追記

ポケットを空にして。

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-04-01 [長年日記] この日を編集

活動報告なげた

2012年度が閉まったのでDebian JP Project活動報告を投げた

ということで、2013年度の下準備などしないとね。。。

とりあえず現時点での Wheezy のリリースノート訳をやっつけた

まだ訳の見直しは必要だし、おそらくリリース前にドカッと変更が入るんだろうけど、こちらから参照できます。.org のサイトでも見れるのかな?

freefont のバグトラッカーに報告 x2

行きがかり上


2013-04-02 [長年日記] この日を編集

birdfontにバグレポ

アイコンがでかいのしかないよ!っていうしょーもないのを。

debian.tar.*

6.3M	bz2
40M	gz
5.8M	xz

現在 bzip2 を使っているものをピックアップして、圧縮し直した。結果からすると、使ってたら xz 使うようにしたほう良さげ。

デフォルトを xz にしたらどのぐらいになるんだろう?

2.1G	tar
503M	current
414M	xz_6e
410M	xz_9e

2013-04-03 [長年日記] この日を編集

fglrx ドライバを Wheezy で使おうとするとハマる場合がある

fglrx ドライバなのですが、Squeeze と Wheezy で大きく違う場合があります。具体的には AMD Radeon HD 4000, HD 3000, and HD 2000 などの古めのカードのサポートがupstream が削ってしまったので fglrx-driver パッケージを入れている環境では Wheezy にアップグレードするとまともにビデオドライバが動かなくなるんですね。

じゃ、そんなカードのユーザーはどうするか、というと別途 fglrx-legacy-driver パッケージを用意することで Debian としては対応をしたわけですが、まだこれ experimental に入ってる状態で、Wheezy には入りません。オワタ。

対策としては以下のようになるでしょうか。

  1. 一旦 fglrx-driver を削除する
  2. Wheezy へアップグレード
  3. experimental から fglrx-legacy-driver を入れるか、そのまま既存のドライバを使う

まぁ、気づかないだろうからリリースノートに書いてもらえないか、とBTS に登録はしておいたけど、non-freeなパッケージだし、望みが薄いかも…。

あー debian/NEWS に書いておく、というのはありかも?と思いついたので、こちらも登録しておきます既にあった

git-buildpackage まわり

手でタグ付けしたら push してくれないのね。git push origin [tagname] をする必要があった。

あれ、あと --git-sign-tags オプションが動かないような???

pbuilderのマニュアルアップデート

この前の各種コンパイラサポートを pentium-builder のを落として追加するパッチを送った


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

O になったパッケージを拾ったその2

名前を知っていた Hotot が Orphan されていたので引き取った。

git でソースは管理されていたから git-buildpackage でいけるか、と思ったら、upstream/version ブランチはあるのに upstream ブランチがないので git-import-orig でこける。

$ git-import-orig ../upstream-ver.tar.gz --upstream-branch=upstream/version

賢い --upstream-branch オプションで処置。

で、ビルドしてテストしたが、gtkバージョンが起動後にだんまりになってしまう。github のコミット履歴からおそらく最新のmasterで直ってるだろうということで、とってきてアップデート→無事に動いたので upload した。

と書くと簡単なんだけど、よくわからなくて2、3時間潰してます…orz


2013-04-05 [長年日記] この日を編集

先日の git-buildpackageの続き

git-buildpackage --git-sign-tag 動いてないなーということでソースを読み読み。

まず、git-buildpackage自体が色々読み込んでいるので、それから追っかけてってgbp/git/repository.py にたどり着いた

    def create_tag(self, name, msg=None, commit=None, sign=False, keyid=None):
        """
        Create a new tag.
 
        @param name: the tag's name
        @type name: C{str}
        @param msg: The tag message.
        @type msg: C{str}
        @param commit: the commit or object to create the tag at, default
            is I{HEAD}
        @type commit: C{str}
        @param sign: Whether to sing the tag
        @type sign: C{bool}
        @param keyid: the GPG keyid used to sign the tag
        @type keyid: C{str}
        """
        args = []
        args += [ '-m', msg ] if msg else []
        if sign:
            args += [ '-s' ]
            args += [ '-u', keyid ] if keyid else []
        args += [ name ]
        args += [ commit ] if commit else []
        self._git_command("tag", args)
(snip)

create_tag で sign が True なら -s オプションが渡されてサインされる。良いようにみえる。で、次にgbp/scripts/buildpackage.py

        if options.tag or options.tag_only:
            gbp.log.info("Tagging %s" % cp.version)
            tag = repo.version_to_tag(options.debian_tag, cp.version)
            if options.retag and repo.has_tag(tag):
                repo.delete_tag(tag)
            repo.create_tag(name=tag, msg="%s Debian release %s" % (cp['Source'], cp.version),
                            sign=options.sign_tags, keyid=options.keyid)(snip)

options.sign_tags で指定。

    tag_group.add_boolean_config_file_option(option_name="sign-tags",
                      dest="sign_tags")

うん、設定ファイルを読んでいるようだ。/etc/git-buildpackage/gbp.conf 見る。

[git-buildpackage]
(snip)
# uncomment this to automatically GPG sign tags:
sign-tags = True

うん、あってる。

しばらく悩み…あ!と気づく。

        if options.tag or options.tag_only:
            gbp.log.info("Tagging %s" % cp.version)
            tag = repo.version_to_tag(options.debian_tag, cp.version)
            if options.retag and repo.has_tag(tag):
                repo.delete_tag(tag)
            repo.create_tag(name=tag, msg="%s Debian release %s" % (cp['Source'], cp.version),
                            sign=options.sign_tags, keyid=options.keyid)(snip)

if options.tag or options.tag_only: じゃ sign_tags 指定時にはここ読み込まれないじゃん!ということで

From 019ce12f698191ddd622539449b1e688b42c8d96 Mon Sep 17 00:00:00 2001
From: Hideki Yamane 
Date: Fri, 5 Apr 2013 06:34:33 +0900
Subject: [PATCH] fix --git-sign-tags option work
 
---
 gbp/scripts/buildpackage.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 
diff --git a/gbp/scripts/buildpackage.py b/gbp/scripts/buildpackage.py
index bdb3177..f8016ed 100755
--- a/gbp/scripts/buildpackage.py
+++ b/gbp/scripts/buildpackage.py
@@ -554,7 +554,7 @@ def main(argv):
                 Command(options.postbuild, shell=True,
                         extra_env={'GBP_CHANGES_FILE': changes,
                                    'GBP_BUILD_DIR': build_dir})()
-        if options.tag or options.tag_only:
+        if options.tag or options.tag_only or options.sign_tags:
             gbp.log.info("Tagging %s" % cp.version)
             tag = repo.version_to_tag(options.debian_tag, cp.version)
             if options.retag and repo.has_tag(tag):

として Bug#704712 に登録。


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

net-snmpパッケージを5.7.2ベースにしました。

Debian experimental に 5.7.2 を放り込みました(今現在リリース前のフリーズなのでunstableにはちょっと合わない&地雷埋め込んでる可能性があるので ;-)

人柱な人は試してみてください。

squeezeのnet-snmpでCVEが一個直ってない

念のためstable-proposed-updatesを登録してみた。バージョン番号は+squeeze1とかの方が良かったかな。まぁ、ツッコミがあるだろう…

net-snmpのBTSを掃除した

4,5個ぐらいcloseできた。100個は切りたいなぁ


2013-04-09 [長年日記] この日を編集

debian-cd作成のディスクを高速化したらどれだけのメリットがあるか

HDDとSSDで比較テストしたいがそれだけ大容量のものが無い…

とりあえず、tmpfsに必要なパッケージだけコピーして生成してみる、というアイデアを思いついた。


2013-04-11 [長年日記] この日を編集

非互換性のピックアップ

リリースノートの度に非互換性を後からチェックしてピックアップして書き起こす作業と言うのは労力がかかるし、探すのが面倒だし、漏れがあるし、と良くないことが多い。

パッケージのメタデータでdebian/incompat-dataとか持っといてそこで、どこのバージョンで非互換性が発生したのか、内容をchangelogでもっとけばいいんじゃないかとか思った。po の問題があるけど。

…とかいて、それは debian/NEWS の役割か、とはたと気づいた。これ有効活用する術はないものか


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

net-snmpのsqueeze向けパッケージを更新した

なぜかCVE対応パッチがsqueeze向けに適用されて無かったので、それを当てた


2013-04-13 [長年日記] この日を編集

Software Design2013年5月号

そろそろ出るころですね。

今号の連載「Debian Hot Topics」は、Debianのパッケージングについて一歩踏み込んで考察など行ってみました。是非ご購入頂いてご感想などお寄せくださいませ。


2013-04-16 [長年日記] この日を編集

単に bind mount すると udev が走って umount できなくなったでござる、の巻。

umount: /tmp/aufs/dev: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

うう、何が握ってるかは cat /proc/mount みることで分かった。udev らしいが、ホスト側のプロセスは特に動いてないんだよね…
マウントした時に何か停止するようにpbuilderを参考にしたほうがいいか。あと /dev/pts でエラー出るから --rbind の方がいい、という話もあるな。

pbuilderでは MOUNTPARAMS="-obind" としていた。あ、単に -o bind ってことか。だったら、いちいち /dev/pts 作ってマウントしなくて済む方がいいような。

    if [ "$DEB_BUILD_ARCH_OS" = "linux" ] && [ "$USEDEVPTS" = "yes" ]; then
        log "I: mounting /dev/pts filesystem"
        mkdir -p $BUILDPLACE/dev/pts || true
        TTYGRP=5
        TTYMODE=620
        [ -f /etc/default/devpts ] && . /etc/default/devpts
        mount -t devpts /dev/pts "$BUILDPLACE/dev/pts" -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE
        mounted[${#mounted[@]}]="$BUILDPLACE/dev/pts"
    fi

該当のptsマウントのコードは上記。

    if [ -f "$BUILDPLACE/usr/sbin/policy-rc.d" ]; then
        log "I: policy-rc.d already exists"
    else
        log "I: installing dummy policy-rc.d"
        echo "\
#!/bin/sh
 
while true; do
case "\$1" in
  -*) shift ;;
  makedev) exit 0;;
  x11-common) exit 0;;
  *)  exit 101;;
esac
done
 
" >  "$BUILDPLACE/usr/sbin/policy-rc.d"
        chmod a+x "$BUILDPLACE/usr/sbin/policy-rc.d"
    fi

色々走るのを抑えていそうなのは上記。


2013-04-19 [長年日記] この日を編集

また Orphan パッケージを引き取った

fontforge のでっかいアイコンが無くて GNOME3 でショボいというバグレポートをforwardしたら、関連パッケージについて「ねぇ、これ古くね?どうやったらアップデートできるの?」と質問が飛んできた。パッケージが Orphan されていたので、とりあえずモダンな形にアップデートをして引き取り

アップデート自体は後日かな。


2013-04-20 [長年日記] この日を編集

CI and Testing Unconference in Tokyo に行ってきた

見習いたいと思った点を忘れないようにメモ。

  • 最初の説明の際、喋ることを一つ一つ付箋に書いて確認しつつ話をされていた。で、喋ったら付箋を剥がす、と。漏れが無くて良いですね。
  • 受付の名札は大きめのものに「自分で書く」。見やすい大きさに書けてGoodですね。どれ買ったのか知りたいなー

得た知見。

  • テストのカバレッジを上げていくと損益分岐点が出てくるが、これを見極めるのは難しい。「xx%」という具体的な数値は現場によって変わる。じゃぁ、100に近づけるのにどういう風に進めていくか、というとやり残しているテストを分析して優先度をつけて工数的なボリュームをみて自分たちのリソースと比較、残りリソースが0になるところが「可能な範囲」と判断する(…と自分で言っていた ;-)
  • 目標とすることと、ゴールは違うので100%を目指す心意気を持ちつつ、100%以外はダメというのは跳ね除けよう(…と自分で言っていた ;-)
  • 「レガシーコード改善ガイド(Working Effectively With Legacy Code)」を読むと面白そう
  • テストが無ければバグからテストを起こしていく、というのが良いのでは。そうすればリグレッションテストにもなるよね。

今回の会場となったVOYAGE GROUPさんでは会議室の貸出をしているそうです。内装共々素晴らしいですね。


2013-04-21 [長年日記] この日を編集

ツール作成その1

パッケージのテストをしよう、ということで既存のものを一部置き換えられるように作成を試行錯誤。こんな感じで出力されるようにした。

kernel: Linux
 
caching .deb files for hotot-common...
caching .deb files for hotot-gtk...
caching .deb files for hotot-qt...
caching .deb files for hotot...
debconf: delaying package configuration, since apt-utils is not installed
PASS: installation test
 
real	0m20.786s
user	0m12.065s
sys	0m3.028s

あれ、思ったより速くなってない ;-)
比較対象は以下。

1m42.3s INFO: PASS: All tests.
1m42.3s INFO: piuparts run ends.

一応、このあとで remove, purge も実装予定なのでもっとかかるようにはなるな…。エラーハンドリングも未実装。upgradeはまだちょっと検討が付かない部分がある。何にしても先達がいると楽です。


2013-04-22 [長年日記] この日を編集

ツール作成その2

real	0m24.390s
user	0m13.285s
sys	0m4.448s

remove, purgeでこれだけになった。次はアップグレード、それからエラー処理の見直し、あたり。ただ、大問題が一個あって、一時的にマウントした領域が外せない。これを何とかしないと、実用にはならないな…

umount2: Stale NFS file handle
umount: /var/cache/yasp/mountdir/hotot731Hz_sid_20130422083759: Stale NFS file handle
umount2: Stale NFS file handle
umount2: Stale NFS file handle
umount: /var/cache/yasp/mountdir/hotot731Hz_sid_20130422083759: Stale NFS file handle
umount2: Stale NFS file handle

2013-04-24 [長年日記] この日を編集

LEGO®ではじめるスクラム入門

LEGO®ではじめるスクラム入門に参加してきました。写真はこちら。以下、雑駁な感想。

  • スプリント後に顧客からの追加要望が出てきても、実際に顧客に既存の要望と一緒に並べ替えると、新規の要望は大体下の方に来ている、というのが多かった。これは結構意外で、実務で同様のことが起きているかと思うと結構ゾッとする
  • レゴで作成途中にPOに質問してみよう…と思ったら案外時間が短くて、まったくできていない状態だったので質問を断念。代わりにチームメンバーに聞くようにすると、フィードバックが働いていい方向にいった
  • 振り返り1回目で改善案として上がったものがあまりいい形で行われなかったが、次でさらにいい形にできた。イテレーションという形で繰り返してすぐ振り返りするのが良い感じ。実際、テンポとしては後ろの方が色々となれてきてあがってくるのを実感した。
  • あとから要望が出てきたものが、予想もしない意外な形で実装されたりするというのを目の当たりにした(駅前にオブジェが欲しい→「サボテン」が作られて出てきた。しかも「待ち合わせスポットとして有名」というサイドストーリーまで作られた。
  • 自分はかっちりオーソドックスな建物を作るばかりだったが、皆ひらめきと想像力が豊かで、自分では「これ無理!」と言ったものがすんなりできたりする。なので見積り時に大きな数字を出していても、小さな数字を出す相手の言うことを聞くのもありだと思う。どうしてもバッファを作ろうと大きくすることだけを考えがち。

資料を頂けたらまた見直してみたい所です、はい。


2013-04-25 [長年日記] この日を編集

LDFLAGS有効になってない

checking for Perl LDFLAGS... -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.14/CORE -lperl -ldl -lm -lpthread -lc -lcrypt

あれ?

dh_auto_configure -- --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \
          --with-persistent-directory=/var/lib/snmp \
          --enable-ucd-snmp-compatibility \
          --enable-shared --with-cflags="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNETSNMP_USE_INLINE" \
          --with-ldflags="-Wl,-z,relro -Wl,-z,now" \

指定しているよな…?

だが、configure.d/config_project_perl_python ファイルの中でこんな指定が…

#       Linker flags
#
if test "x$embed_perl" != "xno" ; then
    AC_MSG_CHECKING([for Perl LDFLAGS])
    netsnmp_perlldopts=`$myperl -MExtUtils::Embed -e ldopts`
    if test "x$netsnmp_perlldopts" != "x" ; then
      AC_MSG_RESULT([$netsnmp_perlldopts])
    else
$ perl -MExtUtils::Embed -e ldopts
-Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.14/CORE -lperl -ldl -lm -lpthread -lc -lcrypt

これか…。しかしPerl側をみると

        # remove dpkg-buildflags effects from %Config
        # see #657853
        if which dpkg-buildflags >/dev/null 2>&1; then \
                for flag in $(shell dpkg-buildflags --get CPPFLAGS) \
                         $(shell dpkg-buildflags --get CFLAGS); do \
                        case "$$flag" in -fstack-protector) ;; \
                             *) ./perl.static -i -pe "/^(cc|cpp)flags/ and \
                                  s/(['\s])\Q$$flag\E(['\s])/\1\2/ and s/  +/ /" \
                            $(lib)/Config.pm $(lib)/Config_heavy.pl ;; \
                    esac; done; \
                for flag in $(shell dpkg-buildflags --get LDFLAGS); do \
                        ./perl.static -i -pe "/^ld(dl)?flags/ and \
                                  s/(['\s])\Q$$flag\E(['\s])/\1\2/ and s/  +/ /" \
                          $(lib)/Config.pm $(lib)/Config_heavy.pl ; \
                done; \
        fi

#657853?


2013-04-27 [長年日記] この日を編集

微調整

今repositoryにあるパッケージの方が問題でpiupartsが引っかかるので、アップデートしておいた。これで明日あたりに再度テストだな。


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

一通りできた

$ time sudo piuparts -p -t /tmpfs jd_2.8.6~rc130414-1_amd64.changes
(snip)
0m56.5s DEBUG: Removed directory tree at /var/cache/pbuilder/build/tmp8yQR1Y
0m56.5s INFO: PASS: All tests.
0m56.5s INFO: piuparts run ends.
 
real	0m56.651s
user	0m27.418s
sys	0m6.836s
 
$ time sudo yasp test jd_2.8.6~rc130414-1_amd64.changes 
kernel: Linux
 
caching .deb files for jd...
INSTALL: install package(s)...
(Please ignore debconf warnings)
REMOVE: remove package(s)...
(Please ignore debconf warnings)
PURGE: purge package(s)...
(Please ignore debconf warnings)
UPGRADE: upgrade package(s)...
(Please ignore debconf warnings)
PASS: installation test
 
real	0m18.080s
user	0m6.524s
sys	0m2.520s

高速化という意味ではほぼ達成している(56->18s、1/3に削減している)。細かなpurge時の拾い集めとか、エラーハンドリングが実装されていないけど。

real	1m53.567s
user	0m51.423s
sys	0m11.557s
real	0m24.158s
user	0m13.713s
sys	0m4.332s

113->24s、1/4強。


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

tdiaryを試しに3.2.2にした。

tdiary/style/gfm_style.rbで、以下のように指定されていてgemがないのでこけてるっぽい。

require 'twitter-text'
(snip)
include Twitter::Autolink

おそらくtwitter-textをパッケージにすることが必要。

# gfm_style.rb: "GitHub Flavored Markdown" (GFM) style for tDiary 2.x format.
#
# if you want to use this style, add @style into tdiary.conf below:
#
#    @style = 'GFM'

って使ってないつもりなんだけど…?

upstreamのChangelogはこれかなー

2012-11-12  SHIBATA Hiroshi  
        * misc/style/gfm/gfm_style.rb: integrate twitter-autolink.

Note: Now you need to install "twitter-text" gem to use it properly とかあってもいいんだけどなー

これが修正出来たらexperimentalに突っ込む。