Monthly Archives: 11月 2007

ports/package周りの定期作業をperiodicで。

Pocket

FreeBSDを長く運用していると、/usr/ports/distfiles配下に、portsで使うソースファイルがだんだんと溜まっていき、ディスク容量を圧迫する。

なので俺はportupgradeをインストールするとついてくるportscleanを、一週間に一度実行している。

具体的には、portscleanにC, D, Pオプションを与えて実行する。これらのオプションで、それぞれ下記3つの掃除をする。

  • Cオプション:portsのインストールの際に、make cleanし忘れてたとかとかで残ってしまったworkディレクトリ
  • Dオプション:バージョンアップで不要となったportsのソースファイル
  • Pオプション:バージョンアップで不要となったpackage

で、これを定期的に実行させるわけだが、FreeBSDでは特定のディレクトリにスクリプトを置いておけば、決められた間隔ごとに実行してくれる仕組みがある。

それがperiodicで、マニュアルはここにあるが、簡単に言うと、periodicはシステムcronから呼び出されて、あるディレクトリ内にあるスクリプトを実行するシェルスクリプトである。

マニュアルにも書いてあるが、/etc/crontabにはこのような記載がある。

# do daily/weekly/monthly maintenance
0      2       *       *       *       root    periodic daily
0      3       *       *       6       root    periodic weekly
0      5       1       *       *       root    periodic monthly

/etc/periodic、/usr/local/etc/periodicの配下には、daily, weekly, monthlyというディレクトリがあり、periodicは日ごと、週ごと、月ごとにcronから呼び出され、それぞれdaily、weekly、monthly配下のスクリプトを実行する、という仕組み。

というわけで、/usr/local/etc/weekly/998.portscleanなどとして、下記のようなファイルを置いてみた。chmod 755しておくのを忘れずに。

#!/bin/sh
if [ -x /usr/local/sbin/portsclean ]; then
/usr/local/sbin/portsclean -CDP && rc=0 || rc=1
else
rc=1
fi
exit $rc

正常終了時に0を、それ以外は1を返すようにしているのは、マニュアルを見ればわかるが、各スクリプトの返り値によって動作が変わるから。

なお、通常であれば実行結果はrootへmailされるが、/etc/periodic.confとして下記の内容を記載しておけば、/var/log配下にログを書き出してくれる。

これもマニュアルに記載あり。

daily_output=/var/log/daily.log

weekly_output=/var/log/weekly.log

monthly_output=/var/log/monthly.log

俺はこっちにしておいた。

さておき、これで一週間に一度portscleanが実行されるようになる。

注意すべきは、portsのmakeと上記の定期実行がかぶると、portsのmakeをやり直さなければならない点。

先述のcrontabをみればわかるが、毎週土曜日の午前3時に実行されるので、ここをまたいでportsのmakeをするときは、スクリプトの実行属性を落としておくなどの処置が必要。

というか、そもそもスクリプトでそのあたりを判断すればいいのだが、俺にはそんなスクリプトは書けないので。

No tags for this post.

FreeBSDでのGNOMEインストール

Pocket

「FreeBSDはデスクトップ環境を構築するのは大変」

そう思っていた時期が、俺にもありました・・・。

* 2008/11追記: 過疎blogにも関わらずこの記事に限っては★をいただいているので、出来るだけ内容をアップデートします。さしあたり2008/11/8に誤記、手順誤り、補足などを追記・修正しています。

さらにアップデート

メタパッケージをインストールすれば問題ないはずだが、俺の場合、そこに到達するまでに、特にXを設定するあたりで何度も討ち死にしたので諦めていた。

で、OSインストール一発で何から何までやってくれるUbuntuを使っていたのだが、ふと思い立ってFreeBSDでGNOMEのインストールに再チャレンジしてみたら意外に上手くいって驚いた。

それはともかくとして、やっぱりflashを動作させるのに一工夫必要とか、GNOMEの細かな設定を自分でやらないといけないとか、Ubuntuだったら気にしなくていいような事がやっぱりあって、デスクトップ用途で気軽に使うのはやっぱりUbuntuのほうがいいなと思った。

FreeBSDにもPC-BSDとかあるが、デスクトップ環境がKDEだし・・・。

で、インストールした結果思ったのは、気のせいなのか何なのか、同じGNOMEでもUbuntuより心持ち動作が軽いような気がする。

