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: 音辞郎ちなみに jvim の keywordprg に ndtpc を登録すると 単語の上で 'K' をタイプする事で辞書を検索できるので便利。
2010/12/10
HDD の換装
職場でメインに使っている FreeBSD マシンの
HDD が手狭になったので大容量の HDD に換装した。
OS の再インストールや環境の再構築などは面倒なので、
boot レコードを含めてそのまま全てを移行する方法で行った。
シャットダウンして移行先の HDD を接続したら通常通り起動する。
移行先の HDD を FreeBSD 用にフォーマットしてスライスを作成する作業は
fdisk (8) や bsdlabel (8) を利用しても良いのだが、
容量計算などが色々と面倒なので素直に sysinstal (8) を利用する。
sysinstall を起動したら Configure → Fdisk でパーティションを作成し、 続く画面で boot loader をインストールする。
次に Configure → Label でスライスを作成するのだが、
各スライスは元の 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
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 インストールイメージの配布開始
詳細は リリースノート を参照