portupgrade するときに ProFTPD にパッチを当てる

  FreeBSD の ProFTPD が 1.3.1_2 にアップデートされていたので、portupgrade でアップデートするためのメモ。

  ProFTPD は 1.2.10 あたりから NLST のサポートをやめました。
  そのため、FFFTP ではデフォルトの設定ではファイルの一覧が取得できなくなりました。

  そこで、ProFTPD NLST パッチ を当てて、portupgrade します。

- ProFTPD NLST パッチ
  http://www.hayasoft.com/haya/linux/proftpd_nlst_patch.html

# cd /usr/ports/distfiles
# wget http://www.hayasoft.com/haya/linux/proftpd-nlst-patch/proftpd-1.3.1-nlst-f ...
# vi /usr/ports/ftp/proftpd/Makefile.local

PATCHFILES += proftpd-1.3.1-nlst-ffftp.patch
PATCH_DIST_STRIP = -p1
NO_CHECKSUM = yes

# portupgrade proftpd

  または、すでにアップデートした後ならば

# portupgrade -rf proftpd

- ref.: FreeBSD の qmail ports にエレガントにパッチ適用
  http://www.pochi.cc/~sasaki/chalow/2005-06-03-2.html

dig の出力に色をつける dig-color

  dig の出力に色をつける dig-color というのを作ってみました.
  リソースレコードタイプは A/NS/CNAME/SOA/MX のみにしか対応していませんので,そのほかのタイプが必要であれば追加してください.

#!/usr/bin/env ruby

colors = {
    "section" => "02;01",
    "comment" => "37",
    "normal"  => "00",
    "A"       => "32",
    "NS"      => "34",
    "CNAME"   => "36",
    "SOA"     => "33",
    "MX"      => "31",
}

IO.popen("dig " + ARGV.join(" ")) { |io|
    io.each_line { |line|
        color = colors["normal"]
        if line =~ /^;;.+SECTION:$/
            color = colors["section"]
        elsif line =~ /^;/
            color = colors["comment"]
        elsif line =~ /^(.+\s)(SOA|NS|A|MX|CNAME)(\s.+)$/
            color = colors[$2]
            # レコードタイプのみに色を付ける場合
            #line = sprintf "%s\e[%sm%s\e[00m%s\n", $1, colors[$2] ,$2, $3
        end
        printf "\e[%sm%s\e[00m", color, line
    }
}


- 出力例 (この色が見やすいかどうかは……)
  


- 追記
  Perl で書き換えてくれた方がいました.

- dig の出力に色をつける dig-color(perl版) | cafe chantant blog
  http://www.cafechantant.com/blog/2007/07/04/dig-%e3%81%ae%e5%87%ba%e5%8a%9 ...

プロセスツリーを可視化する pstree

  http://d.hatena.ne.jp/lurker/20060927/1159329290

  これはいいかも.
  
  オプションが Linux にインストールされているのとは少し違うみたいです.
  PID はオプションをつけなくても表示されています.FreeBSD の ports でインストールされるのも同じもの.

- 出力例

