2012/07/23

英辞郎の辞書をコマンドラインから参照してみる

英単語の意味を調べるのに man(1) を使ってしまう人に贈る1行 という記事を拝見して、 自分の FreeBSD マシンで英辞郎の辞書を参照している方法を記事にしてみる。
要は英辞郎の辞書を EPWING 型式に変換して ndt サーバ経由で ndtpc コマンドから検索しているだけで、 検索コマンド自体は 1 行だが多少準備が必要となる。

英辞郎、和英辞郎、略辞郎、音辞郎の辞書を変換する。
英辞郎の辞書を EPWING 型式に変換するのは ports を利用すれば 何の問題もなく可能だ (若干ディスク容量が必要だが、 今となっては問題とならない容量だと思う)。
作業は英辞郎の CD-ROM をマウントした状態で実施すれば良いのだが、 CD-ROM は I/O が遅いのでローカルのファイルシステムに 辞書ファイルをコピーして実行しても良い。
ローカルにファイルをコピーした場合は DICT_PATH で 英辞郎の辞書ファイルのパスを指定すれば良い。
# cd /usr/ports/japanese/eijiro-fpw
# make DICT_PATH=辞書ファイルのパス install clean
# cd /usr/ports/japanese/waeijiro-fpw
# make DICT_PATH=辞書ファイルのパス install clean
# cd /usr/ports/japanese/ryakujiro-fpw
# make DICT_PATH=辞書ファイルのパス install clean
# cd /usr/ports/japanese/otojiro-fpw
# make DICT_PATH=辞書ファイルのパス install clean
            
この変換作業は結構時間が必要である。

ndtpd をインストールする
ndtpd は EB や EPWING などの辞書型式に対応している辞書サーバで、 FreeBSD では ebnetd という ports から導入可能である。
ports から導入すると ndtpd 以外に ebnetd、ebhttpd が インストールされるが今回は ndtpd のみ利用する。
# cd /usr/ports/japanese/ebnetd
# make install clean
# vi /usr/local/etc/ebnetd.conf
# cat << EOF >> /etc/rc.conf
> ndtpd_enable="YES"
> EOF
# chown nobody:nobody /var/run/ebnetd
# /usr/local/etc/rc.d/ebnetd.sh start
            
ebnetd.conf はコメントを参照にすれば簡単に設定できる。 今回はローカルサーバの自分しか利用しないので、 接続ホストや接続数を制限した。
### Port number `ndtpd' binds.
ndtp-port       ndtp

### Owner of the server process.
user            nobody

### Group of the server process.
group           nobody

### How many clients can be connected to the server at the same time.
max-clients     1

### Which hosts can or cannot connect to the server.
hosts           127.0.0.1

### Timeout seconds until the server disconnects an idle connection.
timeout         900

### Path to a working directory.
work-path       /var/run/ebnetd

### How many hit entries the server tries to find at a search.
max-hits        50

### The maximum size of text the server may send as a response to a client.
max-text-size   32768

### Syslog facility
syslog-facility local0

###
### Book entry
###
begin book
    ### Name of the book.
    name        eijiro

    ### Title of the book.
    title       eijiro

    ### Path to a top directory of the book.
    path        /usr/local/share/dict/eijiro-fpw

    ### How many clients can access the book at the same time.
    max-clients 1

    ### Which hosts can or cannot access to the book.
    hosts       127.0.0.1
end

begin book
    #
    # 以下 waeijiro の設定
    #
end

begin book
    # 
    # 以下 ryakujiro の設定
    #
end

begin book
    #
    # 以下 otojiro の設定
    #
end
            

作成された辞書を ebzip で圧縮する
EB ライブラリで使用されている圧縮方式で、 辞書のためのディスク容量を多少なりとも削減するために辞書を圧縮する。
# cd /usr/local/share/dict/eijiro-fpw
# ebzip --level 5
# cd /usr/local/share/dict/waeijiro-fpw
# ebzip --level 5
# cd /usr/local/share/dict/ryakujiro-fpw
# ebzip --level 5
# cd /usr/local/share/dict/otojiro-fpw
# ebzip --level 5
            

