Solaris の id2014年02月01日 13時44分32秒

id -unの件だが、Solaris だと、/usr/xpg4/bin/id の id でないと、-un のオプションが使えないようだ。

PATH に気を付けないと /usr/bin のものを使ってしまい、id -un では動かない。

swap zone exhausted, increase kern.maxswzone2014年02月01日 13時56分16秒

swap zone exhausted, increase kern.maxswzone が大量に表示されて焦った。

調べてみると、loader.conf に設定できて、32MB がデフォルトでおよそ、7GB のスワップ領域が利用できるらしい。他にも 64MB がデフォルトで 14GB 利用できるとの記述も目にしたので、変わったのかもしれない。

何はともあれ現在利用中のシステムは 8.4-RELEASE。i386 のシステムに 4GB の実メモリが搭載。普段は 2GB のスワップ領域なのだが、tmpfs で大量に使いはじめたので 3GB を追加して、5GB にしておいた。

不思議なのは、この 5GB を使いきる前にこのエラーが表示され始めたこと。焦ってしまい、正確な数字は覚えていないのだが、スワップを 2GB から 3GB ぐらい行った頃にこれが出てきた。上とは計算が合わない。

メーhリングリストの swap zone exhausted, increase kern.maxswzone にて指摘された Kernel hang on 6.x によると、これは スワップ領域は残っているが、スワップを管理するハッシュテーブルが埋まってしまった事に起因するらしい。そして、スワップ領域が無くなった時にプロセスが殺されるのに対して、こちらでは待ち続けるそうだ。

/usr/src/sys/vm/swap_pager.c のこの部分みたいだ。


