■ 6/1
昨日の続き。色々と問題が出たのを、回避しながら Gentoo Linux 2007.0 amd64
のインストールをしているのだが。どうしても、
On step 1 of 5. Current step: Unpack stage
tarball
Copying dev-Lang/perl-5.8.8-r2 (50/116)
と出て止まってしまう。GUI 版ではないインストーラを使うと、
/mnt/gentoo/etc/passwd: No such file or directory
sh: /mnt/gentoo/etc/group: No such file or directory
sh: /mnt/gentoo/etc/shadow: No such file or directory
と出ている。調べてみると、http://bugs.gentoo.org/show_bug.cgi?id=178512
に出ているものと同じようで。調べたり、ファイルを作成してみたけど、結局
解決しなかったので、install-amd64-minimal-2007.0.iso を使ってインストール
することに。http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?full=1
を見ながらやるのだが、emerge --sync コマンドでえらい時間がかかる。続きは
後日だな。
■ 6/2
gentoo のインストールをしているとき、DNS サーバの設定で 4.2.2.1 という
アドレスが出てきた。これって本当に DNS サーバなのか、host コマンドで試して
みたら、ちゃんと応答してきた。そもそも、この IP はどこのものなのか、調べて
みた。
OrgName: Level 3 Communications, Inc.
NetRange: 4.0.0.0 - 4.255.255.255
CIDR: 4.0.0.0/8
クラスAなのはわかっていたが、1677万という数を想像すると、圧倒してしまう。
ついでに、これより若い 0.0.0.0/8 〜 3.0.0.0/8 を調べてみた。
0.0.0.0/8 Internet Assigned Numbers Authority
1.0.0.0/8 Internet Assigned Numbers Authority
2.0.0.0/8 Internet Assigned Numbers Authority
3.0.0.0/8 General Electric Company
0〜2は IANA が押さえているみたい。
■ 6/3
x86_64 な CentOS 5.1 で Apache 2.2.8 のコンパイル。make をしたところで
エラー。
[toyota@dstar]% make
〜snip〜
/usr/lib/libexpat.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
〜snip〜
こんな感じ。/usr/lib64/libexpat.so を読んで欲しいので、ファイルの編集。
[toyota@dstar]% vi build/config_vars.mk
[toyota@dstar]% vi srclib/apr-util/Makefile
この2つのファイルの -lexpat の部分を /usr/lib64/libexpat.la に置き換え。
make が通るようになった。調べてみると、configure に --with-expat=builtin
というオプションを付けても良いみたいだけど、srclib/apr-util/xml/expat を
コンパイルするようになるみたいなんで、ちょっと嫌ってみた。apache/lib の
下に libexpat.a とかできるだけなんだろうけど。
■ 6/4
Dovecot v1.0.14 がリリースされた。ほぼ同時に v1.1rc8 もリリースされた。
v1.1rc8 には
Another try at the final v1.1 RC.
とある。さらに
So let's hope this is the last RC release. If there aren't any major
problems I'll release v1.1.0 in a couple of weeks.
とある。本当かどうか、ちょっと怪しい感じもするけど。v1.0.14 には、
Since v1.1.0 release is getting near, this could well be the last v1.0
release.
なんで、v1.0 の最終ということらしい。いつものように、Dovecot のページを
書き換えておいた。
■ 6/5
5/31 から行っている Gentoo Linux for x86_64 のインストール。未だにうまく
いかない。あきらめて、とっとと放棄したいところなんだけど、自分の中で納得
できないので、もう少しやってみることにする。
■ 6/6
昨日の続きで、結局 live cd + chroot な環境を作った。動作確認のために必要
だったのだけど、インストールごときでえらく時間がかかってしまった。多分、
64bit ではない x86 環境だと、すんなりいくんだろうなぁ。
■ 6/7
NetBSD 環境に w3m を入れる。lynx でも良いのだけど、最近は w3m がお気に入り。
バイナリ容量食うのがちょっと痛いけど。とりあえず、必要な Boehm gc を入れる。
いつも、これが必要なんで、あきらめちゃうんだよなぁ…。で、w3m の make 。
[toyota@mustafar]% make
〜snip〜
gcc -I. -I. -g -O2 -I./libwc -I/usr/include/openssl -I/usr/local/include -I/
usr/local/include -DHAVE_CONFIG_H -DAUXBIN_DIR=\"/usr/local/libexec/w3m\" -DC
GIBIN_DIR=\"/usr/local/libexec/w3m/cgi-bin\" -DHELP_DIR=\"/usr/local/share/w3m
\" -DETC_DIR=\"/usr/local/etc\" -DCONF_DIR=\"/usr/local/etc/w3m\" -DRC_DIR=\
"~/.w3m\" -DLOCALEDIR=\"/usr/local/share/locale\" -o mktable mktable.o dummy.
o -L/usr/local/lib -lm -L. -lindep -L/usr/local/lib -lgc
sort funcname.tab | awk -f ./functable.awk > functable.tab
./mktable 100 functable.tab > functable.c
Shared object "libgc.so.1" not found
*** Error code 1
Stop.
make: stopped in /tmp/w3m-0.5.2
なんか、失敗してる。ちょっと、mktable を見てみる。
[toyota@mustafar]% find . -name mktable
./mktable
[toyota@mustafar]% ldd ./mktable
./mktable:
-lm.0 => /usr/lib/libm387.so.0
-lm.0 => /usr/lib/libm.so.0
-lgc.1 => not found
-lc.12 => /usr/lib/libc.so.12
インストールした gc が見つからないようである。環境変数いじっても良さそう
だけど、
[toyota@mustafar]% ./configure --with-gc=/usr/pkg
と追加して、コンパイルできるようになった。本当はもっとオプション付けてる
けど。
■ 6/8
ちょっと、NetBSD 環境に nmap を入れようかと。の前に、 pcre と libpcap を
入れないといけないみたいなので、インストールして、nmap のコンパイル。
[toyota@mustafar]% make
make: "/tmp/nmap/nmap-4.53/Makefile" line 17: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 18: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 19: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 20: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 21: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 29: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 48: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 61: Missing dependency operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 66: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 68: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 70: Need an operator
make: "/tmp/nmap/nmap-4.53/Makefile" line 263: Could not find makefile.dep
make: Fatal errors encountered -- cannot continue
make: stopped in /tmp/nmap/nmap-4.53
Makefile を見たけど、どうやら gmake を入れないといけないみたいである。
眠いので、また今度、というか残り容量との相談。
■ 6/9
一昨日入れた w3m を起動しようとしたら。
[toyota@mustafar]% ./w3m
Shared object "libgc.so.1" not found
素敵なメッセージが。一昨日は LD_LIBRARY_PATH を設定していたので、動いて
しまっていたようである。とりあえず、LD_LIBRARY_PATH を設定して、ldd して
みた。
[toyota@mustafar]% setenv LD_LIBRARY_PATH "/lib:/usr/lib:/usr/pkg/lib"
[toyota@mustafar]% ldd ./w3m
./w3m:
-lm.0 => /lib/libm387.so.0
-lm.0 => /lib/libm.so.0
-lgc.1 => /usr/pkg/lib/libgc.so.1
-lcrypt.0 => /lib/libcrypt.so.0
-lcrypto.2 => /lib/libcrypto.so.2
-lssl.3 => /usr/lib/libssl.so.3
-ltermcap.0 => /lib/libtermcap.so.0
-lc.12 => /lib/libc.so.12
[toyota@mustafar]% unsetenv LD_LIBRARY_PATH
[toyota@mustafar]% ldd ./w3m
./w3m:
-lm.0 => /usr/lib/libm387.so.0
-lm.0 => /usr/lib/libm.so.0
-lgc.1 => not found
-lcrypt.0 => /lib/libcrypt.so.0
-lcrypto.2 => /usr/lib/libcrypto.so.2
-lssl.3 => /usr/lib/libssl.so.3
-ltermcap.0 => /usr/lib/libtermcap.so.0
-lc.12 => /usr/lib/libc.so.12
という具合。LD_LIBRARY_PATH を .cshrc かなんかに書いて、設定してあげれば
良いのだけど、ldconfig で解決させようかと。
# ldconfig -r
ldconfig: /var/run/ld.so.hints: No such file or directory
hints ファイルがないらしい。hints ファイルって Linux なんかでいうところの
cache ファイルなのかなぁ。NetBSD の ldconfig コマンドは Linux のそれに
比べてオプションも少ないし、だいぶ仕組みが違うようである。
# ldconfig /usr/lib /lib /usr/pkg/lib
# exit
[toyota@mustafar]% ./w3m
Shared object "libgc.so.1" not found
現象変わらず。今日のところは、
[toyota@mustafar]% setenv LD_LIBRARY_PATH "/lib:/usr/lib:/usr/pkg/lib"
で回避する。
■ 6/10
昨日の続きで。NetBSD の ELF バイナリの shared library ってどうやって検索
するのか調べてみたけど、なんか良いページがみつからない。NetBSD のページに
見つけたけど、なんだかピンとこないし。とりあえず、/usr/lib と、バージョン
1.4 以上の場合は /usr/local/lib から検索されるみたい。これ以外の場所に
ライブラリがある場合は、コンパイル時に -R オプションをつけろ、ということ
みたい。とりあえず、やってみた。
[toyota@mustafar]% ./configure LDFLAGS=-R/usr/pkg/lib
[toyota@mustafar]% make
〜snip〜
[toyota@mustafar]% unsetenv LD_LIBRARY_PATH
[toyota@mustafar]% echo $LD_LIBRARY_PATH
LD_LIBRARY_PATH: Undefined variable.
[toyota@mustafar]% ldd ./w3m
./w3m:
-lm.0 => /usr/lib/libm387.so.0
-lm.0 => /usr/lib/libm.so.0
-lgc.1 => /usr/pkg/lib/libgc.so.1
-lcrypt.0 => /lib/libcrypt.so.0
-lcrypto.2 => /usr/lib/libcrypto.so.2
-lssl.3 => /usr/lib/libssl.so.3
-ltermcap.0 => /usr/lib/libtermcap.so.0
-lc.12 => /usr/lib/libc.so.12
問題なくなったようである。-rpath の記述のことが書いてあったので、man ld
をしてみると。
For compatibility with other ELF linkers, if the -R option is fol-
lowed by a directory name, rather than a file name, it is treated
as the -rpath option.
ということなので、-rpath に置き換えられるみたい。ということは。
[toyota@mustafar]% ./configure LDFLAGS="-rpath=/usr/pkg/lib"
が正しいのかな。
■ 6/11
ld の rpath は実際のバイナリのどこに影響するのか、ちょっと調べてみることに
した。とりあえず、rpath を付ける前と後で readelf の結果を見てみたのだけど、
Dynamic segment というところが違っていた。rpath を付ける前は。
[toyota@mustafar]% readelf -d w3m.old
Dynamic segment at offset 0x10a318 contains 22 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libm.so.0]
0x00000001 (NEEDED) Shared library: [libgc.so.1]
0x00000001 (NEEDED) Shared library: [libssl.so.3]
0x00000001 (NEEDED) Shared library: [libcrypto.so.2]
0x00000001 (NEEDED) Shared library: [libtermcap.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.12]
0x0000000c (INIT) 0x804a270
0x0000000d (FINI) 0x809fe90
0x00000004 (HASH) 0x8048124
0x00000005 (STRTAB) 0x8049430
0x00000006 (SYMTAB) 0x8048770
0x0000000a (STRSZ) 2069 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x8153404
0x00000002 (PLTRELSZ) 1496 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8049c98
0x00000011 (REL) 0x8049c48
0x00000012 (RELSZ) 80 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x00000000 (NULL) 0x0
rpath オプションをつけてコンパイルしたバイナリは。
[toyota@mustafar]% readelf -d w3m
Dynamic segment at offset 0x126398 contains 23 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libm.so.0]
0x00000001 (NEEDED) Shared library: [libgc.so.1]
0x00000001 (NEEDED) Shared library: [libssl.so.3]
0x00000001 (NEEDED) Shared library: [libcrypto.so.2]
0x00000001 (NEEDED) Shared library: [libtermcap.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.12]
0x0000000f (RPATH) Library rpath: [/usr/pkg/lib]
0x0000000c (INIT) 0x804a310
0x0000000d (FINI) 0x80bae90
0x00000004 (HASH) 0x8048124
0x00000005 (STRTAB) 0x8049480
0x00000006 (SYMTAB) 0x8048780
0x0000000a (STRSZ) 2117 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x816f48c
0x00000002 (PLTRELSZ) 1528 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8049d18
0x00000011 (REL) 0x8049cc8
0x00000012 (RELSZ) 80 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x00000000 (NULL) 0x0
と、
0x0000000f (RPATH) Library rpath: [/usr/pkg/lib]
が追加されている。-rpath をさらに追加して、
0x0000000f (RPATH) Library rpath: [/usr/hoge/lib:/usr/pkg/lib]
にしてみたけど、実行時にエラーはでなかったので、問題がありそうな匂いが
したら追加しておくと良いのかも。
■ 6/12
NetBSD のサーバに html データをコピーしようとしたが。scp で毎回やると、
CF の書き込み回数が増えるので、ちょっと嫌、ということで、rsync を使うことに
した。が。
[toyota@mustafar]% rsync
rsync: Command not found.
そこからみたい。面倒なのでパッケージで入れることにした。
[toyota@mustafar]% wget ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD-3.1/i3
86/All/rsync-2.6.9nb2.tgz
[toyota@mustafar]% su
[root@mustafer]# pkg_add rsync
[root@mustafer]# exit
インストール完了。データを引っ張ってくることにした。
[toyota@mustafar]% rsync -v -e ssh -a --delete kamino:/data/backup /tmp/backup
toyota@kamino's password:
rsync: Command not found.
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(453) [receiver=2.6.9]
どうやら、向こう側にも rsync が入っていないと駄目みたい。向こう側って sh4 な
Linux で、クロスコンパイルの環境はもうないんだよなぁ。rsync なんてどこかに
rpm が落ちてるものなのかなぁ。
■ 6/13
ということで、sh4 な Linux 用の rsync バイナリを探す。検索をしたら、rpm が
sh-linux にあるようなので、行ってみたが。何故か、接続できなかった。仕方なく
同じ rpm がある所をさがしたら。
http://ms-n.org/sh-linux/fc3/RPMS/
http://ss-net.net/sh-linux/fc3/RPMS/
で見つかる。そもそも、このドメインにあるファイルは安全なのか、心配だったので
whois をしてみたら。
Registrant Organization:ITO Co.,Ltd.
という結果が返ってきた。同じように、sh-linux.org を whois すると。
Registrant Organization:SH-Linux Users
Tech Organization:ITO Co.,Ltd
ということなので、関連サイト(?)のようである。早速、ダウンロードして使って
みた。
[toyota@kamino]% wget http://ms-n.org/sh-linux/fc3/RPMS/sh4/rsync-2.6.3-1.sh4.rpm
[toyota@kamino]% rpm2cpio rsync-2.6.3-1.sh4.rpm | cpio -id
[toyota@kamino]% cp usr/bin/rsync ./
[toyota@kamino]% rm -rf etc usr
[toyota@kamino]% ./rsync
./rsync: /lib/libc.so.6: version `GLIBC_2.3' not found (required by ./rsync)
だそうで。glibc 2.3 が必要のようである。そもそも、今の glibc のバージョンが
いくつなのか見てみた。
[toyota@kamino]% ls /lib/libc*
/lib/libc-2.2.5.so /lib/libc.so.6.1 /lib/libcom_err.so.2.0
/lib/libcrypt.so.1 /lib/libcrypto.so.2 /lib/libc.so.6
/lib/libcom_err.so.2 /lib/libcrypt-2.2.5.so /lib/libcrypto.so.0.9.7
2.2.5 のようである。また壁にぶつかってしまった。
■ 6/14
sh-linux.org が繋がるようになったので、古い rsync の rpm を探してみた。
rsync-2.5.4-2.sh4.rpm を見つけたので、動くかやってみた。
[toyota@kamino]% wget http://www.sh-linux.org/rpm-2003/RPMS/sh4/rsync-2.5.4-2.sh4.rpm
[toyota@kamino]% rpm2cpio rsync-2.5.4-2.sh4.rpm | cpio -id
[toyota@kamino]% cp usr/bin/rsync ./
[toyota@kamino]% rm -rf etc usr
[toyota@kamino]% ./rsync --version
rsync version 2.5.4 protocol version 26
Copyright (C) 1996-2002 by Andrew Tridgell and others
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles, IPv6,
64-bit system inums, 64-bit internal inums
あ、rsync の作者って Samba の Andrew Tridgell か、と思い出したりして。
ということで、NetBSD マシンから無事に rsync でファイルを取ってくることが
できた。ファイル取得中に接続先でのプロセスを ps で見てみた。
root 22489 240 5 00:01:00 sshd: toyota@notty
toyota 22491 22489 0 00:00:00 tcsh -c rsync --server --sender -vlogDtpr . www/
toyota 22492 22491 2 00:00:29 rsync --server --sender -vlogDtpr . www/
ということで、ssh を notty で接続して、ログインシェルから rsync を呼んで
いるようである。
■ 6/15
KTC の MCK317 という工具セットを買ってみた。写真があるので、別ページに。
それにしても、別ページ扱いにしたの、今年まだ2回目である。極端に少ない。
■ 6/16
最近ちょっとプログラムの signal 処理なんかをやっていて。調べてみると、
SYSV スタイル、BSD スタイル、そして POSIX の sigaction と、ちょっと歴史と
混乱を感じさせるようなことが書かれていて。手元のプログラムは Linux 用の
プログラムなので、BSD スタイルのシグナル処理が行われるのだろうけど、SYSV
スタイルで書かれていて、ちょっと嫌な感じだったので、全部 POSIX な sigaction
に揃えてみた。見た目の動作は何にも変わらなかったけど。
■ 6/17
最近減ったけど、15時ごろとかに go.jp からバイクのページに検索で辿り着く
ようなアクセスがある。ちょっとアレなんで、Ajax を使って動的に whois 情報を
引いて、接続元組織名を表示すれば、少しは驚くかなと思って作ってみようと
したのだが。Ajax のレベルじゃ IP が取れない気がして。cgi や php なんかと
組み合わせないと駄目な感じ。作ろうとして、だんだん面倒になってきた。また
時間のあるときに、考えることにしよう。
■ 6/18
なんか、tcpdump の結果を眺めていたら。802.1d unknown version なる文字が。
[root@dstar]# /usr/sbin/tcpdump -i eth0 -n not port ssh
tcpdump: listening on eth0
15:09:32.305565 192.168.0.2.hsrp > 224.0.0.2.hsrp: HSRPv0-hello 20: state=acti
ve group=2 addr=192.168.0.1 [tos 0xc0] [ttl 1]
15:09:33.087050 802.1d unknown version
15:09:35.100357 802.1d unknown version
いつもは気にしないけど、ちょっと時間があったので、tcpdump のバージョンを
確認すると、3.7.2 だった。これは OS に付いてきたもの。とりあえず、最新の
3.9.8 にして、やってみた。
[root@dstar]# ./tcpdump -i eth0 -n not port ssh
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes
15:19:08.280301 IP 192.168.0.2.1985 > 224.0.0.2.1985: HSRPv0-hello 20: state=a
ctive group=2 addr=192.168.0.1
15:19:08.927821 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 1066.
00:16:c8:00:00:00.800e, length 43
15:19:10.941131 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 1066.
00:16:c8:00:00:00.800e, length 43
ということみたい。詳しくは良くわからないけど。
■ 6/19
Dovecot の RC が新しくなった。Released the last v1.1 release candidate.
ということで、最後なんでしょう。明日 RC が取れた v1.1 が出るそうなので、
出たときに Dovecot のページをまとめて改定することにする。
■ 6/20
Skype のベータ版が出たみたいなので、インストールしてみた。バージョンを
確認すると 4.0.0.145 だった。なんだか、画面大きくなったし、特に新しくする
必要なかったかも。エモーティコンが追加されてるかも確認したけど、追加は
されてないようだし。ベータが取れたときに、また確認してみよう。
■ 6/21
Dovecot、結局 RC12, 13 が出て今日やっと v1.1.0 がリリースされた。結構難産
だった感じもするけど、リリース前のバタバタはいつも通りか。とりあえず、
dovecot.jp のページだけ更新して。そろそろ翻訳再開したいけど、付属文書、
やはり wiki ベースのものなので、翻訳するには更新が多すぎて大変そうだなあ。
どうしたもんか。
■ 6/22
最近、ネットワークが切れることがあって、screen を使うことに。しかし、だ、
複数の端末は Poderosa で実現できるし、複数プロセスもバックグランドに投げて
しまえば良いし。その中間で動いている screen の役割的には、ちょっと弱いと
言うか、使い方を工夫しないと、という感じである。もともと使うきっかけが
セッションの保持なので、無理して複数の端末を使うことはないのだけど、使う
からには使いこなしたい、というか。
■ 6/23
Postfix の設定をしているのだけど、master.cf の設定って何しているのかピンと
来ない。調べてみたら、いじっている人少ないみたいだし。cyrus とかの設定が
入っているのだけど、cyrus 使ってなければ、消しちゃっても大丈夫なのかなぁ。
とりあえず、Dovecot 動かしながら、様子見だな。
■ 6/24
ここの web サーバ、そろそろヤバい、なんてよく書いていて、なんだかんだで
もう5年稼動。Apache のインストールをしてちょうど5年経っている。SH4 の
240MHz でよくもっているもんである。で、予備の web サーバを作っていたら、
なにやらでかいファイルとか出てきた。アクセス解析用の cgi が吐くデータで
ある。BB ルータのページとかのがでかくなってきているので、そろそろ Google
Analytics で統一してしまおうかと。どんどん Google 依存になっていくのは
気が進まないけど、仕方が無い、か。
■ 6/25
昨日の続きで。バックアップついでに、古いファイルなんかを削除したりして
いたのだけど、古いもので 1999年の html ファイルとか出てきて、懐かしいなぁ
なんてソースを眺めていて。まぁ、既にどこからもリンクが張られていなくて
ここ5年ほどアクセスがなかったようなので、一気に削除。削除したあとに、
CD にでも焼いて保存しておけばよかったかな、と後悔したりもして。なんだか
Windows 98 のことを書いてあるページを見ながら、世の中進んだなぁ、なんて
しみじみ感じてしまった。
■ 6/26
人様のスクリプトを見ていたら、
sort a.txt | uniq -c | sort -r
のような、よくあるパイプ接続のコマンドがあって。私としてはすごく違和感を
感じて、何故かと言うと、uniq -c の後の sort は -n オプションを付けるべき、
という経験があるからである。例えばこの場合だと、sort -rn のように。試しに、
このスクリプトが動作している Linux のサーバで実験してみた。
[toyota@xwing]% uname -rs
Linux 2.4.21
[toyota@xwing]% uniq -c /etc/shells
1 /bin/sh
1 /bin/bash
1 /sbin/nologin
1 /bin/bash2
1 /bin/ash
1 /bin/bsh
1 /bin/ksh
1 /bin/tcsh
1 /bin/csh
1 /bin/zsh
こんだけ桁があれば、-n は必要ないのか。NetBSD の環境でもやってみた。
[toyota@mustafar]% uname -sr
NetBSD 3.1
[toyota@mustafar]% uniq -c /etc/shells
1 # $NetBSD: shells,v 1.3 1996/12/29 03:23:07 mrg Exp $
1 #
1 # List of acceptable shells for chpass(1).
1 # Ftpd will not allow users to connect who are not using
1 # one of these shells.
1
1 /bin/sh
1 /bin/csh
1 /bin/ksh
1 /usr/pkg/bin/tcsh
1 /usr/pkg/bin/screen
9999 を超えると、-n が必要になる。ついでに Solaris の環境でもやってみた。
[toyota@awing]% uname -sr
SunOS 5.10
[toyota@awing]% uniq -c /etc/printers.conf
1 #
1 # Printers.conf derived from converted LP configuration data
1 # during package installation. All future updates should be
1 # performed using lpadmin(1M) or lpset(1M)
1 #
多分、この辺りの差が、Linux でぬくぬく育った人との温度差を感じる所なの
でしょう。Linux の場合だと 9999999 まで -n が必要ないから、実質的に問題が
おきることが少ない、ということなので。意味がわからない、という人のために、
NetBSD での実験。
[toyota@mustafar]% repeat 1000 echo "aaa" >> test.txt
[toyota@mustafar]% repeat 9999 echo "bbb" >> test.txt
[toyota@mustafar]% repeat 10000 echo "ccc" >> test.txt
[toyota@mustafar]% repeat 20000 echo "ddd" >> test.txt
[toyota@mustafar]% uniq -c test.txt
1000 aaa
9999 bbb
10000 ccc
20000 ddd
[toyota@mustafar]% uniq -c test.txt | sort
1000 aaa
10000 ccc
20000 ddd
9999 bbb
[toyota@mustafar]% uniq -c test.txt | sort -n
1000 aaa
9999 bbb
10000 ccc
20000 ddd
ということである。
■ 6/27
ICANN が TLD の開放を決定してしまったようで。新たなる混沌の始まりである。
ルート DNS サーバのお仕事は増えるだろうし、メールアドレスも、
toyota@tatsuyoshi
ということが可能になる(?)ので、そこらじゅうのプログラムの改修が必要となって
くるし。ま、ドメインの取り合いになるのは必至でしょう。
■ 6/28
WILLCOM の IP レンジが増えたみたいだったので、チェックしたのだけど、この
量はなんとかならんものなのか。と、言うか /24 の連続を /23 や /22 や 21
にして記述すれば半分の量になるのに、なんでそうしないのか、疑問である。
/29 とかの記述はあるのに、
61.198.138.100/32
61.198.138.101/32
61.198.138.102/32
61.198.138.103/32
というのがあったり。DoCoMo のレンジのシンプルさが、ありがたいよ。
■ 6/29
車を EF-CL 40馬力 4MT から EN07 48馬力 3AT に変えたのだけど、40馬力 4MT
の方が、好きなだけ引っ張れるし、高速時の音も少し静かな感じがするので、
馬力があるように感じる。これまでずっと MT に乗ってきたので、まだ慣れて
いないだけかもしれないけど。まぁ、実用車なんで、割り切ることにしよう。
■ 6/30
動かす気はないけど、cygwin で dovecot v1.1.1 をコンパイルしてみた。予想に
反して、あっさりと configure が通ってしまい、make したら。
$ make
bash: make command not found
という、それ以前の問題がおきたけど、make をインストールしたら、make も
あっさりと通ってしまった。なんか、簡単に通ってしまうと、それはそれで少し
寂しい気がする。
|