ndtpc をインストールする
ndtpc は perl で書かれた NDTP クライアントで、 こちら で公開されているので利用する。
今の所 FreeBSD の ports にはなっていない様なので、 ソースを取得してインストールする。
$ fetch http://www.tanu.org/~sakane/download/ndtpc-20050323a.tgz
$ tar -C /usr/local/src -zxvf ndtpc-20050323a.tgz
$ ./configure
# make install
            

これで以下のコマンドラインで辞書検索が可能になる。

$ ndtpc hello
DICT: 英辞郎
<4c33:560>hello
hello
【発音】helo'u 【変化】《複》hellos
[間投] こんにちは, あのう, やあ
<4c33:5f0>hello
Hello
[人名] エロ
DICT: 和英辞郎
DICT: 略語辞典
DICT: 音辞郎
    
ちなみに jvimkeywordprgndtpc を登録すると 単語の上で 'K' をタイプする事で辞書を検索できるので便利。

2010/12/10

HDD の換装

職場でメインに使っている FreeBSD マシンの HDD が手狭になったので大容量の HDD に換装した。
OS の再インストールや環境の再構築などは面倒なので、 boot レコードを含めてそのまま全てを移行する方法で行った。

シャットダウンして移行先の HDD を接続したら通常通り起動する。
移行先の HDD を FreeBSD 用にフォーマットしてスライスを作成する作業は fdisk (8) や bsdlabel (8) を利用しても良いのだが、 容量計算などが色々と面倒なので素直に sysinstal (8) を利用する。

sysinstall を起動したら ConfigureFdisk でパーティションを作成し、 続く画面で boot loader をインストールする。

次に ConfigureLabel でスライスを作成するのだが、 各スライスは元の HDD の構成以上のサイズであれば任意のサイズで問題ない。 swap 領域もここで作成する。
ディスクの準備が整ったら sysinstall (8) を終了する。 このとき作成した swap 領域が使用開始されているので、 swapoff (8) を実行して swap 領域の使用を終了させておく。

ディスクの準備が完了したらデータの移行を行う。
ここではシステム標準の dump (8)、restore (8) を利用して、 使用中の HDD の内容を全て移行する。
元の HDD のパーティション毎にマウントポイント以下のデータを 以下の容量で移行すれば良い。

# mount /dev/ad4s1a /mnt
# dump -Laf - / | (cd /mnt; restore rf - )
# umount /mnt
	
全てのスライスでデータの移行を完了したら、 システムをシャットダウンして新しい HDD からの起動を確認する。

2010/04/20

FreeBSD 上で動作する md5sum コマンド

Linux との互換性で割と問題になるのが、 date (1) や ls (1) コマンドの引数の相違や、 FreeBSD の md5 (1) コマンドと Linux の md5sum (1) コマンドとの動作の相違など。
特に md5 (1) コマンドは出力形式に互換性がないので、 FreeBSD 上で取得したハッシュ値を Linux 上で簡単に検証できない。

通常の対話的用途での使用はともかく、 スクリプト中で利用する場合などでは問題が発生してしまう。
これらは Ports から sysutils/coreutils を導入すると、 /usr/local/bin/gコマンド という名称 (例えば /usr/local/bin/gmd5sum)でインストールされるので、 ファイル名を調整したりシンボリックリンクを利用するなどして ある程度は問題が吸収できるだろう。

2009/11/27

FreeBSD 8.0-RELEASE

FreeBSD Release Engineering Team は FreeBSD 8.0-RELEASE を公開しました。

主な変更は以下の通り。

  • Xen Dom-U、VirtualBox のゲスト/ホスト環境対応。
  • 階層型 jail のサポート
  • NFSv3 GSSAPI のサポート
  • NFSv4 クライアントの実験的サポート
  • IEEE 802.11s D3.03 無線メッシュネットワークと 仮想アクセスポイントのサポート
  • ZFS はもはや実験的ステータスではなくなった
  • USB 関係を全て書きかえ
  • SMP スケーラビリティの改良
  • ネットワークリンク層の改訂
  • MIPS アーキテクチャの実験的サポート

詳細は リリースノート を参照

2009/04/28

ATAデバイスの電源

HDD の電源を制御できるのが ports/sysutils/ataidle

# ataidle -s /dev/デバイス          # HDD をスタンバイモードに移行する
drive set to standby immediately
# ataidle -i /dev/デバイス          # HDD をアイドルモードに移行する
drive set to idle immediately

