debootstrap でクロスインストール
2006-06-07-1 / カテゴリ: [debian] / [permlink]

どうせ苦労するなら debian で苦労しようと、debootstrap を使ったクロスインストールを試してみた。
結果は…boot 中に pivot_root あたりから kernel panic に orz

手順はC.4. Unix/Linux System システムからの Debian GNU/Linux のインストールをそのまんま。
debootstrap 自体は rpm もあるけどバージョンが古い(woody!)ので、deb を落としてきて C.4.2 後半の手順でバイナリを強制展開。

ディスクは全部使ってしまってるんで、200GB 程ある /home を潰して、/home に160GB、クロスインストール用に 40 GB 程確保。
あ! ~/Maildir はバックアップしたけど、~/.spamassassin のデータ消してしまった…

base-config の実行は Terminated とだけ出力されて動作しなかった。実行ファイルはシェルスクリプトだったんで中を眺め、(正しいかわかんないけど)環境変数をセットして実行すればとりあえず動いた(表示は若干乱れたが)
# XXXX=1 base-config new
base-config では、apt の設定だけして、インストールはしない。apt の設定を行なうと、sources.list が "testing" 設定になるため、そのまま続行すると etch になってしまう。sarge にする場合は、apt の設定後 base-config を抜けて、/etc/apt/sources.list を sarge に変更して update/upgrade する。

カーネルのインストールは、/dev/sda9(/) がないと言われ、インストールできなかった。検証だったのでとりあえず、centos の /dev/sda9 を /mnt/debinst/dev/sda9 にコピー(いいんかな)。で、再度カーネルのインストール。
最後に grub を手動でインストール。

何がこんなに苦労させてるんだろ。SATA? NIC? うぅ

デバイス認識せず
2006-05-27-1 / カテゴリ: [linux][debian] / [permlink]

Rhapsodyさん(M/B: COMMELL LV-673 NS disk: SATA)はやっかいだな。debian のインストーラがNIC(調べたところsk98linで良いはずなんだけど…)を認識してくれない。kernel2.4だとSATAディスクを認識せず、kernel2.6だと(SATAは見えるけど)IDEのCD-ROMドライブを認識しない…(bootはするくせに…)困った。
BIOS の設定で、SATA を combined から enhanced にすると(よくわかってないけど)、ディスクもCD-ROMも認識できたが、やっぱNICが…ネットワークインストール用のインストールメディアしか持ってねぇっすよ。

knoppix4.0だと、CDもHDDもいけるが、やっぱりNICがNG。

試しに CentOS4.3 を入れてみると、こちらはなんら問題なし。うーむ。
とりあえず CentOS を入れて遊んでみることにする。

パッケージ管理あれこれ
2005-11-05-1 / カテゴリ: [cygwin][debian][redhat][Solaris][command] / [permlink]

すぐ忘れるのでメモ

インストール済みのパッケージ一覧出力
# dpkg -l      (debian)
# rpm -qa      (redhat)
# cygcheck -cd (cygwin)
# pkginfo      (Solaris)

インストール済みのパッケージ foo に含まれるファイル一覧
# dpkg -L foo     (debian)
# rpm -ql foo     (redhat)
# cygcheck -l foo (cygwin)
# pkgchk -vn foo  (Solaris)

ファイル /foo/bar をインストールしたパッケージ
# dpkg -S /foo/bar     (debian)
# rpm -qf /foo/bar     (redhat)
# cygcheck -f /foo/bar (cygwin)
# pkgchk -lp /foo/bar  (Solaris)

solaris はかなりアヤシイ.

spamassassin Bayesianフィルタ 設定
2005-09-18-1 / カテゴリ: [linux][debian][メール] / [permlink]

[2005-09-14-1]の続き。
USAGE の通りに
      spamassassin -t < sample-nonspam.txt > nonspam.out
      spamassassin -t < sample-spam.txt > spam.out
を一般ユーザで実行すると、~/.spamassassin 以下に
bayes_seen: Berkeley DB (Hash, version 8, native byte-order)
bayes_toks: Berkeley DB (Hash, version 8, native byte-order)
2つのファイルができた。
どうやら、デフォルトで bayesian フィルタを使うようになっているようだ。設定項目のリストおよびデフォルト値は
$ perldoc Mail::SpamAssassin::Conf
で見れる。

で、とりあえず、手元の spam さんたちを spam 扱いとして DB に突っ込む。
$ sa-learn --spam ~/Maildir/.Junk/cur
負荷と時間名はそれなりにかかる…(約2000通のメールで20分ほど)
更新された DB ファイルは
-rw-------  1 zaki zaki  176128 2005-09-18 18:17 bayes_seen
-rw-------  1 zaki zaki 5242880 2005-09-18 18:17 bayes_toks
こんなサイズ。
ディレクトリでなく、ファイル指定も OK みたい。