swap = *pswap = uma_zalloc(swap_zone, M_NOWAIT);
if (swap == NULL) {
    mtx_unlock(&swhash_mtx);
    VM_OBJECT_UNLOCK(object);
    if (uma_zone_exhausted(swap_zone)) {
        printf("swap zone exhausted, increase kern.maxsw
zone\n");
        vm_pageout_oom(VM_OOM_SWAPZ);
        pause("swzonex", 10);
    } else
        VM_WAIT;
    VM_OBJECT_LOCK(object);
    goto retry;
}

急いで必要ないファイルを tmpfs から消したら、通常運転に戻った。

Van Saun Park でそり遊び2014年02月02日 12時14分02秒

最近、ちょこちょこと行くようになっていた、Van Saun Park先週の雪もまだ残っていて、土曜日は暖かくなったので行ってみた。噂でそり遊びに絶好の場所があると聞いたのは二年程前だろうか。

正面入口から入ると、子供達の遊具のある公園には左に向かって曲がって行く。その右側の辺りが小高い山の斜面になっていて、丁度良く滑り降りる場所になっている。藁を束ねたブロックと簡単な柵が歩道の脇に作ってあるので、公園がそり用に準備したようにも見える。

土曜日学校の友達と学校帰りに寄ってきた。上下のスノーウェアを準備して、手袋とそりを積んで行く。やはり自然の傾斜を利用した坂は、庭に積んだ雪山よりも長くてスピードも出て楽しい。あれこれと、二時間程遊んで、食事を共にして帰宅。

FreeBSD で新環境の実験2014年02月02日 13時16分03秒

コンピュータを使っていると、ソフトウェアの更新がそれなりに必要になる。最長で五年位放っておいた事もあったが、あれこれと動作が怪しい物があった。そこまで引っ張らずとも、一、二年に一度はやっておいた方が良さそうだ。

FreeBSD では ports を更新するなり、package で入れるなり、新しい pkgng を試してみるなり、/usr/local を更新する方法はいくつかある。インストールするだけだったら、単純作業だが、実際に新しく入ったものを使ってみる方が色々と大変だ。

過去には、互換性が無くなってうまく動かなくなったり、起動しなくなったりして困ったこともある。一番厄介なのは、設定などの書式が変わってしまい、以前のものが同じ様に起動しなくなることだ。

新しい事を試すには、バックアップの重要性はいつも、何度も語られてきた話題だ。しかし、バックアップを取る手間も、元に戻すのもそんなに簡単ではない。

しかし、FreeBSD ではこの様な短期的な作業では、簡単に疑似バックアップを行う方法がある。ファイルシステムの階層を他にくっつけてしまう、unionfs である。

HOME を /export につくってある。そこで、新しい ports を試す前に、/export の上に unionfs で被せて、/export への書き込みを一切阻止する。


$ mount /export
$ mkdir /tmp/export
$ mount -t unionfs -o masquerade,noatime
$ df 
/dev/ad4s3             28464378 27619310  275782    99%    /export
<above>:/tmp/export    28972008 28571838  359560    99%    /export

試用期間は大体三十分から一時間位で、一人だけなので /tmp を使っている。用途、時間、人数に合わせて、他の場所を準備する必要はある。

Seamonkey のブックマークが保存されなくなっていた2014年02月02日 15時47分08秒

ports を更新し、新環境で動作検証中に問題を見付けた。Seamonkey のブックマークがおかしくなっている。

更新前の seamonkey のバージョンは 2.17。何時からかは知らないが、bookmarks.html は更新されなくなっていたようだ。

SeaMonkey/FAQ Bookmarks にいくつか記述してある。

The bookmarks.html file is not updated anymore. What can I do? You can go to about:config and toggle the browser.bookmarks.autoExportHTML pref to true. Then bookmarks.html will be written each time you exit SeaMonkey. Or you can do it manually using Tools/Export HTML from the Bookmarks Manager.
about:config の中の browser.bookmarks.autoExportHTML を見ると、bookmarks.html が書き出されるかがわかる。
What are the benefits of Places-based bookmarks? Bookmarks are stored in a database now, together with your browsing history. This allows for better integration (Sync, the Location Bar and add-ons), automatic backups and the possibility to restore them, saving favicons with your bookmarks, and the ability to define tags.
ロケーションバーや、他との統合のために bookmarks.html ではなく、データベースに情報が保持される様になったようだ。

ほぼ一年近く使っていたが、気がつかなかった。

Seamonkey のブックマークが破損2014年02月03日 00時59分13秒

Seamonkey 2.17 から 2.23 へ更新する時に、正しくブックマークが移行されていないのに気がついた。原因は bookmarks.html が保存されなくなっていたから。

2.23 の初回起動時に時間が特にかかる。今思えば、データベースからブックマークを作りなおしていたようだ。ここ半年で、ずいぶんと古くなっていたブックマークは削除する等、整頓していた。しかし、ブックマークの最初のr方はあまり変わっておらず、最初は一つ二つ抜けているだけに見えたが、詳しく見直すとあれこれおかしい。 。

手っ取り早い復旧が可能なので、パッパと古い物を取ってくる。とは言ったものの、seamonkey も戻す必要がある。

/usr/local を予備のパーティションを一時的にマウントする。既に公開して長らく経つが、三部構成にして即時入れ換え可能に指定あるので、大した作業でもない。この様な一時的な /usr/local の入れ換えは、二重に /usr/local をマウントする事で出来る。


% mount | grep '/usr/local'
/dev/ad4s3e on /usr/local (ufs, local, noatime, soft-updates)
/usr/local/compat on /usr/compat (nullfs, local, noatime)
/usr/local/var/db/pkg on /var/db/pkg (nullfs, local, noatime)
/dev/ad4s2e on /usr/local (ufs, local, noatime, soft-updates)
% df | grep local
/dev/ad4s3e            12186190  6858456 4352840    61%    /usr/local
/usr/local/compat      12186190  6858456 4352840    61%    /usr/compat
/usr/local/var/db/pkg  12186190  6858456 4352840    61%    /var/db/pkg
/dev/ad4s2e            12186190  6344892 4866404    57%    /usr/local

この後、seamonkey 2.17 を起動し、「Bookmarks」の中の、「Manage Bookmarks...」で、「Bookmarks Manager」を起動した。そして、「Tools」メニューの「Export HTML...」で一時保存。

古い ports の入っている /usr/local を umount し、seamonkey 2.23 を再度起動する。もう一度、「Bookmarks Manager」を起動し、一旦ほぼ全てのブックマークを削除。その後、「Import HTML...」で 2.17 のブックマークを読み直して、復旧した。

今回の件は、古い bookmarks.html に内容を見ると同じに見えて、タイムスタンプは一年近く前だったので、結構焦った。何せ、ブックマークを編集したのに、ファイルが更新されないのだから。何はともあれ、最新のブックマークに戻せて一安心。

FreeBSD 10.0 RELEASE にアップデート後に最初にする事2014年02月03日 13時55分42秒

まだ FreeBSD 10.0 は試す気はないのだが、他の人の報告等は簡単に目を通している。リリースノートには書かれているが、ports の変更が一番影響力が大きいみたいだ。
The pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating, and pkg_version utilities have been removed. pkg(7) must now be used to install binary packages. pkg(7) is the next generation FreeBSD package manager, also referred to as “pkgng”. If upgrading from a previous FreeBSD release, be sure to run pkg2ng to convert the old package database to the new format. [r257444]

要は、以前の pkg_* が廃止になり、pkgng が必須になったと言うこと。pkg2ng を用いて、古いパッケージのデータベースを新しい形式に更新することとある。ports で自前でコンパイルしていても、package 形式を手元で作成してからインストールされるので、公開されている package を使っていなくても、必須になる。

10 系で使い続けるなら、真っ先にデータベースを変換しておかないと、後々の失敗を呼び込むことになる。5.5 Using pkgng for Binary Package Management にもあるように pkgng は portsupgrade や portmaster を置き換えるものではない。

古いシステムと新しいシステムで、/usr/local 以下を共有する時には古いままで 10 系からは触らないか、ports から 10 系以前のシステムに pkgng を入れるかになる。さらに、libiconv がベースに取り込まれた関係もあって、共有には注意が必要になる。

${PORT_OPTIONS:MDOCS}2014年02月03日 23時23分52秒

portlint によると NOPORTDOCS ではなくて${PORT_OPTIONS:MDOCS} を使うそうだ。.include <bsd.port.options.mk> で、事前に行う必要がある。

こんな感じで使うみたいだ。


OPTIONS_DEFINE= DOCS

.if ${PORT_OPTIONS:MDOCS}
        ${MKDIR} ${DOCSDIR}
.for f in ${DOCS}
        ${INSTALL_DATA} ${WRKSRC}/${f} ${DOCSDIR}/
.endfor
.endif

DOCS をインストールするかの選択肢が出来て、それに応じてインストールする。

更に最近の ports には STAGing が出来て、これにもう一捻り必要だが、これは後程。

またまた、大雪2014年02月04日 14時04分25秒

またまた、大雪が降った。朝早い時間に電話がなった。自動音声だが、こちらでは学校が閉まる時は電話が学校からかかってくる。自分の小学生の頃等は、連絡網があり、それに沿って順次電話をかけていったが、それに比べるとずいぶんと楽なものだ。

それはさておき、昨日の夜に天気予報を見た時には晴れとあって、まったく雪等予期していなかった。既に十センチ位積もっている。こんな状態では、通勤は無理なので、自宅勤務を申し込む。

ずっと降り続けているので、お昼休みを二分割しその時間を使ってある程度雪掻きを進める。まだ、前に降った雪で作ったかまくらが残っていたので、そのまま上に。今日はそんなに寒くはなく、雪も水分が多めで重い。

かまくらを作りたがっているので、最初からそのつもりで、雪をどかす時に一定の場所に投げる。その分大変なのだが、仕方がない。四歳の娘と七歳の息子も同時に出て、玄関の前からの雪掻きを楽しそうに手伝ってくれる。二回とも玄関の雪掻きをしてくれた。前の家の子供達も出てきて楽しく遊んでいるので、妻と交替。子供達を見てもらい、前半の昼休みを終了。

子供達が少し昼寝をした後に、二回目の昼休み。結構また積もっていたが、比較的早く終わった。最終的には、車のバンが一台分の雪の山が出来た。前回は息子が早いうちから、穴を開けてしまい大きくできなかった。今回は、待つように言ったので、大きく積もっていて、大きなシャベルで五分位で簡単に穴を開ける。子供二人座って入っても、まだ余裕がある。家に戻る様子もないので、再度妻と交替。

Seamonkey の調子が良くなった2014年02月05日 12時36分18秒

Seamonkey の更新に、多少手間取ったが、あれこれと不具合が解消されて良くなっている。

ちょくちょく起きる、ポップアップが出なくなるバグもなおっている。

あと、プラグインの判定も良くなっている気がする。あちらこちらのページで、プラグインが無いから全部見られないとの故を表示するようになった。ほとんどが、見なくても問題ないものなので、入れる気もないが。興味が湧いたら、もう少し調べるかも。