バックアップ用のディスクなど普段使用していない HDD の制御に向いているかも。

2009/04/24

Intel® Core™2 Duo E8500

職場でメイン環境として使っている PC の CPU を変更した。
Intel® Core™2 Duo の E8500 という CPU で、 動作クロックは 3.16GHz、L2 キャッシュ 6MB という代物だ。

丁度セキュリティアップデートが出た所だったので、 性能測定がてら make world してみた。

#  cd /usr/src
#  time make -j6 buildworld
 :
 :
real    10m23.912s
user    15m4.948s
sys     2m38.777s
#  time make kernel
 :
 :
real    5m18.705s
user    4m27.818s
sys     0m30.555s

ちょ、早っ

2009/04/08

HP ProLiant ML110 G5 で FreeBSD 7.0-RELEASE を稼働させる

PCクラスの筐体でサーバとして稼働できる Hewlett-Packard 社の ProLiant ML110 G5 に FreeBSD 7.0-RELEASE をインストールしてみた。

ML110 G5 はマザーボードから IDE やパラレルポートといった 旧いインタフェイスが省略されている 所謂『レガシーフリー』なサーバなので、 当然光学ドライブも SATA 接続となる。
FreeBSD 7.0 では(一部の) SATA 接続光学ドライブとは相性が悪いので、 起動時のメニューで boot prompt を表示し、 "hw.ata.atapi_dma='0'" を指定すると、 スムーズにインストールできる様になる。 インストールした後は /boot/loader.conf に 以下の記述を追加しておくと自動で設定されて便利だ。

hw.ata.atapi_dma="0"

ML110 のマザーボードに搭載されている NIC は Broadcom 社の GbE だが、 型番が "NetXtreme BCM5722 Gigabit Ethernet PCIe" となっていて 標準のカーネルでは利用できないので、 インストールの際は CD からのインストールや USB 接続の NIC などを利用してインストールを済ませる。
インストール完了後、pciconf (8) を実行してみると チップセット ID が 0x165a となっているのが確認できた。
# pciconf -lv
 :
 :
bge0@pci0:14:0:0:   class=0x020000 card=0x7051103c chip=0x165a14e4 rev=0x00 hdr=0x00
vendor     = 'Broadcom Corporation'
device     = 'NetXtreme BCM5722 Gigabit Ethernet PCIe'
class      = network
subclass   = ethernet

そこで以下のパッチを適用してカーネルの再構築を行ってみると 無事にギガビットイーサが利用できるようになる。
diff -cr /usr/src/sys.orig /usr/src/sys
*** /usr/src/sys.orig/dev/bge/if_bge.c	2009-04-03 12:05:39.000000000 +0900
--- /usr/src.sys/dev/bge/if_bge.c	2009-04-02 12:51:46.000000000 +0900
***************
*** 169,174 ****
--- 169,175 ----
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5715S },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5720 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5721 },
+ 	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5722 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5750 },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5750M },
  	{ BCOM_VENDORID,	BCOM_DEVICEID_BCM5751 },
diff -cr bge.orig/if_bgereg.h bge/if_bgereg.h
*** /usr/src/sys.orig/dev/bge/if_bgereg.h	2009-04-03 12:05:39.000000000 +0900
--- /usr/src/sys/dev/bge/if_bgereg.h	2009-04-02 12:51:13.000000000 +0900
***************
*** 2011,2016 ****
--- 2011,2017 ----
  #define	BCOM_DEVICEID_BCM5715S		0x1679
  #define	BCOM_DEVICEID_BCM5720		0x1658
  #define	BCOM_DEVICEID_BCM5721		0x1659
+ #define	BCOM_DEVICEID_BCM5722		0x165A
  #define	BCOM_DEVICEID_BCM5750		0x1676
  #define	BCOM_DEVICEID_BCM5750M		0x167C
  #define	BCOM_DEVICEID_BCM5751		0x1677

ハードウェア構成にもよるがデュアルコアの Xeon は早くてなかなか快適だ。

2009/03/15

FreeBSD で BlueTooth マウスとキーボードを同時使用する