また、CPU使用率もUbuntuより少なめ。(とはいっても、LinuxとFreeBSDではこの辺の算出方法が違うといった話を読んだことがあるので、一概に見た目のCPU使用率で判断してはいけないかも。)

以下、メモ。

ほぼFreeBSDハンドブックの手順どおり。

日本語版もあるが、ちと情報が古いので、英語版を見るのがベター。

FreeBSD-7.0-BETA2にXとGNOME2のインストール。

xorgからgnomeをportsでインストールした日には何日かかるかわからないので、全部パッケージで入れることにする。

# PACKAGEROOT=”ftp://ftp2.jp.freebsd.org“;export PACKAGEROOT

# pkg_add -r xorg

とすれば、xorgに関係するパッケージを全部入れてくれる(Bシェル系の場合)。

普通にやるとftp.freebsd.orgあたりに取りに行ってしまい時間がかかるので、環境変数のPACKAGEROOTで日本のftpを指定しておく。

ただし、普段からportsディレクトリを更新していると、狙いのパッケージがまだ準備されていない場合も(けっこう)あるので注意。

なので、GNOME、Xをインストールするのは、FreeBSDリリースバージョンをインストールするときに一緒にやってしまったほうがよい。

まあ、泣きながらportsでインストールするのもありだし、メジャーバージョンリリース時のインストールCDあたりからportsディレクトリをコピーするとか、いろいろ手はあるけど…。

Xの設定

終わったらxorg.confの設定。

テキストベースの設定ツールxorgcnfigは、立て板に水状態で山盛りの質問してくるので回避。

root権限でXorg -configureとして実行すると、/rootにxorg.conf.newが出来る。

なお、Xの設定では、入力をまったく受け付けない状態になることがよくあるが、そういった場合には、あわてずCtrl+Alt+Backspaceを押すこと。

ハンドブックを参照しつつ修正してみた。

Section “InputDevice”のキーボードに青字部分を追加

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
	#日本語配列
Option          "XkbModel"      "jp106"
Option          "XkbLayout"     "jp"
#CTRLとCAPSLOCK入れ替え
Option          "XkbOptions"    "ctrl:swapcaps"
EndSection

Section “Monitor”に追加

option          "DPMS"

DPMSはディスプレイ省電力。

そしたら/etc/X11/xorg.confとしてコピー。

startxでtwmの起動まで確認したら、次はgnome2。

GNOMEのインストール

# pkg_add -r gnome2

としてインストール開始。

・・・してから気がついたんだが、gnome2-liteあたりにしておけばよかった。

再びパッケージが山盛りインストールされる。

いったんログインしてからstartxとするやり方だと、.xinitrcの設定などが面倒なので、システム起動時にgdmも起動させる。

/etc/rc.confに下記のとおり追加。

gdm_enable=”YES”

gnome_enable=”YES”

#

dbus_enable=”YES”

polkitd_enable=”YES”

hald_enable=”YES”

system_tools_backends_enable=”YES”

gnome_enable=”YES”とすればgnome関連デーモンの起動もしてくれる。

うまくいかない場合には3行め以降で個別に追加。(2008/11に再インストールしたときは問題なし。)

インプットメソッドのインストール

pkg_add -r ja-scim-anthyとしてinput methodをインストール。

