[JM:01984] [POST: DP] util-linux logger.1 の引き継ぎ

Back to archive index
長南洋一 cyoic****@maple*****
2020年 12月 9日 (水) 11:15:09 JST


<STATUS>
stat: DP
ppkg: util-linux (2.36)
page: logger.1
date: 2020/12/08
mail: cyoic****@maple*****
name: Chonan Yoichi
</STATUS>

これも引き継ぎます。例によってよく分からないところ、自信がないところを
書いておきます。たくさんあります。

それから、このマニュアルは、po4a-translate をするのに、オプション
-o unknown_macros=untranslated が必要です。

○ -e, --skip-empty

     ... Note that when the --prio-prefix option is specified, the
     priority is not part of the line.  Thus an empty line in this
     mode is a line that does not have any characters after the
     priority prefix (e.g., <13>).

     ... なお、--prio-prefix オプションが指定された場合、優先度指定は行の一部
     ではないことに気を付けていただきたい。つまり、このモードでの空行とは、優先度を
     表す接頭辞 (たとえば、<13>) の後ろに文字が全く存在しない行のことである。

   priority は、普通「優先度、優先順位」と訳されます。nice や renice
   コマンドの場合は、まさにそのとおりで、問題ありません。しかし、この manpage で
   priority と言う場合は、facility と level をひとつにまとめた概念です。
   ですから、「優先度」という訳語は、ちょっとズレている感じがします。level
   (重大度) の emerg は alert より重大で、それ故優先されるというのは
   分かりますが、facility (メッセージの分類) の cron と daemon では、
   どちらが優先されるか、mail と lpr では、どっちが上かなんて分からないでしょう。
   でも、auth は user より確実に重要な気がします。ですから、このマニュアルの
   priority は、「優先度」というより「重要度」と訳したほうが、ぴったりでは
   ないにしても、まだ近いのではないかと思います。しかし、「優先度」は priority の
   ほぼ定訳のようで、manpage の前の翻訳だけでなく、Web の logger 関係の記事でも
   たいてい「優先度」が使われています (でなければ、プライオリティ)。訳語を変えて
   しまうのも読者に迷惑でしょうから、一応、「優先度」を使用しておきました。

○ --id[=id]

   この項の二つ目のパラグラフは、一応つじつまを合わせて、何か意味のあることを
   言っているように訳しておきましたが、実のところ、さっぱり分かっていません。

   "the system logging infrastructure" って何なんでしょう。
   システムのロギングをやっている裏方さん? つまり、syslogd とか
   systemd-journald とかですか?

   "local socket credentials" とは、いったい何で、どう訳したら
   よいのでしょう。「資格情報」という訳語は、capabilities(8) や
   proc(5) からもらってきたものです。
   
   日曜日の読売新聞に "press credentials (記者証)" というのが出て
   いました。credentials は、そんな風に使う単語のようですが、この場合は?

   一応、原文と訳文を挙げておきます。

     Note that the system logging infrastructure (for example systemd
     when  listening on /dev/log) may follow local socket credentials
     to overwrite the PID specified in  the  message.   logger(1)  is
     able  to  set those socket credentials to the given id, but only
     if you have root permissions and a process  with  the  specified
     PID  exists,  otherwise  the socket credentials are not modified
     and the problem is silently ignored.

     なお、システムのロギングを下支えしているものが (たとえば、/dev/log を
     リッスンしている systemd  が)、ローカルソケットの資格情報
     (credentials) に従って、メッセージ中の指定された PID を上書きして
     しまうことがあるのに注意していただきたい。logger は、そうしたソケットの
     資格情報の値を、指定された id にすることができるわけだが、それは、
     ユーザがルート権限を持ち、しかも指定された PID を持つプロセスが存在する
     ときだけであって、さもなければ、ソケットの資格情報は変更されず、その問題は
     暗黙裡に無視されるのである。

○ --no-act
     Causes  everything to be done except for writing the log message
     to the system log, and removing the connection or the journal.

     ログメッセージをシステムログに書き込むことや、接続を切ったり、
     ジャーナルを削除したりすることは行わないが、それ以外のすべてを実
     行する。

   このように読んでいたのですが、--no-act を指定しない場合に、logger が
   「ジャーナルを削除」したりすることがあるのでしょうか。"the journal" って
   何でしょう。journald の出すログでしょうか。確かに journald のログは、
   設定によっては消されることがあるそうですが、それはシステムの再起動時で、
   logger コマンドとは無関係でしょう。

   Web を見ていたら、manpage のドイツ語の翻訳者が、"connection or"
   ではなく、"connection to the journal" ではないかとバグ報告をして
   いました。それに対する応答はないようでしたが、この意見は正しいでしょうか。

   おそらく、そのバグ報告をしている人は、"except for writing ... and
   removing ..." と、writing と removing の両方が "except for" に
   続くのではなく、removing を分詞構文と読んでいるのだろうと思います。
   logger コマンドが終了すれば、journal に対する (すなわちログ用のソケット、
   あるいは、リモートの syslog サーバに対する) 接続は切れるのでしょうから、
   「ログメーッセージをシステムログに書き込むこと以外のすべてを実行し、その後、
   ジャーナルへの接続を切る」と読んだ方が、確かに筋が通っているかもしれません。
   "connection to the journal" と、ここに突然 "the journal" を持って
   来られると、「journal って何だよ」と言いたくなりますけれど。
   
   一応、その線で行くことにします。

     ログメッセージをシステムログに書き込むこと以外のすべてを実行し、
     その後、ジャーナルへの接続を切る。このオプションは、テストのため
     に --stderr と一緒に使うことができる。