逆に、非 spam メールは --ham 指定で sa-learn を実行
$ sa-learn --ham ~/Maildir/.Friend/cur

とりあえず、これだけセットして、.procmailrc で fetch と同時にフィルタリングするよう設定
 :0 fw
 | /usr/bin/spamassassin
 
 :0 :
 * ^X-Spam-Status: Yes
 $HOME/Maildir/.Spam/
f はパイプ(|)をフィルタとみなし、w はフィルタが異常終了した場合はフィルタに渡す前の状態にする、と(man fetchmailrc)

でもって、ケータイから1通メールを送ってみると、ヘッダにちゃんとチェック結果が追記されていた。
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar
X-Spam-Level: *
X-Spam-Status: No, score=1.4 required=7.0 tests=AWL,BAYES_50,NO_REAL_NAME,
	PRIORITY_NO_NAME autolearn=no version=3.0.3
ふーん、、、



で、セット後数時間経過したら、ちょーど spam がキタ
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar
X-Spam-Level: ****************
X-Spam-Status: Yes, score=16.8 required=7.0 tests=BAYES_99,NO_REAL_NAME,
	RCVD_IN_SBL,SUBJ_ILLEGAL_CHARS,URIBL_AB_SURBL,URIBL_OB_SURBL,
	URIBL_SBL,URIBL_SC_SURBL,URIBL_WS_SURBL autolearn=spam version=3.0.3
X-Spam-Report: 
	*  0.0 NO_REAL_NAME From: does not include a real name
	*  2.9 SUBJ_ILLEGAL_CHARS Subject contains too many raw illegal characters
	*  3.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100%
	*      [score: 1.0000]
	*  0.1 RCVD_IN_SBL RBL: Received via a relay in Spamhaus SBL
	*      [220.230.107.120 listed in sbl-xbl.spamhaus.org]
	*  1.0 URIBL_SBL Contains an URL listed in the SBL blocklist
	*      [URIs: lovinyou.net]
	*  0.4 URIBL_AB_SURBL Contains an URL listed in the AB SURBL blocklist
	*      [URIs: lovinyou.net]
	*  1.5 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist
	*      [URIs: lovinyou.net]
	*  3.2 URIBL_OB_SURBL Contains an URL listed in the OB SURBL blocklist
	*      [URIs: lovinyou.net]
	*  4.3 URIBL_SC_SURBL Contains an URL listed in the SC SURBL blocklist
	*      [URIs: lovinyou.net]
おー
BAYES_99 がベイジアンフィルタでのチェック結果ぽいな。
これから spam くるのが楽しみだ(本末転倒)

しっかし、結果として spam 認定したときのプロセスの実行がすげー重い… 十数秒はかかる。やっぱチューニング必要なのかなぁ…



設定リストメモ
http://spamassassin.apache.org/tests_3_0_x.html

spamassassin インストール
2005-09-14-1 / カテゴリ: [linux][debian][メール] / [permlink]

バージョンは 3.0.3-2 (2005/09/14 現在)
# aptitude install spamassassin
:
The following NEW packages will be automatically installed:
  libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl 
  libhtml-tagset-perl libnet-dns-perl spamc 
The following NEW packages will be installed:
  libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl 
  libhtml-tagset-perl libnet-dns-perl spamassassin spamc 
0 packages upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 1194kB of archives. After unpacking 3912kB will be used.
Do you want to continue? [Y/n/?]
htmlメールにも対応??

debconf はなし。
メッセージに
SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin
とあるのでチェック。
動かすためには
ENABLED=0
を 1 にせよ、とのこと。ユーザごとの設定で、システムワイドの設定をすべて上書きできるみたいなので、とりあえず 1 にして daemon start. すると 783/tcp が LISTEN した。

うーん、次に何をすればよいのやら…
ユーザ用の実行ファイルは dpkg -L を見た感じでは /usr/bin/spamassassin と /usr/bin/spamc の2つ。man をさらっと見た限りでは spamc は smapd (daemon) とおしゃべりするコマンドかな。spamassassin がフィルタぽい。
よくわからんので、とりあえず
$ spamassassin --lint
を実行。rule ファイルの syntax error を報告するオプション。
すると
Created user preferences file: /home/zaki/.spamassassin/user_prefs
と、なったので、ひとまず、Maildir/.Junk 以下に Thunderbird さんが振り分けてくれた spam たちで遊んでみる。