-+= 00000 root sched
 \-+- 00001 root /sbin/init
   |--- 00114 daemon /usr/lib/crypto/kcfd
   |-+- 00486 root /usr/local/apache2/bin/httpd -k start
   | |--- 00646 httpd /usr/local/apache2/bin/httpd -k start
   | |--- 00647 httpd /usr/local/apache2/bin/httpd -k start
   | |--- 00564 httpd /usr/local/apache2/bin/httpd -k start
   | |--- 00563 httpd /usr/local/apache2/bin/httpd -k start
   | |--- 00565 httpd /usr/local/apache2/bin/httpd -k start
   | |--- 00566 httpd /usr/local/apache2/bin/httpd -k start
   | \--- 00567 httpd /usr/local/apache2/bin/httpd -k start
   |-+- 00422 root /usr/local/apache/bin/httpd
   | |--- 00446 httpd /usr/local/apache/bin/httpd
   | |--- 00444 httpd /usr/local/apache/bin/httpd
   | |--- 00445 httpd /usr/local/apache/bin/httpd
   | |--- 00447 httpd /usr/local/apache/bin/httpd
   | \--- 00448 httpd /usr/local/apache/bin/httpd
   |-+- 00328 root /usr/lib/ssh/sshd
   | \-+- 00650 root /usr/lib/ssh/sshd
   |   \-+- 00653 sunaoka /usr/lib/ssh/sshd
   |     \-+- 00655 sunaoka -zsh
   |       |--- 00826 sunaoka vim /home/sunaoka/ChangeLog
   |       \-+- 00827 sunaoka pstree -U
   |         \-+- 00828 sunaoka sh -c ps -ef
   |           \--- 00829 sunaoka ps -ef
   |--- 00333 smmsp /usr/lib/sendmail -Ac -q15m
   |-+- 00492 root /bin/sh /usr/local/mysql/3.23/bin/safe_mysqld --log --datadi
   | \--- 00556 mysqld /usr/local/mysql/3.23/libexec/mysqld --basedir=/usr/loca
   \-+- 00510 root /bin/sh /usr/local/mysql/4.1/bin/mysqld_safe --log --datadir
     \--- 00555 mysqld /usr/local/mysql/4.1/libexec/mysqld --basedir=/usr/local

- インストール

$ wget ftp://ftp.thp.uni-duisburg.de/pub/source/pstree-2.27.tar.gz
$ mkdir pstree-2.27
$ tar -zxvf pstree-2.27.tar.gz -C pstree-2.27
$ cd pstree-2.27
$ gcc -O2 -o pstree pstree.c
# cp -p pstree /usr/local/bin

syslog のプライオリティについて

  syslog のプライオリティは以下の図のようになっている.

  Syslog priority

  つまり,あるプライオリティを指定するとそれ以上のプライオリティがすべて記録される.
  例えば,err を指定すると,err,crit,alert,emerg が記録されることになる.

  ちなみに,Solaris にはすべてのプライオリティを指す `*' はないので注意.
  mail.* などと指定しても「unknown priority name "*"」と怒られます.

NetBSD/FreeBSD i386 シリアルコンソール化

  http://www.gentei.org/~yuuji/rec/pc/memo/2005/12/03/

- シリアルコンソールの設定
  http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/serialconsole-setup. ...

  日本に帰ったらやらなければ.

Apache 2.2.0 on FreeBSD 5.4 で Failed to enable the 'httpready' Accept Filter

  FreeBSD なサーバに Apache 2.2.0 を入れてみたら

# /usr/local/apache2/bin/apachectl start
[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

  なんて,警告が出る.

  調べてみたら,accf_http という FreeBSD のカーネルモジュールが無いということらしい.
  このモジュールをロードするには

# kldload accf_http.ko

  でいいらしい.確かに警告は出なくなった.

  これを,本体に組み込んでしまうにはどうすればいいのだろうか.

ProFTPD で NLST が使えるようにするパッチ

  http://www.hayasoft.com/haya/linux/proftpd_nlst_patch.html

  ProFTPD では NLST がいつのころからか使えなくなったらしい.
  FFFTP を使っているとファイル一覧の取得が出来ないので困る.
  上記パッチを当てれば OK.

  FreeBSD の ports 場合は,上記パッチを

/usr/ports/ftp/proftpd/files/patch-module::mod_ls.c

  なんて風において,

# make install

  で OK.

FreeBSD ビギナーズバイブル

  4839918945
  amazon.co.jp 詳細ページへ
  後藤 大地 (著)
  毎日コミュニケーションズ
  ISBN: 4839918945
  2005/09
  4,738 円

FreeBSD なあなたのための zsh (The Z Shell) 設定

  http://devel.aquahill.net/zsh/

  まあ,tcsh からまだ抜け出せないのではあるが.

ファイル名の文字コードを変換する convmv

  http://j3e.de/linux/convmv/man/

  SJIS のファイル名を EUC-JP に変更するには

convmv -r -f sjis -t euc-jp * --notest

  -r で再帰的に処理を行う.