○ --octet-count
     RFC 6587 octet counting framing method
     no framing
     RFC 6587 non-transparent framing

   定訳があるんでしょうか。取りあえず、次のようにしておきましたが。

     RFC 6587 のオクテット計算フレーミングメソッド
     ノーフレーミング
     RFC 6587 の非透過フレーミング

○ --priority

   長い訳注を付けました。変なことを言っていないかどうか、チェックをお願いします。

   上にも書きましたが、ここの priority を「優先度」と訳すことには、ちょっと
   違和感があります。むしろ「重要度」ではないか。でも、「優先度」が priority の
   ほぼ定訳にようですし、「重要度」もちょっとズレている気もしますし ...。

○ --rfc5424[=without]

   RFC 5424 をざっと覗いてみました。それで、こんな訳 (と訳注)
   になりましたが、「時間品質構造化データ」といった用語や、内容の解釈に
   おかしなところがあるかもしれません。お気づきになったら、お教えください。

   それから、この部分ですが、

     ... The time quality is also automatically suppressed
     when --sd-id timeQuality is specified.

   --sd-id name というオプションは、--sd-id や --sd-param オプションの
   説明によれば、name という識別名の構造化データ要素を使いますという宣言でしょう
   (そして、後に続く --sd-param で、そのデータ要素の持つパラメータを指定する)。
   それなのに、--sd-id timeQuality を指定すると、時間品質の記入がが抑制される
   という理屈が分かりません。実際、動作はそのとおりなんですが、理屈から言うと
   逆なんじゃないかと思うのです。

○ --sd-id

     ... The  ID (name plus possibly @digits) is case-sensitive and
     uniquely identifies the type and purpose  of  the  element.

     ... ID (識別名。name には @digit が続くこともある) は、大文字小文字を
     区別し、要素のタイプと用途を一意に同定している。

   identifie を「同定」と訳すのは、全然気に入っていません。もうちょっと
   いい訳がないでしょうか。

○ -S, --size

     Most receivers accept messages larger than 1KiB over any type of
     syslog  protocol.   As such, the --size option affects logger in
     all cases (not only when --rfc5424 was used).

     どんなタイプの syslog プロトコルを使おうと、受信側のほとんどが
     1 KiB より大きいメッセージを受け入れる。従って、この --size  オプションは、
     (--rfc5424 を使用した場合だけではなく) あらゆる場合に logger に影響を
     及ぼすことになる。

   これは、原文が何を言っているのかよく分かりません。受信側が大きいメッセージも
   たいてい受け入れるから、メッセージの長さの制限は、受信側ではなく、送信側で
   決まる。従って、この --size オプションが、あらゆる場合に logger に対して
   働くことになる、ということでしょうか。その解釈で行きましょうか。
   改訳を挙げると--

     どんなタイプの syslog プロトコルを使っていようと、たいていの受信側が
     1 KiB より大きいメッセージを受け入れる。従って、この --size
     オプションは、(--rfc5424  を使用した場合だけではなく) あらゆる
     場合に logger に対して働くことになる。

   このパラグラフは、次のパラグラフと微妙に矛盾しているように思えるのですが。