とりあえず動作に影響がでなさそうなオプションで
$ spamassassin -tL ~/Maildir/.Junk/cur/xxx
-t は test mode で、レポートを追加
-L は local test mode でサーバと接続しない(?)
で、結果は stdout に吐かれて、ヘッダの最後に
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar
X-Spam-Level: ***
X-Spam-Status: No, score=3.0 required=5.0 tests=NO_REAL_NAME,
        SUBJ_ILLEGAL_CHARS autolearn=no version=3.0.3
メール本文の後ろにpreviewと
Content analysis details:   (3.0 points, 5.0 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 0.1 NO_REAL_NAME           From: does not include a real name
 2.9 SUBJ_ILLEGAL_CHARS     Subject contains too many raw illegal characters
というレポートが出力された。
デフォルトだと、points(3.0になってる値)が5.0を超えると spam 判定されるようだ。でもって、spam 扱いになると、multipart メールになって、警告文が追加される。
Subject の書き換え("[spam]"の追加等)は
header_rewrite Subject [spam]
multipart への書き換え禁止は
report_safe 0
を ~/.spamassassin/user_prefs に追加。
ヘッダの追加は許すが、ヘッダの書き換え・本文の書き換えは個人的にキライ。

現在の判定材料は NO_REAL_NAME, SUBJ_ILLEGAL_CHARS のみ(?)ってことかね。

って、よくみたら、/usr/share/doc/spamassassin/USAGE.gz が。
まずは
      spamassassin -t < sample-nonspam.txt > nonspam.out
      spamassassin -t < sample-spam.txt > spam.out
せよ、とのこと ^^; 遅いっつーの。

うーん、結構チューニングが面倒か?
って、ベイジアンフィルタはどうすんだ?

きっと続く。
Referrer (Inside): [2005-09-18-1]

Postfixインストール(sarge)
2005-09-13-1 / カテゴリ: [linux][debian][MTA][メール][Postfix] / [permlink]

計画としては、spamassassin でもいれようかと。
sarge の Postfix は 2.1.5-9 (2005/09/13現在)

で、まぁ
# aptitude install postfix

外向け(外からの受信/外への配送)に動かす気はないので、とりあえず debconf はほぼ全部デフォで。
General type of configuration は Local only にした。ドメインだけは、ちゃんと設定。
まぁ、ほとんどPostfix + qpopper見ながら設定。あとはmain.cf 和訳

あれ? ローカルオンリーにしたいんだったら、何も設定することがない…
しかも
inet_interfaces = loopback-only
のおかげで、LAN 内からも 25/tcp はアクセスできん。
これじゃ面白くないので、予定変更。

# dpkg-reconfig postfix
にて、Satellite system に変更

すると、debconf の途中で、relayhost parameter の設定が出現。なんだろ、これ。外部リレーの際に、まとめて特定の MTA にリレーさせる設定かなぁ。
ほかに、listen するネットワークアドレス、メールボックスのサイズ、拡張アドレスのデリミタあたりを設定。
debconf 終了後に main.cf 確認したが、relayhost parameter の項目は、
relayhost = smtp.localdomain
になっていた。(↑デフォルトの値)

ついでなので(笑)、ほかの type も調べてみる。
Internet with smarthost を選択して、残りはデフォルト(というより Satellite system の時に選択したもの)で進めると、inet_interface が all に変わった。

まぁ、こんなとこです。

とりあえず、設定をちゃんとする。
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = $myhostname
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = mail.example.org, cheddar, localhost.localdomain, localhost
myhostname = cheddar
mynetworks = 127.0.0.0/8 192.168.1.0/24
myorigin = /etc/mailname
recipient_delimiter = -
relayhost = 
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

cheddar は 192.168.1.1/24 で、192.168.1.0/24 は LAN 側。外側はのネットワークからは繋がらないようにした。

って、インストールしたあとで気づいたけど、spamassassin って単にフィルタじゃん。MTA 関係なしに動くのね。しかも Perl か。
まぁいいや、Postfix 好きだし… メインコンテンツの Postfix の文書を sarge 用に書き直す材料だと思えば…orz

iptables の設定の保存と有効化(sarge)
2005-09-11-1 / カテゴリ: [linux][debian] / [permlink]

woody のころと違って、sarge(を新規にインストールした場合)だと、/etc/init.d/iptables がないので、save による設定の保存や boot 時の自動有効が効かない。/usr/share/doc/iptables/README.Debian.gz を見ても、なんかいい方法がなさそう。
というわけで(英文訳すのもメンドイので)自分で作っちゃえ。

一応、現在の設定をdumpする /sbin/iptables-save と、その結果をrestoreできるっぽい /sbin/iptables-restore があるので、これを使って init.d スクリプトを作成

/etc/init.d/iptables
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin
SAVE=iptables-save
LOAD=iptables-restore
CONF=/etc/iptables.conf

if [ ! -f $CONF ]; then
	echo "No configure file $CONF"
	exit 1
fi

echo 1 > /proc/sys/net/ipv4/ip_forward

case "$1" in
	start)
		echo "iptables start (restore configure)"
		$LOAD < $CONF
		echo "done"
		;;
	stop)
		echo "do nothing :)"
		;;
	save)
		echo "iptables save configure"
		$SAVE > $CONF
		echo "done"
		;;
	reload|restart)
		echo "reload configure"
		$LOAD < $CONF
		echo "done"
		;;
	*)
		echo "Usage $0 {start|stop|save|reload|restart}"
		exit 1