2008/11追記: 現時点、つまりgnome2.20ではこういったinput methodやlocale設定に問題があるので、gdmのプルダウンメニューでJapaneseを選んで有効にする。あるいは、~/.profileに’export GDM_LANG=ja_JP.UTF-8’という一行を加える。(http://www.freebsd.org/gnome/docs/faq2.html#q29

終了。

FreeBSDのサウンドカードの設定

gdmが立ち上がりGNOMEも問題なく起動したが、音がならない。

これもFreeBSDハンドブックを参照して解決。

大まかな流れ。

  1. サウンド向けメタドライバをロードして、メジャーなサウンドドライバを片っ端から読み込む。
  2. 勝手に適当なドライバを判断してくれるのでそれを確認。
  3. 音を鳴らしてみて確認。OKなら、
  4. 見つけたドライバを起動時に読み込むよう設定。

具体的な手順は以下のとおり。

# kldload snd_driver

# kldstat

(大量のメッセージ)

# cat /dev/sndstat

FreeBSD Audio Driver (newpcm: 32bit 2007061600/i386)

Installed devices:

pcm0: <Intel ICH3 (82801CA)> at io 0x1c00, 0x18c0 irq 11 bufsz 16384 kld snd_ich [MPSAFE] (1p:1v/1r:1v channels duplex default)

ということで、snd_ichが狙いのモジュールと分かったので(上記出力のボールドは俺)、/boot/loader.confに一行追加。

snd_ich_load=”YES”

この時点でドライバはインストールされているが、GNOMEに認識させるために、一度再起動したほうがいいかも。

アプリケーションのインストール

俺の入れたソフト。

画像閲覧

 comix

 gThumb

音楽

 Audacious

 Rhythmbox

ID3タグエディタ

 EasyTag

動画閲覧

 MPlayer

 VLC

フォント

 ja-vlgothic

No tags for this post.

重耳

Pocket

宮城谷昌光の重耳を読んだ。

中国は春秋時代の晋の王様の話。

跡目争いの結果、19年に渡って諸国を放浪したのち、王座に返り咲きました、という話。

だが。

一番面白かったのは、主人公重耳の祖父、武公が権謀術数で晋を統一するところ。

もともとは武力に物を言わせて暴れ回っていた彼が、急に方針転換をして搦め手であれやこれやと攻めるのがよかった。

一方で、メインといえる主人公の放浪は、一点をのぞき淡々と話が進んでつまらない。

その一点とは、重耳に夢を託し、朝日の中彼の後を追う部下のシーン。グッド。

重耳(下) (講談社文庫)

その他に面白かったのは、各国で重職にある人間がいろんな判断を下すところ。

読んでる立場からしたら「あー。やっちゃったー」と思う場合でも、当事者となったらそうもいかないんだろうなとか、こんな微妙な判断俺だったら出来んのかとか、そう考えながら読むのがよい。

No tags for this post.

ジュール・ヴェルヌ: 十五少年漂流記

Pocket

ヴェルヌの十五少年漂流記を読んだ。

小さい頃、ちびっ子向けに訳されたものは読んだことはあるけど、きちんとしたものは始めて。

で、とても面白かった。

冒頭はいきなり大嵐から始まり、稲光で浮かび上がる船影。このあたり映画的。

で、そのマストも折れてしまったヨレヨレの船を必死に操るのはなぜか子供だけ。

そんな導入から、ひょんなことから(といってもシャレにならないが)無人島に漂着した少年十五人が、どのようにして生活してゆくか。十五人もいれば当然発生するグループ内の軋轢や、後半にかけて大きな事件が発生して、それらが読み進ませる燃料になって速攻で読み終わった。

十五少年漂流記 (新潮文庫)

ところで、少年達はニュージーランドの同じ学校に通う生徒だが、出身国はさまざま。

イギリス人、フランス人にアメリカ人である。

そういうこともあって先述のゴタゴタがグループ内に発生してしまうわけだが、それがまた各キャラを生かしている。少なくとも主要人物だけは。

そのうちの一人、アメリカ人のゴードンは「無人島で暮らすことは、自分の力を試す絶好の機会だ」と考えてたりする。

さすがアメリカ人と感心した。

その他、印象に残ったのは皆に好かれるリーダー、フランス人のブリアンの言葉。

「なぜ僕たちは子供なんだろう。大人でなければならない時に。」

ところで、十五少年漂流記というタイトルは日本のもので、原題は「二ヶ年の休暇」というそうな。

劇中では、十五人というというよりも、十四人と一人として把握されていて、これはなぜかというと、一人は黒人のボーイであるから。生々しい。

実はこの本の前に、スチーブンソンの宝島を読んだ。

こっちは、ミステリアスな導入部とはうらはらに、のっぺりとしたストーリー展開でがっかりした。

No tags for this post.

俺設定のLOUIS SACHAR ”HOLES”

Pocket

SACHARのHOLESを読んだ。There’s a boy in the girls’ bathroomが面白かったので、作者繋がりで。

まあ、面白くはあったんだけど・・・・。

Holes

人生是ツキから見放されまくっている少年スタンリーは無実の罪で矯正施設に送られる。

枯れた湖にあるその施設では、なぜか少年たちに穴を掘らせている。

どうも看守長は何かを探しているようだ。

ということで、導入はよかった。

が、そういった謎が明かされて行くときに、「実は昔にこういう因縁があったのです」と話が始まるので、伏線がズバッと繋がる快感はまったくない。

そういった快感を求めると「理由後付けじゃねーかふざけんな」と頭にくるので、施設のある湖で100年前に起こった話と、今のスタンリーの話の二つが同時進行で進み、それぞれの結末を楽しみに読むのが正しいのであろう。

No tags for this post.