iどさにっき shuffle 〜2007年1月中旬〜

_ 出た。 _ うーん、--with-included-apr がないと configure でコケる。なんでだろ。インストール済みの古いバージョンの APR を参照しちゃってるのかな。めんどくさいので、深くは追求しない。 _ とりあえず make まで。入れ替えは後で。 _ この前のパッチはたぶん使えなくなってると思う。実際に確認したわけじゃないけど。

_ ちょとまて。太田純監修ってどういうことだ。rogue 風味じゃなくて、ほんまもんの rogue を PS2 で出すのか？ 正気か？ てゆーか最近 fj 見てないんだけど太田さんは今なにやってんの。 _ とりあえず1ヶ所だけツッコミ入れたい。 ローグは80年代にコンピューターのキー操作の習得用ソフトとして開発され、 ちげーよ！ _ ひさしぶりにインストールしてみた。もちろん太田さんの移植した日本語版。なつかしすぎ。地下7階でケンタウロスと戦いて死す。 _ (1/28 追記) キー操作うんぬんのくだりは修正されたようです。そりゃあんまりだ、とツッコミメールを送った:-)という方に教えていただきました。てゆーか、rogue をやると vi で yubn で斜め移動したくなっちゃうからキー操作習得用には使えないんだよ。

_ このへんとか このへんとか読んでて思った。 _ 覚えなきゃいかんのは、何よりもまず先に C-h t（と、そこに書いてあること）だろう……。最低限これだけ覚えれば、とりあえず基本的なことはできるようになるはずだし、そんな基本的なことを誰かのページを参照しなくても済むはずなんだけどなぁ。最近の入門書って C-h t について触れてないのかしらん。 _ と、vi 使いは吠えるのでありました。そろそろ jvim3 を捨てて本格的に vim7 に移行せんとなぁ。 _ ちなみに、emacs -nw で起動したときにメニューにアクセスするには M-` ね。

■ 大物 spammer

■ 平ユーザで ports を使う

_ FreeBSD の ports を root 以外のユーザで管理する方法。ports のしくみ自体は平ユーザで使うことをちゃんと考慮してるのに、実際の方法はあまり知られていないみたい。 _ 以下箇条書きにて。 ports の管理は su または sudo を実行できる（wheel グループに所属している、もしくは sudoers で指定されている）平ユーザでコンパイルからインストールまで可能。

sudo chown -R hoge /usr/ports/ して、ports ツリー全体が hoge ユーザの所有にする。あるいは ports ツリー自体を ~hoge/ports/ あたりに置いて /etc/make.conf で PORTSDIR を設定すればいい（はず。やったことない）。

基本的にはこれだけ。平ユーザのまま make install すると、勝手に root パスワードを聞いてきて、root としてインストールを実行する。そのほか、make config でオプションを /var/db/ports/ 以下に保存するときや、make deinstall なんかも自動的に su してくれる。

デフォルトでは su が使われ毎回パスワードを聞かれるが、/etc/make.conf に SU_CMD=/usr/local/bin/sudo /bin/sh -c と書いておくと、sudo を使うようになる。

/etc/make.conf 自体は root の所有なので、平ユーザはいじれない。以下を make.conf に書いておくと、ports のコンパイルのときだけ /usr/ports/Mk/local.conf を読んでくれるので、ports の設定はこっちに書くと平ユーザでも安心。 .if ${.CURDIR:M/usr/ports/*/*} != "" && exists(/usr/ports/Mk/local.conf) .include "/usr/ports/Mk/local.conf" .endif

csup (cvsup)、portsnap のいずれを使う場合でも、平ユーザで ports ツリーの更新は問題なくおこなえる。もちろん、/var/db/portsnap などの権限は開けておく必要あり。

portupgrade を使う場合は引数に -s を加えておくと、${SU_CMD} をいじらなくてもインストールや古いパッケージの削除の際に sudo してくれる。

portmaster は root で実行することしか考慮していない。portmaster でも make install や make config は ports 自体の機能として平ユーザで実行できるが、旧バージョンの pkg_delete や依存情報の更新ができずにコケる。ということで、 パッチ。

ほとんどの ports でこれでうまくいくが、一部のお行儀の悪い ports ではうまくいかないものもある。必要に応じて root 権限を得るしくみがある以上、個々の port の作りが悪いと言ってしまっていいと思う。 必要に応じて自動で root になってくれるが、make install 直前のインストール準備処理のときには root にならない。そのため make pre-install で root 権限が必要な作業をする ports はコケる。専用ユーザ/グループを追加する ports に多い。ユーザは追加しないけど lang/ruby18 もこれでコケる。make install で自動で root になってくれる機能に頼らず、sudo make pre-install すればうまくいく。 インストールに cp -p を使っているものがある。平ユーザでコンパイルした場合、cp -p したらインストール後も平ユーザの権限のままになってしまう。コケないけど、hoge 所有のままのファイルがインストールされてキモい。net/samba3 とか。セキュリティ的によろしくないけどたいていの場合は動作に不都合はない。

_ わしはこの方法でもう数年使ってるけど、ほとんど問題は出ていない。というわけで、いらん root は使うな。

■ また今日も IPv6 の逆引き委譲がコケたらしい