○ --socket-errors[=mode]

   これは原文がかなり変です。私の理解力が不足しているのかもしれませんけれど。
   まず、原文を挙げます。

     Print errors about Unix socket connections.  The mode can  be  a
     value  of  off,  on, or auto.  When the mode is auto logger will
     detect if the init process is systemd, and if so  assumption  is
     made  /dev/log  can  be  used early at boot.  Other init systems
     lack of /dev/log will not cause errors that  is  identical  with
     messaging  using  openlog(3)  system call.  The logger(1) before
     version 2.26 used openlog, and hence was unable to detected loss
     of messages sent to Unix sockets.

   何故か lack を形容詞だと思いこんでいたのですが、ふと辞書を調べたら、
   形容詞ではない。名詞か動詞なんですね。だとしたら、"Other init
   systems lack" は、文法的に行儀よく書けば、systems を複数所有格にして、
   "Other init systems' lack of /dev/log" でしょう。つまり
   「他の init システムにおける /dev/log の欠如」。

   それから、その後に出てくる that が分からない。関係代名詞だとしたら、
   動詞が is と単数だから、直前の errors が先行詞のわけはない。
   では、lack が先行詞? それでは、that と離れすぎている (文法的な
   破格、例外としてありえなくはないけれど)。それなら、that は指示代名詞で、
   Other から errors までを受けているんだろうか。"To be or not
   to be, that is the question" みたいに。その場合は、that の前に
   コンマがある方が自然だけど、入れ忘れたのだろうか。

   間違えているかもしれませんが、その解釈で訳してみます。"will not cause
   errors" の "errors" がわかりにくいので、少し補足説明を入れます。

    Unix ソケット接続に関するエラーを表示する。mode の値は、off, on,
    auto の何れかである。mode が auto の場合、logger は、init プロセ
    スが  systemd かどうか検出しようとする。そして、もしそうならば、
    /dev/log がブートの早い段階から使用可能になると想定する。
    他の init システムでは、/dev/log が存在しないので、ここで述べている
    ようなエラーが起きることはない。そのへんは、openlog(3) システムコールを
    使用するメッセージ処理と同じである。logger(1) も、バージョン 2.26
    より前は openlog を使用していた。そのため、Unix ソケットに送信した
    メッセージが消失しても、当時は検出できなかったのである。 

   openlog(3) は (3) ですから、システムコールではないのではないでしょうか。

   今、気になって、古いパソコンを動かしてみたら、kernel 2.4.22、
   SysVinit 2.78 でも /dev/log というソケットは存在しました。
   いったい、原文は何を言っているんでしょう。「他の init システムは /dev/log
   を欠いていることがあるが、そういうシステムではエラーが出ない」と言いたい
   のでしょうか。それには、すこし言葉が不足していると思いますけれど。
   あるいは、"Other init systems that lack of /dev/log will not
   cause errors" と言うつもりで、that を入れ忘れたのでしょうか。
   それとも、SysVinit は、/dev/log があっても、使っていなかったということ
   でしょうか。でも、あれば、logger は使うだろうから、それも変ですね。

   何れにしても、意味的には、大体「他の init システムで、/dev/log を
   欠いている場合、エラーが起きることはない」ということになりそうなので、
   そう直しておきます。

○ FACILITIES AND LAVELS

   facility の訳語ですが、「ファシリティ」とカタカナにして、「メッセージの分類
   (対象分野)」と注を入れることにしました。"facility for dancing" とか
   facility for washing とかいう言い方をするようですが、前者は「ダンス場、
   ダンス室」でしょうし、後者は「洗濯場」か「洗濯機」、「コインランドリー」
   かもしれません。"have no facility for games ゲームには向いていない"
   なんて例文もありました。つまり、ゲームに対する適性、才能がないということですね。
   logger や syslog において "facility.level" の facility の位置に
   来るものは、auth や mail や lpr ですから、"facility for xxx"
   という表現の "xxx" に当たるもののわけです。とすると、logger の場合は、
   facility という言葉の意味にこだわらないでよければ、「メッセージの分類」と
   訳しておいてよいのではないか。それで、こうしておきました。「機能分類」という
   これまでの訳にも、ちょっと未練があります。同じことを言っているのでしょうし、
   facility という言葉の意味には、その方が近いでしょうから。でも、「メッセージの
   分類」と言い切ってしまった方が、明解でしょう。

   syslog(3) では、"The facility argument is used to specify
   what type of program is logging the  message." と言っています。
   この場合、ファシリティは「プログラムのタイプ」でしょうが、logger の場合は、
   logger がすべてのメッセージを出すのですから、「プログラムのタイプ」とは
   言いにくい (「logger が演じるプログラムのタイプ」となら言えるかも)。
   それで、「メッセージの分類」にしました。もっとよい訳語があったら、お教え
   ください。差し替えます。

添付ファイルの構成は以下のとおりです。

$ tar tzf logger-2.36.tar.gz
logger-2.36/
logger-2.36/po4a/
logger-2.36/po4a/man1/
logger-2.36/po4a/man1/logger.patch
logger-2.36/po4a/man1/logger.po
logger-2.36/original/
logger-2.36/original/man1/
logger-2.36/original/man1/logger.1
logger-2.36/draft/
logger-2.36/draft/man1/
logger-2.36/draft/man1/logger.1

-- 
長南洋一
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: logger-2.36.tar.gz
型:         application/octet-stream
サイズ:     24634 バイト
説明:       無し
URL:        <https://lists.osdn.me/mailman/archives/linuxjm-discuss/attachments/20201209/b0a0f0a5/attachment-0001.obj>


linuxjm-discuss メーリングリストの案内
Back to archive index