Go to the first, previous, next, last section, table of contents.

display-time コマンドがロード・アベレージを表示しなくなることがあるのですが何故?

GNU Emacs 18.56 で, display-time のコードが変更されました. それ以前の版 18.55 では "loadst" というプログラムを起動して 定期的に Emacs に時刻を知らせるようにしていました. loadst は 適切な権限が与えられている場合 (またはシステムが権限を必要としない) は システムのロード・アベレージも知らせていました. loadst から情報が送られると Emacs はそれをモード行に表示してたのです.

18.56 版では, "wakeup" というプログラムを使うように変更されています. wakeup は情報を知らせるのではなく Emacs に時間がきたことを知らせるためだけに使われています. このとき Emacs は適当なフィルタ関数を起動して 時刻や日付やロード・アベレージなどの情報を検索しています. しかし, ロード・アベレージを調べるには たいていのシステムではカーネル・メモリを読むための適切な権限が必要です. Emacs にこの権限を与えることはシステムのセキュリティに危険を与えることにも なりかねないので, ロード・アベレージの表示はオプションになっています. 加えて, loadst はこの情報を調べるためのコードを含んでいたにも関らず, Emacs には含まれていません.

18.55 版から lisp/display-time.el と etc/loadst.c を持ってきて 適切な変更を加えて 18.57 版でも使うとよいでしょう. (IBM から法的圧力を受けた Unipress によって loadst のコードは削除された という噂があります.)

注意: Emacs を kmem の setgid ビットを設定してインストールしないでください. セキュリティに危険をもたらします!!!!!!!!!!

Emacs 18.55 またはそれ以前の版を使っているか, または上の方法でこの問題を解決した人は必ず次を読んでください:

"loadst" を使う上でもっとも起りうる問題点は loadst が /dev/kmem というファイルを読めないことに起因します. loadst を適切にインストールすると, /dev/kmem がオーナになり setuid ビットが設定されるか, /dev/kmem のグループに属し setgid ビットが設定されます. いずれの場合も オーナまたはグループの権限で /dev/kmem ファイルが読めるようになります.

/dev/kmem を読んでもロード・アベレージが分からない Unix システムがあります. ロード・アベレージを知るために 特別なシステム・コールが必要な Unix システム (例えば UMAX の inq_stats) では loadst を拡張する必要があります.


Go to the first, previous, next, last section, table of contents.