Logicool の V470 BlueTooth マウスに引き続き、 Apple Wireless Keyboard も FreeBSD マシンに接続してみる。
キーボードは元々認証する設定だったので、 /etc/bluetooth/hcsecd.confファイルのキーボードの設定部分で、 PIN を利用する設定とし hcsecd (8) コマンドを再起動する。

device {
    bdaddr  XX:XX:XX:XX:XX:XX;
    name    "任意の名称";
    key     nokey;
    pin     "PIN";
}
次にキーボードの場合もマウス同様 bthidcontrol (8) コマンドの query オプションを利用してハードウェア情報を取得し、 /etc/bluetooth/bthidd.conf ファイルに出力した後で、 bthidd (8) コマンドを再起動すればキーボードは利用可能になる。
# bthidcontrol -a 名称 query > /etc/bluetooth/bthidd.conf

しかし、キーボード使える様になると なぜだかマウスが利用できなくなった。
bthidcontrol (8) コマンドで query しても Permission denied(13) と表示されてしまう。
ネットで検索してもあまり有効な情報は得られなかったが、 試行錯誤の結果、キーボードが接続された後で BlueTooth の認証を disable に設定するとマウスも接続できた。

# hccontrol -n ubt0hci write_authentication_enable 0

はたしてこの解決が正しいのだろうか?

FreeBSD 上での BlueTooth 利用はまだまだ情報が少ないので、 快適に利用するのはなかなか大変である。

2009/01/19

FreeBSD で BlueTooth マウスを利用する

最近は BlueTooth を内蔵しているハードウェア(特にラップトップ)が増えたが、 勿論 FreeBSD からも BlueTooth マウスは利用可能である。
特にラップトップの場合少ない USB ポートを占有しないので、 BlueTooth マウスは非常に嬉しいハードウェアだといえる。
プラネックスから発売されている USB 接続タイプの Bluetooth ドングル BT-MicroEDR2X と、日本では発売されていないが Logicool の V470 という BlueTooth マウスを入手したので FreeBSD でも利用してみる。

BlueTooth マウスを利用するためにはカーネルモジュールをロードする必要がある。 シェルプロンプトから kldload (8) を実行してロードしてもよいが、 /boot/loader.conf に以下の記述をすることで 起動時に自動的にカーネルモジュールをロードする様になる。

netgrph_load="YES"
ng_ubt_load="YES"
vkbd_load="YES"

Logicool の V470 の場合は底面にデバイスアドレスが明記してあるので、 BlueTooth 機器との接続を管理している hcsecd (8) コマンドの 設定ファイル /etc/bluetooth/hcsecd.conf に登録しておく。

device {
	bdaddr  XX:XX:XX:XX:XX:XX;
	name    "任意の名称";
	key     nokey;
	pin     nopin;
}

デバイスアドレスが不明な場合は hccontrol (8) コマンドを実行して 情報を取得する。
# hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
        BD_ADDR: XX:XX:XX:XX:XX:XX
        Page Scan Rep. Mode: 0x1
        Page Scan Period Mode: 0x2
        Page Scan Mode: 00
        Class: 38:01:0c
        Clock offset: 0x5f95
Inquiry complete. Status: No error [00]

BlueTooth マウスのデバイスアドレスを /etc/bluetooth/hosts に登録する。
XX:XX:XX:XX:XX:XX	任意の名称

bthidcontrol (8) コマンドで BlueTooth マウスの情報を取得し 定義ファイルに出力した上で、bthidd (8) コマンドを実行すると BlueTooth マウスが利用可能となる。

# bthidcontrol -a 名称 query > /etc/bluetooth/bthidd.conf
# bthidd -c /etc/bluetooth/bthidd.conf

2009/01/05

FreeBSD 7.1-RELEASE

FreeBSD Release Engineering Team は FreeBSD 7.1-RELEASE を公開しました。

主な変更は以下の通り。

  • i386/amd64 の標準スケジューラが ULE スケジューラに変更された
  • OpenSolaris から DTrace の移植
  • NFS Lock Manager (NLM) Client のサポート
  • USB デバイスや GPTへの対応といった boot loader の改良
  • cpuset(2) システムコール、cpuset(1) コマンドの追加
  • KDE 3.5.10、GNOME 2.22.3 の採用
  • DVD インストールイメージの配布開始

詳細は リリースノート を参照


Copyright © Mitzyuki IMAIZUMI 2008,2009. All rights reserved.