Just another Ruby porter,

〜2002年11月下旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2002-11-21 (Thu)

[GnuPG] idea.c

IDEAを組み込む。 ftp://ftp.gnupg.org/pub/gcrypt/contrib/idea.cにあると、 あちこちに書いてあるが存在しない。じゃあ今はどこにあるかというと http://www.gnupg.org/why-not-idea.htmlを見ると ここにある。と思ったら周りにはPGP 2.xを使ってる人はいなかった。 とりあえず今のところは必要ないな。

[GnuPG] keyringを作る

keyringを使い分けたかったのは 署名つきの配布ファイルのverifyをしたいんだけどkeyはなんとなく別にした いなどと考えたから。

% cd ~/.gnupg
% echo no-secmem-warning >null.conf
% gpg --options ~/.gnupg/null.conf --no-default-keyring \
  --keyring ~/.gnupg/soft.gpg --import gnupg-sigkey.html
gpg: keyring `/home/watanabe/.gnupg/soft.gpg' created
gpg: key 57548DCD: public key "Werner Koch (gnupg sig) <dd9jn@gnu.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

てな感じでsoft.gpgを作ってgpg.confのほうに

keyring soft.gpg

を加えれば区別しないで使える。実際にさっき取ってきたidea.c.gz.sigで試すと

% gpg --verify idea.c.gz.sig
gpg: Signature made Mon Aug  5 18:21:54 2002 JST using DSA key ID 621CC013
gpg: Can't check signature: public key not found

ってあれ?IDが違うじゃん。もう。 OpenPKSDでIDを入力して検索したら出てきた。soft.gpgにimportしてverifyしてみると

% gpg --verify idea.c.gz.sig
gpg: Signature made Mon Aug  5 18:21:54 2002 JST using DSA key ID 621CC013
gpg: Good signature from "Werner Koch <wk@g10code.com>"
gpg:                 aka "Werner Koch <wk@gnupg.org>"
gpg: checking the trustdb
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: ECAF 7590 EB34 43B5 C7CF  3ACB 6C7E E1B8 621C C013

となった。よさげだ。後でlsignしとこう。

こういうものだったら一時的にkeyringを作って、 それを使ってverifyすればいいのかもしれない。 こんな感じで。

% gpg --options ~/.gnupg/null.conf --no-default-keyring \
  --keyring ./idea.c.gz.gpg --import wk.key
gpg: keyring `./idea.c.gz.gpg' created
gpg: key 621CC013: no subkey for key revocation
gpg: key 621CC013: invalid subkey binding
gpg: key 621CC013: public key "Werner Koch <wk@g10code.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
% gpg --keyring ./idea.c.gz.gpg --verify idea.c.gz.sig
gpg: Signature made Mon Aug  5 18:21:54 2002 JST using DSA key ID 621CC013
gpg: Good signature from "Werner Koch <wk@g10code.com>"
gpg:                 aka "Werner Koch <wk@gnupg.org>"
gpg: checking the trustdb
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: ECAF 7590 EB34 43B5 C7CF  3ACB 6C7E E1B8 621C C013

使い終わったidea.c.gz.gpgは捨ててもいいので気にする必要もない。


2002-11-22 (Fri)

[GNU] GCC 3.2.1

オプションは 3.2のときと同じ。

% mkdir linux; cd linux
% CFLAGS=-Os CXXFLAGS=-Os ../configure --enable-languages=c,c++ \
  --with-system-zlib --enable-sjlj-exceptions --enable-threads \
  --disable-version-specific-runtime-libs --disable-nls \
  --without-included-gettext --without-catgets
% make BOOT_CFLAGS=-Os STAGE1_CFLAGS=-Os CFLAGS=-Os \
  DEBUG_FLAGS= CONFIG_CXXFLAGS='-ffunction-sections -fdata-sections' \
  bootstrap

Rubyで試したが問題なし。

[Ruby] ERB 2.0.1

更新。


2002-11-23 (Sat)

[Linux] Linux 2.4.20-rc3

久し振りに上げてみた。特に問題ない。

[Ruby] yaml.rb 0.47

更新。


2002-11-24 (Sun)

[雑誌] Embedded UNIX Vol.1

第1特集に「Linuxクロス開発環境構築入門」とある。 これがまた近年まれに見るツッコミどころ満載の内容だ。

_ なぜLinux?:

まず3章に分かれているが、そのうちの2章分がCygwinに関する記事。 看板に偽りあり。

_ パスワードを空に?(6, 7ページ):

Cygwinのmkpasswdで作った/etc/passwdだとシステムと整合が取れなくなることがあるという。 そんな経験は今まで一度もないが、 筆者はなんと/etc/passwdのパスワードフィールドを空にし、 更にwindowsのパスワードも空にしろと言う。 いちおうセキュリティに注意しろと但し書きはあるが、 解決法としては全くもって話にならない。 あ、ここではNT系を使用する場合について書かれている。