esac

exit 0

でもって、rcconf あたりで /etc/rc*.d/*iptables にリンクはってやれば OK
shutdown 時に自動で保存したければ、stop (do nothing)のところに、$SAVE > $CONF をいれてくれ。

現在の設定を保存するときは、
# /etc/init.d/iptables save
で。
Referrer (Inside): [2006-07-24-1] [2006-06-04-1]

WebDAV 設定 (割と中途)
2005-09-05-2 / カテゴリ: [linux][debian][Apache] / [permlink]

ubuntu(apache2.2)での設定はこっち([2008-02-22-1])


Apache 1.3(deb) を WebDAV 対応にしてみる。Apache そのものは設定済みとする

参考: nemuiDoc: DebianでWebDAVサーバ
ということで、sarge になってるので、
# aptitude install libapache-mod-encoding
The following NEW packages will be installed:
libapache-mod-dav libapache-mod-encoding libiconv-hook1 libxmltok1
なんか、必要なのが全部入りそうだし^^;

modules.conf に追記
LoadModule encoding_module /usr/lib/apache/1.3/mod_encoding.so
LoadModule dav_module /usr/lib/apache/1.3/libdav.so

httpd.conf に追記
DAVLockDB  /var/lock/DAV/apache
EncodingEngine    on
NormalizeUsername on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS MSSJIS

AddClientEncoding "cadaver/" EUC-JP
AddClientEncoding "Microsoft .* DAV" MSSJIS
AddClientEncoding "xdwin9x" SJIS

Alias /dav /var/www/dav
<Location /dav>
        DAV On
        <LimitExcept GET HEAD OPTIONS>
                AuthType Basic
                AuthName "WebDAV"
                AuthUserFile /etc/apache/DAVuser
                Require valid-user
        </LimitExcept>
</Location>

/etc/apache/DAVuser には、htpasswd を使って登録したユーザ情報がはいる。
/var/lock/DAV 以下は、www-data:www-data
/var/www/dav 以下も、www-data:www-data

で、winXP なら、My network の[ネットワーク プレースを追加する] から [別のネットワークの場所を選択]し、アドレスの入力で [http://server/dav] を入力し、htpasswd で指定したユーザ名/パスワードを入れれば登録できた。

とりあえず、オフィシャルパッケージの mod_encoding では UTF-8 にしか対応していない(EUC-JPとかを指定しても化ける)ので、日本語ファイル名のファイルをやり取りする場合、システムの言語設定が EUC-JP だとつらい。

LAN 用 zone の設定
2005-09-01-2 / カテゴリ: [linux][debian][bind] / [permlink]

おうちサーバは no-ip の DDNS サービスを利用していて、外からは no-ip のドメインでアクセスできるけど、自宅の LAN からは、ADSL モデムが自身の global IP で自分にアクセスできない(local IP じゃないとアクセスできない)ので、ドメイン名でのアクセスはできない。
ので、ローカル用の BIND に、(local IP を返すように)no-ip で使用しているドメイン名の名前解決をやらせる。

※ 都合上、使用しているドメインは zaki.example.org とします。でもって、LAN のアドレスは 192.168.1.* です。あと、記述に誤りがあるかもしれません ^^;;

/etc/bind/named.conf
zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.zaki.rev";
};
zone "zaki.example.org" {
        type master;
        file "/etc/bind/db.zaki.zone";
};
を追記。

でもって、
/etc/bind/db.zaki.rev (逆引き用)
$TTL    86400
@       IN      SOA     ns.zaki.example.org.     root.zaki.example.org. (
                2005082801 ; Serial
                3600       ; Refresh
                900        ; Retry
                604800     ; Expire
                3600 )     ; Minimum
@       IN      NS      ns.zaki.example.org.
1       IN      PTR     cheddar.zaki.example.org.
2       IN      PTR     camembert.zaki.example.org.
20      IN      PTR     parmesan.zaki.example.org.
100     IN      PTR     mozzarella.zaki.example.org.
101     IN      PTR     mimolette.zaki.example.org.
102     IN      PTR     chaource.zaki.example.org.

/etc/bind/db.zaki.zone (正引き用)
$TTL    86400
@       IN      SOA     ns.zaki.example.org.     root.zaki.example.org. (
                2005082801 ; Serial
                3600       ; Refresh
                900        ; Retry
                604800     ; Expire
                3600 )     ; Minimum
@       IN      NS      ns
@       IN      A       192.168.1.1
cheddar         IN      A       192.168.1.1
camembert       IN      A       192.168.1.2
parmesan        IN      A       192.168.1.20
hdlan0          IN      A       192.168.1.30
mimolette       IN      A       192.168.1.101
chaource        IN      A       192.168.1.102

そーいや parmesan なんてマシンあったな。電源壊れて全く使ってないけど。
Referrer (Inside): [2006-07-02-5]

courier-imap-ssl も自己CAのサーバ証明書で
2005-08-28-2 / カテゴリ: [linux][debian][imap][SSL] / [permlink]

courier-imap-ssl の設定で使用する証明書ファイルは、[2005-08-28-1]で作ったCA証明書・サーバ証明書のうち、以下のものを cat で結合した1つのファイルを使う
# cat server.key server.crt ca.csr > courier.pem

で、/etc/courier/imap-ssl は以下の設定
TLS_CERTFILE=/etc/ssl/servkey/courier.pem

メーラ側は、ブラウザ同様 ca.crt をインポートしてやればよい。つか、Firefox あんど Thunderbird 使用だと、同じものをそれぞれインポートしてやらんといけないからメンドウだな…

apache-ssl で自己CAとサーバ証明書の作成・apache-sslへの組み込み
2005-08-28-1 / カテゴリ: [linux][debian][Apache][SSL] / [permlink]

apache-ssl パッケージを apt でインストールすると、インストール時のみに、期限1ヶ月のオレオレ証明書を同時に作成しインストールされる。
ので、自己CAで署名したサーバ証明書を別途作成する。
コマンドは、@ITのApacheでSSLを使うにはの通りで問題なし

作業ディレクトリの作成
# mkdir /etc/ssl/servkey
# cd /etc/ssl/servkey
ま、管理しやすい位置でどこでもいいけど。

CAの秘密鍵の作成
# openssl genrsa -rand /var/log/syslog -out ca.key 1024

CAのCSRの作成
# openssl req -new -key ca.key -out ca.csr
国名や名前などを入力

CA証明書の発行
# openssl x509 -req -in ca.csr -signkey ca.key -days 730 -out ca.crt
-days がないと1ヶ月だったので、2年間と指定してみた。

で、
サーバ証明書の秘密鍵
# openssl genrsa -rand /var/log/syslog -out server.key 1024

サーバ証明書のCSRの作成
# openssl req -new -key server.key -out server.csr
CAと同様に国名などの入力。Common Name に「ブラウザからアクセスするときに使用するドメイン名」を入力すること。

シリアルナンバーのファイルを作成し
# echo 01 > ca.srl

証明書の発行
# openssl x509 -req -days 730 -CA ca.crt -CAkey ca.key -in server.csr -out server.crt

作成した証明書の内容は、以下のコマンドで確認可能
# openssl x509 -in server.crt -text

で、ブラウザ側(クライアントPC)には、(何らかの安全な方法で)ca.crt をコピーし、証明書をインポートorインストールし、「この証明書を信頼する」とかそんな設定を行う。

サーバ(apache-ssl)側は、/etc/apache-ssl/httpd.conf の以下の設定を行う。(パスは作業ディレクトリ)
SSLCACertificateFile /etc/ssl/servkey/ca.crt
SSLCertificateFile /etc/ssl/servkey/server.crt
SSLCertificateKeyFile /etc/ssl/servkey/server.key

関連: mod_ssl(src)[2005-08-09-1], mod-ssl(deb)[2005-03-25-1]
Referrer (Inside): [2008-02-22-1] [2005-08-28-2]

stoneで穴掘り(より)
2005-08-25-1 / カテゴリ: [debian][network][SSL] / [permlink]

http://wiki.spc.gr.jp/tunnel/?DigByStone (stoneで穴掘り)

うぁー、ガッコの友達に(随分前に)教えてもらって試しに
(A) PC(winXP)

(B) 社外アクセス用proxyサーバ(一部の社内サーバにもアクセス可能)

(C) 社内サーバ
つー環境で、(C) を外部のサーバに見立ててやってみたら、見事に (A)->(C) の ssh がアクセスできた…。
あ、(A) の PC のネットワークは外部には全く出れず(名前解決もできない)、http(80,8080), https(443) のみ、(B) を proxy に Internet にアクセスできる、という環境です。で、(A), (B), (C) 全て異なるネットワークにいます。

ちなみに、(C) は debian sarge で、
# aptitude install stone
で、必要なものは揃う。

(A) の win 用の stone は http://www.gcd.org/sengoku/stone/Welcome.ja.html より。
「stone version 2.2e for Win32 OpenSSL 版パッケージ」をダウンロードし、適当なディレクトリに展開し、コマンドプロンプトから実行。

まぁ、ネットワークが違うので、実際に外部に出れるかはわかんないけどね。



05/08/29 追記
出れた :p

Odd number of elements in anonymous hash at xxx line yyy.
2005-08-21-1 / カテゴリ: [debian][perl] / [permlink]

コード書いていたら、warning だけど、そんなメッセージが出た。英単語の vocabulary にはうといんで、とりあえず google につっこむと、Movable Type (Blog??) の導入時エラーで未解決の記事ばっかりヒット。ダメじゃん。
ってことで、
$ man perldiag
マニュアル perldiag は登録されていません
って、おい^^;

man perl はあるけど(巨大なPerlのマニュアルの目次みたいなモン)、ほかは全然インストールされてないっぽい。
http://www.debian.org/distrib/packages でみると、perl-doc パッケージに含まれるみたいだけど、なにやらすさまじい量のドキュメントがインストールされるっぽいのでパス^^;

なので、エラーメッセージの文意そのもの、、、というより "Odd" の意味を調べる。「奇数」

あぁ、ハッシュ内のリストの要素が奇数っていってるのね…。馬鹿だな>自分

該当コード
  $self->{testCase} = {
  		       0 => plainSent(),
		       1 => dataIncNull(),
		      };
作りかけだったので、plainSent サブルーチンは値を返していたけど、dataIncNull は何も return してなかったのね。

まぁ、後々不便なので、perl-doc はインストールしておきませう。

man perldiag(1) より該当部分を引用
       Odd number of elements in anonymous hash
           (W misc) You specified an odd number of elements to initialize a
	    hash, which is odd, because hashes come in key/value pairs.

えーと、ハッシュのリファレンスのときが↑のメッセージになって、通常のハッシュの場合のメッセージは "Odd number of elements in anonymous hash at xxx.pl line N." と出るみたいね。



2005/08/23 追記
奇数: odd number
偶数: even number

alternativesアプリの変更
2005-08-20-3 / カテゴリ: [linux][debian] / [permlink]

x-terminal-emulator や x-www-browser 等のコマンドは、/etc/alternatives 以下に symlink があり、実態は rxvt や Eterm だったり、mozilla-firefox や galeon だったりする。
で、X の[ブラウザ]ボタンなんかでアプリを起動すると、大抵はここから起動されたりする。(…とりあえず、xfce4 on debian では)
また、単に emacs を実行すると、emacs20 だったり emacs21 だったり xemacs だったりするのも、この辺の設定。

で、これを確認・変更するには

# update-alternatives --display x-terminal-emulator
x-terminal-emulator - status is manual.
 link currently points to /usr/bin/Eterm
/usr/bin/krxvt - priority 9
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/krxvt.1.gz
/usr/bin/crxvt - priority 8
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/crxvt.1.gz
/usr/bin/grxvt - priority 8
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/grxvt.1.gz
/usr/bin/Eterm - priority 10
 slave x-terminal-emulator.1.gz: /usr/share/man/man1/Eterm.1.gz
Current `best' version is /usr/bin/Eterm.
で、/usr/bin/Eterm になっている(2行目) 推奨は Eterm らしい(最後の行)
(つーか、ls -l /etc/alternatives/x-terminal-emulator でもいいけど)
また、Eterm 以外に設定できるターミナルエミュレータの候補として、krxvt, crxvt, grxvt が表示される。

候補リストを表示するだけなら
# update-alternatives --list x-terminal-emulator
/usr/bin/krxvt
/usr/bin/crxvt
/usr/bin/grxvt
/usr/bin/Eterm

設定(リンク)を変更するには
# update-alternatives --config x-terminal-emulator

There are 4 alternatives which provide `x-terminal-emulator'.

  Selection    Alternative
-----------------------------------------------
      1        /usr/bin/krxvt
      2        /usr/bin/crxvt
      3        /usr/bin/grxvt
*+    4        /usr/bin/Eterm

Press enter to keep the default[*], or type selection number:
となるので、krxvt に変更するには
Press enter to keep the default[*], or type selection number: 1
Using `/usr/bin/krxvt' to provide `x-terminal-emulator'.
と。

NTPを使ってマシンの時刻合わせ
2005-08-20-1 / カテゴリ: [linux][debian] / [permlink]

NTPサーバに問い合わせて、実行ホストの時刻を合わせる。
# aptitude install ntpdate
インストールと同時に、一旦時計あわせが実行される。

コマンドラインからの実行は
# ntpdate ntp1.jst.mfeed.ad.jp

# ntpdate -s ntp1.jst.mfeed.ad.jp
-s オプション付で、結果が syslog へ出力される。

debian的には、/etc/init.d/ntpdate にスクリプトが、/etc/default/ntpdate を見て実行できるみたいなので、/etc/default/ntpdate に NTP サーバを指定しておけばよいのかな。
NTPSERVERS="ntp1.jst.mfeed.ad.jp"
/usr/sbin/ntpdate はこのファイルを見るわけではないので注意。

あとは、/etc/cron.daily あたりに、/etc/init.d/ntpdate restart を実行するようにセットしておけばよいかな。

smb.conf の文字コード設定が有効なのは global のみ??
2005-08-10-2 / カテゴリ: [linux][debian][samba] / [permlink]

/dev/hdd1 に SJIS でネーミングされたファイルが大量にある。
/dev/hdb1 に EUC-JP として、全部コピーしたい。

文字コードを設定した mount は、ext2/ext3 では使えず、smbfs や NTFS 等だけみたいなので、
hdd1 を dos charset = CP932 / unix charset = CP932
hdb1 を dos charset = CP932 / unix charset = eucJP-ms
として samba 共有し、win から cp すればクリアできると思ったが…

[global]セクションに設定したコード設定は有効だけど、それ以外のセクション([share-1]とか)は、コードの設定が効かない…

こーゆーことをしたかったんだけどなぁ。
[share-b]
   path = /mnt/hdb1
   comment = hdb1
   browseable = yes
   writable = yes
   create mask = 0644
   directory mask = 0755
   dos charset = CP932
   unix charset = eucJP-ms
	 
[share-d]
   path = /mnt/hdd1
   comment = hdd1
   browseable = yes
   writable = yes
   create mask = 0644
   directory mask = 0755
   dos charset = CP932
   unix charset = CP932

rename スクリプト作るのが手っ取り早いのかな。

HDD増設
2005-08-10-1 / カテゴリ: [linux][debian] / [permlink]

先月末に / が吹っ飛び、バックアップ用に /dev/hdb として使ってたやつを / (/dev/hda) に持ってきたので、新しく /dev/hdb としてセット。つか、買ったのはやっぱ先月末だったんだけど、フォーマットしてなかった。

パーティションの作成
# fdisk /dev/hdb
:
Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-19457, default 19457):
Using default value 19457

Command (m for help): p

Disk /dev/hdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       19457   156288321   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
めんどっちぃので、1パーティションブッタ切りで :D

フォーマット
# mkfs -t ext3 /dev/hdb1
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19546112 inodes, 39072080 blocks
1953604 blocks (5.00%) reserved for the super user
First data block=0
1193 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables:
:
:

マウント
# mkdir /mnt/hdb1
# mount /dev/hdb1 /mnt/hdb1/
# ls /mnt/hdb1/
lost+found/

買ったのは Seagate の ST3160021A で、160GB/7200rpm
某での書込みを見る限りでは、音量は結構静かな感じだったけど、サーバ用ってことでずっと 5400rpm のディスクばっかり使ってた自分には、ちょっとうるさく感じた…

lm_sensors を使ってCPU温度の取得
2005-08-08-3 / カテゴリ: [linux][debian] / [permlink]

今更ドキュメントシリーズ

# aptitude install lm-sensors
:
The following NEW packages will be installed:
  i2c-2.4.27-2-386 libsensors3 lm-sensors lm-sensors-2.4.27-2-386
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
:
debconf は <Yes> 押下で終わり
ちなみに現状、OSインストール直後の kernel-image を使ってます。(not カスタムカーネル)
lm-sensors-2.4.27-2-386 が kernel-module になってるみたいで、modprobe なんかでロード可能になる。

# sensors-detect
:
......[Enter]連打で。
:
To make the sensors modules behave correctly, add these lines to
/etc/modules:

#----cut here----
# I2C adapter drivers
i2c-piix4
# I2C chip drivers
lm78
eeprom
#----cut here----

Do you want to add these lines to /etc/modules automatically? (yes/NO)

モジュールのロード(明示的にやんなくても良いのかな?)
# modprobe i2c-piix4
# modprobe lm78
# modprobe eeprom

で、
# sensors
lm79-i2c-0-2d
Adapter: SMBus PIIX4 adapter at 5000
VCore 1:   +2.03 V  (min =  +0.02 V, max =  +1.74 V)   ALARM
VCore 2:   +1.49 V  (min =  +0.98 V, max =  +1.39 V)   ALARM
+3.3V:     +3.20 V  (min =  +3.95 V, max =  +1.66 V)   ALARM
+5V:       +5.11 V  (min =  +2.96 V, max =  +2.87 V)   ALARM
+12V:     +11.78 V  (min =  +5.05 V, max =  +8.44 V)   ALARM
-12V:     -11.75 V  (min =  -6.33 V, max =  -0.45 V)   ALARM
-5V:       -5.03 V  (min =  -0.39 V, max =  -2.36 V)   ALARM
fan1:        0 RPM  (min = 25000 RPM, div = 2)          ALARM
fan2:        0 RPM  (min = 28125 RPM, div = 2)          ALARM
fan3:        0 RPM  (min = 6136 RPM, div = 2)          ALARM
temp:      +47.0 C  (high =   +30 C, hyst =  +116 C)   ALARM
vid:       +2.00 V

eeprom-i2c-0-50
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       256

eeprom-i2c-0-51
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       128

eeprom-i2c-0-52
Adapter: SMBus PIIX4 adapter at 5000
Memory type:            SDR SDRAM DIMM
Memory size (MB):       256
なんか、電圧とかの min/max が変…
つか、FAN回転数とれてないなぁ。

/etc/init.d/lm-sensors なんてある…
# /etc/init.d/lm-sensors start
Setting sensors limits: done.
# ps aux | grep lm
root     26135  0.0  0.0  1536  456 pts/16   R+   15:09   0:00 grep lm
daemon じゃないのね。
中身は
:
case "$1" in
  start)
        echo -n "Setting sensors limits:"
        /usr/bin/sensors -s 1> /dev/null 2> /dev/null
        /usr/bin/sensors 1> /dev/null 2> /dev/null
        echo " done."
        ;;
  stop)
        ;;
:
と、limits を設定するスクリプトみたい。

で、その後は
:
VCore 1:   +2.03 V  (min =  +1.90 V, max =  +2.10 V)
VCore 2:   +1.49 V  (min =  +1.90 V, max =  +2.10 V)   ALARM
+3.3V:     +3.20 V  (min =  +3.14 V, max =  +3.46 V)
+5V:       +5.11 V  (min =  +4.74 V, max =  +5.24 V)
+12V:     +11.78 V  (min = +11.36 V, max = +12.58 V)
-12V:     -11.75 V  (min = -12.59 V, max = -11.33 V)
-5V:       -5.01 V  (min =  -5.25 V, max =  -4.74 V)
fan1:        0 RPM  (min = 25000 RPM, div = 2)          ALARM
fan2:        0 RPM  (min = 28125 RPM, div = 2)          ALARM
fan3:        0 RPM  (min = 6136 RPM, div = 2)          ALARM
temp:      +47.0 C  (high =   +30 C, hyst =  +116 C)   ALARM
vid:       +2.00 V
:
温度と電圧についてはちゃんと取れるようになった(多分)
FANはどうなってんだろ…??

えーと、後は、rrdtool に食わせるようにすれば良いのか。現状、グラフにして楽しげなのは温度くらいかな。

SMTP over SSL(starttls)でエラー
2005-08-05-4 / カテゴリ: [linux][debian][squirrelmail] / [permlink]

Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL 	routines:SSL3_GET_RECORD:wrong version number in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57

Warning: fsockopen(): php_stream_sock_ssl_activate_with_method: SSL handshake/connection failed in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57

Warning: fsockopen(): failed to activate SSL mode 2 in /usr/share/squirrelmail/class/deliver/Deliver_SMTP.class.php on line 57
えー
サーバ証明が正常に行われないからかな?
SSL/TLSを用いたメールの送受信について

さすがにこれは手の打ちようがない(証明書の検証をしない設定があれば別か)ので、メール送信時は tls 不使用ってことにするか。

つか、squirrelmail 以外なら検証skipで送れるから、緊急用扱いだし、ま、いっか。

アカウント名の別名を作る
2005-08-05-3 / カテゴリ: [linux][debian][imap] / [permlink]

courier-imap の、ね。
# userdb foo@example.sakura.ne.jp set home=/home/zaki uid=1000 gid=1000
# userdbpw -hmac-md5 | userdb foo@example.sakura.ne.jp set imap-hmac-md5pw
# makeuserdb

これで、imap の認証と smtp の認証に個別のアカウントを設定できない squirrelmail に対応 ^^;

[追記]
OSアカウント 'zaki' の認証に、ユーザ名 'foo@example.sakura.ne.jp' で認証する、というお話。
(んで、~zaki/Maildir 以下のメールを閲覧する、と)
[/追記]
カテゴリ: debian / 1 2 3 4 次ページ

最終更新時間: 2013-05-02 16:12