トップ «前の日記(2014年09月28日) 最新 次の日記(2014年09月30日)» 編集

KeN's GNU/Linux Diary
... 料理とDebianと雑多な記録


2014年09月29日

_ [debian] armのRubyビルドでぼっちcontribute

Rubykaigiでのakrさんの発言を機に、Rubyへのぼっちcontributionとして、OpenBlocks AX3を使ったarmelアーキテクチャでのRubyデイリービルドを始めてみている。

結果は http://rubyci.org/ にマトリックス表で出ていて、「Debian 7.5 armhf」というのがそれ。環境はDebian Wheezyのネイティブarmelに、lxcコンテナのやはりWheezy環境を作ってそこでビルドさせるようにしてる。

ビルド設定自体はとても簡単で、akrさんのGitHubにあるchkbuild ( https://github.com/akr/chkbuild.git ) というツールセットを使えば自動でtrunk、2.1、2.0、1.9のビルドをして、リポートログとHTMLを吐き、さらにssh+rsyncでログのアップロードをするところまでやってくれる。さすがです。今はビルドログとHTMLは http://kmuto.jp/build-ruby/arm/ に出力している。

だいたい1リリースビルドあたり4時間かかるので、4ビルドで16時間。終わって一息ついたと思ったらまた実行、という感じ。ただぷらっとホームさんに交換してもらって以来、温度は90度とかになることはなくなって、佳境でもだいたい70数度で留まっている。

で、ビルドのほうは何か様子がおかしくて、どのビルドにおいてもログを見ていただくとわかるようにrubyspec/core/process/kill_spec.rbでTimeoutが発生している。

Process.kill
- signals the process group if the PID is zero/home/chkbuild/build/20140926T013004Z/rubyspec/core/process/fixtures/kill.rb:25:in `initialize': No such file or directory @ rb_sysopen - /home/chkbuild/build/20140926T013004Z/rubyspec_temp/1525-process_kill_signal_file (Errno::ENOENT)
	from /home/chkbuild/build/20140926T013004Z/rubyspec/core/process/fixtures/kill.rb:25:in `open'
	from /home/chkbuild/build/20140926T013004Z/rubyspec/core/process/fixtures/kill.rb:25:in `<main>'
timeout: output interval exceeds 600.0 seconds.
timeout: the process group 4007 is alive.
PSOUT  PGID   PID     ELAPSED %CPU    VSZ COMMAND         COMMAND
PSOUT  4007  4007       11:35 90.6 230032 ruby            /home/kmuto/chkbuild/tmp/build/20140926T013004Z/bin/ruby -v /home/chkbuild/build/20140926T013004Z/mspec/bin/mspec-run -V -f s -B /home/chkbuild/build/20140926T013004Z/rubyspec/ruby.1.9.mspec rubyspec/command_line rubyspec/core rubyspec/language rubyspec/library rubyspec/optional/capi
PSOUT  4007  4007       10:06  0.0 230032 ruby-timer-thr  /home/kmuto/chkbuild/tmp/build/20140926T013004Z/bin/ruby -v /home/chkbuild/build/20140926T013004Z/mspec/bin/mspec-run -V -f s -B /home/chkbuild/build/20140926T013004Z/rubyspec/ruby.1.9.mspec rubyspec/command_line rubyspec/core rubyspec/language rubyspec/library rubyspec/optional/capi
PSOUT  4007  4391       10:42  0.0      0 date <defunct>  [date] <defunct>
PSOUT  4007  4647       10:22  0.0      0 ruby <defunct>  [ruby] <defunct>
PSOUT  4007  4650       10:22  0.0      0 ruby <defunct>  [ruby] <defunct>
timeout: INT signal sent.
failed(rubyspec CommandTimeout)

いまいち釈然としないのだが、なぜかテンポラリシグナルファイルの作成ができなくて、そのままタイムアウトまで待ち続けてしまうようだ。ほかのアーキテクチャのビルドでは発生していないのがまた不思議。lxc内固有なのだろうか。

と思ったけど、なんかその前のtest/dlでもいろいろ変なエラーが出ているな……。

_ [debian] bash問題について

先週はbash問題が一部界隈を賑わせていたわけだが、DebianのほうもDSA-3032、DSA-3035という形で修正対応が済んでいる。

  • Wheezy (security.debian.orgより): 4.2+dfsg-0.1+deb7u3
  • Jessie, Sid: 4.3-9.2
  • Squeeze-lts: 4.1-3+deb6u2 ←amd64、i386のみ。また、lts使用は専用のAPTリポジトリ行( deb http://ftp.jp.debian.org/debian squeeze-lts main non-free contrib )が必要。
  • Sarge, Etch, Lenny: http://blog.bofh.it/debian/id_451 Marco作だからたぶん大丈夫だけど非公式なのでat your own risk。なんか今提供先サイトがつながらない?

もともとDebianは、(ユーザーインタラクションシェルのほうはともかく)内部実行されるような各スクリプトについてはbash依存をなくしていこうという方針で、攻撃のとっかかりとなる/bin/shは、/bin/bashではなく/bin/dashというより小規模で機能の限定された——というかPOSIX準拠のシェルに向けられているので、環境変数を介した攻撃コード注入は、/bin/bashを明示的に呼び出すコードが攻撃経路内に存在していなければ被害を受けないと思われる。

とはいえ、どこにそういうコードが含まれているかわからないし、細工で/bin/bashが呼び出されるような手法もないとは言い切れないので、アップデートはちゃんと行おう。

なお、明示的に/bin/shを使っていたつもりはなくても暗黙に/bin/shを呼び出している環境というのはテック系サイトでも紹介されているようにかなり多く、systemとかpopenとか、rbenvとか、gunzip(これは明示で/bin/bash呼んでる)とかxzmoreとか、mail alias pipeとか……。クライアントなMac OS Xでは高度な使い方をしていない限り大丈夫だ、とAppleさんがアナウンスしているようだけど、Rails勉強するぜーといった環境でrbenvを使って放置してると、シェルで可能なあらゆることをされて、バックドアなども埋め込まれる可能性があるね。

Webサーバーのログを見ていると、世界各国からpingだのpasswd表示するだのrm -rfだのボット埋め込んで自己消去するだの、とやりたい放題のコードが来てて面白い。

_ [cooking] かつおの刺身、かぶのぬか漬け、切干し大根の煮物、いんげんのごま和え


旬となっていた戻りガツオ、たしかに脂の乗りがよくてとても美味。

お盆明けでダメになっちゃったぬか床をパートナーが再作成し、ようやく大丈夫になってきたということで漬けていたカブ。塩気はやや強いが味は良い。

切干し大根はあいかわらず不快な固い芯がいくつかあるが、お湯で戻したことでだいぶ少なくは済んだ。

いんげんは茹でて醤油、砂糖、白胡麻で。ちょっと固くて「歯がすべる」のは二人とも好きではない。刻んで別の料理にしてしまおう…。今度からは重曹でバラすかなぁ。