_ ドットファイル(8ページ):

windows上ではドットファイルを作成できないと言い切っているが、 それはexplorerの仕様なだけ。コマンドプロンプトでいくらでも作れる。 ひょっとしてコマンドプロンプトはwindowsではないとでも?

_ .bashrc(8, 9ページ):

bashが.bashrcをログイン時に読んでくれないので/etc/profileに

source .bashrc

を追加したとある。 マニュアルを読んだことがないらしい。.bash_profile。

_ tar --help(9, 10, 11ページ):

ここで突然tar --helpの全内容が2ページ丸々使って掲載されてる。 そんなものは実行すればいつでも見られる。

_ symlink(12ページ):

日本語を扱うためにjvim3を自分でmakeする話。 iconvもあるしvim6をmakeし直せばいいじゃんともいえるけど、 ま、それは置いといて、viという名前で呼べるように

$ ln -s -f /usr/local/bin/vim.exe /bin/vi.exe

とするあった。ということはvimという名前で呼んだときにはどうするんだろう? というかPATHの設定で/usr/local/binのほうが先になってないのか?

_ jvim3のMakefileの修正(13, 14, 15, 16ページ):

たった5行の修正個所を示すために3ページ半を費やす。diffを知らないらしい。

_ grep(18ページ):

「-eオプション, -fオプションを使用すると正規表現が使用できます.」 まるで指定しなきゃ使えないような書き方だ。

_ sed(19ページ):

sedを使う例。

sed 's/^int/long/g' test.c | sed 's/iTestcnt/lTestcnt/g' >hoge.c

まあ、ここをツッコむのはちょっと可哀想ではあるが、^を使うならgは要らないし、 sedを2回呼ぶ必要もない。

sed -e 's/^int/long/' -e 's/iTestcnt/lTestcnt/g' test.c >hoge.c

sed -e 's/^int/long/;s/iTestcnt/lTestcnt/g' test.c >hoge.c

で十分だ。

_ sort(20ページ):

ls -Alの結果を作成日順に並べる例。

ls -Al /usr/include/*.h | sort +5

誌面でもソートされていないのが一目でわかる。

Apr 26  2001
Apr 26  2001
Dec  5  2000
...

英語の月の名前でソートしてどうする? サイズでソートにしとけばよかったのにねえ。

_ prefix(26ページ):

クロスbinutilsを作る話。 configureに--prefix=/usr/localとわざわざ指定してるのに、 できあがったMakefileを書き換えてprefix = /opt/shにしろと言う。 だったらなぜ最初から--prefix=/opt/shと指定しない?

_ 移植の話(3章):

「autoconfはクロスコンパイルに完全対応できていないので, configureの際にコンパイラを変更しない」 autoconfが対応してないのではなく、 各アプリケーションのconfigure.ac(in)が対応していないというべき。 このあとで--prefix=/hogeとして一度ホスト上の環境でconfigureを実行し、 できあがったMakefileのgccやarなどを書き換えろと言う。 そういえば一度も--targetや--hostや--buildといったオプションについて書かれていない。 autoconfのマニュアルも読んだことがないらしい。

結局ApacheはnativeのMakefileを参考にshell scriptを作ったようだ。 その内容が3ページほど。

_ tarball(40ページ):

# tar cvxf httpd.tgz *

は単なるtypoだと思うけど、xとzはキーボード上で並んでるしね。 こうすると2度目は困るからhttpd.tgzは別の場所に作ったほうがいい。 そういえばたまにtarballの中にtarballが入っていたりすることがあるけど、 こうやって作ってる人が結構いるってことか。

_ apachectl(41, 42, 43, 44ページ):

--prefix=/hogeで作ったから正しいpathに変更しろということだが、 変更後しかないのでどこを変更したんだかわからない。 見た目だと2つしかない。なんのためにsedを紹介したのだ。

その後も無駄と思えるようなリスト満載。 このへんで勘弁してやろう。というか勘弁してよ。疲れた。

西田さんのBusyBoxの記事はいつもながらいいねえ。 先が楽しみ。

[Cygwin] Updated: cygwin-1.3.16-1

Changesを見ると

- Export fseeko and ftello.  (Jason Tishler)

ということなのでRuby 1.7のconfig.cacheを消してIO#seekを試す。 large fileではないが普通の小さいファイルで問題なしなのでとりあえずok。

なぜLinux?

あ、SH-Linuxのクロス環境を作る話だからホストがCygwinでいいわけか。 もうしわけない。


2002-11-25 (Mon)

[Ruby] MAXPATHLEN

1.7をmingw32でmakeしたらdln.cでエラー。MAXPATHLENが定義されてないという。 なぜか#ifdef USE_DLN_A_OUTの中にMAXPATHLENの定義が移動している。 で、前に移動したわけだけだが、結局は [ruby-dev:18939]となった。

[Ruby] make -nとmake -k

ext/extmk.rbで

$continue = mflags.include?(?k)
$dryrun = mflags.include?(?n)

で判断してるが、長いオプションを指定したときまずいねえ。 たとえばCygwinではMAKE_MODE=--unixを必ず指定することになるけど、 これにはnが含まれているから常にdryrunフラグがonになってしまう。 現在は

    $mflags.unshift("INSTALL_PROG=install -m 0755",
                    "INSTALL_DATA=install -m 0644") if $dryrun

となっていてこの2つのマクロが置き換わるだけなので特に問題はないが。 いや、installコマンドでインストールすることになるのはやはり問題か。

$continue = mflags[/-k\b/]
$dryrun = mflags[/-n\b/]

とするか。

上記のよう変更してmake -nしてみたが、$dryrunは真にならない。 調べてみると環境変数MAKEFLAGSが" --unix -n"になり、

" --unix -n".split(nil, 2)

の結果が

["--unix", "-n"]

なので

mflags, = mflags.split(nil, 2)

を実行するとmflagsは"--unix"になってしまうからだ。 位置を決め打ちしてるのはまずいなあ。ここは

if mflags = ENV["MAKEFLAGS"]
  mflags, = mflags.split(nil, 2)
else
  mflags = ENV["MFLAGS"] || ""
end
$continue = mflags.include?(?k)
$dryrun = mflags.include?(?n)

mflags = ENV["MAKEFLAGS"] || ENV["MFLAGS"] || ""
$continue = mflags[/-k\b/]
$dryrun = mflags[/-n\b/]

とすればよさそう。

てゆかdryrunのときになぜ置き換える必要があるんだろう? 単に

install -m 0755 curses.so /usr/local/lib/ruby/1.7/i386-cygwin

のように表示させたかったから?たしかに

/home/watanabe/ruby/cygwin/miniruby.exe -I/home/watanabe/ruby/cygwin \
  -I/home/watanabe/ruby/ruby/lib -r ftools -e \
  'File::install(ARGV[0],  ARGV[1], 0555, true)' \
  curses.so /usr/local/lib/ruby/1.7/i386-cygwin

と表示されたら欝陶しいとは思うけど。 あ、0755と0555と違いがある。というか0755で十分だな。

sort

sortが使えるというよりもsortコマンドの紹介なので、 lsで解決してしまっては意味がないのは全くもっておっしゃる通りです。 どっちにしろ例が悪かったと言えます。 ここでは順番に

grep, sed, awk, perl, ruby, uniq, tr, sort

の各コマンドを説明してます。

[Ruby] mswin32版ruby 1.6

mswin32版1.6が非常に遅いという話題はすでに何度か出てます。1.7では速くなってます。 [ruby-list:27694][ruby-dev:12224]あたりを参照してください。

[Ruby] BZ2 0.1.2

更新。


2002-11-26 (Tue)

[Ruby] ncurses-ruby 0.6

MinGWは pdcursesでいけるかと思ったらlibpanel.aの作りがまずいらしく、dllを参照してしまうようだ。 自分でmakeするか。

[今日のトリビア] 「けんじ」と「けいご」

19は岡平健治、岩瀬敬吾で、フリッパーズギターは小沢健二、小山田圭吾。 どっちも「けんじ」と「けいご」だったことに気づく。


2002-11-27 (Wed)

[GCC] -I/usr/local/include

GCC 3.2.1では例の警告が出なくなったようだ。

% gcc -V 3.2 -I/usr/local/include -c hoge.c
cc1: warning: changing search order for system directory "/usr/local/include"
cc1: warning:   as it has already been specified as a non-system directory
% gcc -V 3.2.1 -I/usr/local/include -c hoge.c

まあ、意味のある警告とも思えないしね。かなり不評だったんだろう。

[Ruby] MAXPATHLEN

そろそろpushしようかと思ったら、そのまま採用されていた。

[Linux] mtools 3.9.8

640MBのMOをmtoolsでアクセスしようと思ったら

% mdir m:
Total number of sectors not a multiple of sectors per track!

と言われた。~/.mtoolsrcに

drive m: file="/dev/sda"

と書いただけじゃだめみたいだ。230MBはこれでいいんだけどなあ。 とりあえず今使ってるmtools 3.8というのはあまりにも古すぎるので最新を試す。 ここがmtoolsのweb pageらしい。

% CFLAGS=-Os ./configure --prefix=/usr --sysconfdir=/etc
% make
% sudo make install

早速試すと

% mdir m:
Total number of sectors not a multiple of sectors per track!
Add mtools_skip_check=1 to your .mtoolsrc file to skip this test

とヒントが出た。 仰せの通りmtools_skip_check=1を追加したらアクセスできるようになった。


2002-11-28 (Thu)

[PC] ハードディスク

Clip-Onのハードディスクを換装した時に、40GBのハードディスクが余ったわけだが、 一年以上経った今頃になって活用することを思い立つ。 てゆか忘れていた。大掃除してたら出てきたのだ。 /dev/hdcの8GBにある旧環境はすでにアクセスしてないので、 外してそこにつなげることにする。 とりあえずSoftwareDesignの11月号についてきたPlamo 3.0をインストールすることにした。

[Linux] Plamo 3.0

例によって普通じゃない方法でインストールする。 /cdrom/AT/FD/initrdの中身を取り出してコピー。

% sudo mount -r -o loop /cdrom/AT/FD/initrd /mnt
% mkdir /tmp/plamo-3.0
% cd /mnt
% sudo cp -av . /tmp/plamo-3.0

chrootしてsetupを起動。

% sudo chroot /tmp/plamo-3.0 /bin/sh --login
# setup

あとは普通に進める。と思ったが、proc fsがないから失敗。

# mount -t proc proc /proc

してからもう一度setup。 進めるうちにext3fsやreiserfsが選べるようになってることがわかり、 ext3fsにしたくなる。が、今のカーネルはモジュールを作ってない。 というわけで、ext3を作る。 てゆかフロッピー2枚(bootdsk, rootdsk)用意すればいいだけの話ではあるが。

[Linux] Linux 2.4.20-rc4

ただext3モジュールを作るだけじゃつまらないので、 ついでに2.4.20-rc4に上げる。 などと本筋とは関係ないことばかりしてるから時間がなくなる。 Plamo 3.0のインストールはまた明日。


2002-11-29 (Fri)

[Linux] Plamo 3.0

昨日のつづき。同じように進めて /bootは別のパーティションにしてhdc1として用意。 あとは適当にスワップパーティションを切って、残りを/へ。 ext3を選んでフォーマット。

実際にインストールするとこで

BusyBox v0.61.pre (2002.08.04-11:05+0000) multi-call binary

Usage: sort [-n] [FILE]...

とBusyBoxのsortが文句を言う。

# grep sort /usr/lib/setup/*

してみると-uオプションを使っているのがまずいようだ。 メッセージにも-nオプションしか対応してない様が現われているし。 気持ち悪いので中断し現環境のsortをコピーして使うことにした。 sortはつい この間uClibcでstatic版を作ってあるからそのままどこでも動くようになっている。 というかPlamoのインストールディスクはuClibcで作ってあるので、 staticじゃなくても大丈夫か。

あとは全く問題なし。

で、なんでこんな変な方法でインストールしてるかというと、 普通にインストールディスクから立ち上げると、 その間は他のことができないから。 それに今回のsortのように何かあったときも簡単に対応できる。

[Linux] Linux 2.4.20

ChangeLogを見ると、結局2.4.20-rc4がそのまま2.4.20としてリリースされた模様。


2002-11-30 (Sat)

[Linux] XFree86 4.2.0

xf86configなんて久し振りに起動した。 が、できあがったXF86ConfigはいまいちのようでちゃんとXが立ち上がらない。 X -configureの結果とミックスさせてみる。よさそうだ。記念に XF86Configを置いとく。

Plamo 3.0は東雲フォントがdefaultで入ってるようだ。 cmailはボールド体が結構使われているんだということに気づく。

[Linux] 新環境

今までの環境の/usr/local,/home/watanabeをそのままコピー。 glibc 2.3.1はtarballを残しておいたのでそのまま展開。 これでほとんど移行完了。

ppxpでダイアルアップしてみるとアクセス権限がないという。 /etc/groupのttyにwatanabeを追加。もう一度。 今度はシリアルが初期化できないという。そういえばirqの設定をしていない。

% sudo setserial /dev/modem port 0x3e8 irq 5 spd_vhi

でいいはず。と思ったら、/etc/sudoersに登録してない。 suしてvisudoを実行しwatanabeを登録。再度setserialを実行。 これでppxpはok。sshでheliumにloginしようしたら、 heliumなど知らんという。dnsmasqを入れてなかった。あ、dhcpdも入れてない。 こいつらを立ち上げてやっとheliumに入れた。wwwoffleも忘れてた。これは後にしよう。 fetchmailでメールを取ってくる。okだ。

[今日のトリビア] 甲本ヒロト

おいらと同い歳らしい。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!