MLサーバ上でコマンドを使うと(ML管理者に)できること
「MLサーバ上でコマンドを使う」
というのは、
「MLサーバ」へ SSH (Secure Shell) でログインし、
makefml (/usr/local/bin/makefml)
コマンドもしくは
fml (/usr/local/bin/fml)
コマンドを使い、
&fml8; の設定変更をするという操作を意味しています。
makefml の基本的な使い方は &fml4; の makefml と同様です。
できるだけ &fml4; と同じ使い勝手になるように、
つまり互換性を保つように努力しています。
相違点についての詳細は
『』
を参照してください。
ホスト上でできること、その権限について
makefml を使う操作は確認(confirmation)が不要です。
たとえば、
メンバーの登録は、コマンドを実行すると、そのまま処理が行なわれます。
これが許されるのは
makefml を実行できる時点で、
つまりそのサーバにログインできる時点で、
特権的なユーザであることが証明されているからです。
「正しくサーバが構築されている」ことが大前提です
(これは &fml8; とは直接の関係がないので説明しません)。
MLサーバのホストに入ることができる(例: ssh してシェルが取れる)人は、
MLにとって最強の権限を持つ人を意味します。
ファイルを直接編集することで、どんなことでもできるわけですから、無敵です。
つまり特権的な操作が可能な状態です。
しかしながら、
人間まちがいを犯すもので、ついファイルのフォーマットを間違えたりします。
そのためファイルの直接編集などはせずに、
通常は「makefml (/usr/local/bin/makefml )コマンドを使うことで
&fml8; の設定を変更してください」という運用ポリシーが推奨されています。
もちろんファイルを編集してもかまいませんが、
その場合、内部構造などをよく理解して操作してください。
なお、fml コマンドは引数の順番の異なる makefml 同等品です。
makefml コマンド ML名 オプション
fml ML名 コマンド オプション
コマンドの中身/動作は同じですので、
シンタックスの好き嫌いで、どちらかを選んで使ってください。
コマンドを用意する基準
&fml8; では、機能ごとに個別にコマンドを用意するようにしていますが、
どうも、このポリシーでは、やたらと多くなるだけのようです。
「できるだけ分離せずに makefml に統合するべき」でしょう。
そこで、以下のような基準に基づき用意することにしています(2003/03 記)。
makefml に統合してある方が
admin コマンドや
CGI でも使えるようになりうるので、
再利用性が高く有益です。
特定のMLに操作を施すコマンド (read/write)
特定のMLに対し、
何らかのデータを見るだけでなく変更/書き込み操作をする可能性があるなら、
makefml (or fml) のコマンドとして実装します。
makefml コマンド ML名 オプション
fml ML名 コマンド オプション
特定のMLのデータを見るコマンド (read only)
特定のMLに対し、データ(ログや何かのサマリ)を見るだけでも、
makefml (or fml) のコマンドとして実装しましょう。
makefml コマンド ML名 オプション
fml ML名 コマンド オプション
データを見るだけのコマンド (read only)
特定のMLと関わりのないコマンドがあり得ます。
たとえば、
モジュールのドキュメントを見るとか、
OS のアカウントやエイリアス一覧を表示させる類のものです。
これは fml が頭文字につくコマンドを別途用意します。
fmladdr [-n]
fmlalias [-n]
fmldoc モジュール名
fmlconf [-n] $ml
(ん〜 fmlconf だけ意味が違うか…)
MLごとの操作だが、単なるコマンドの wrapper
PGP / GPG コマンドの操作コマンド(例: fmlpgp)が、これにあたります。
でも、いいのか、この基準は…
実は、下請けのコマンドに渡すオプションを指定する必要があるので、
オプション解析の段階で困ってしまいます。
&fml8; のオプションは解析し、
下請けのコマンドに渡すオプションは解析していはいけません。
「コマンドラインオプションなどを一切考えない特殊なモード」を作り込めば
makefml に移すことが出来ないわけではないはずですが、こまりました。
操作を施すコマンドだが、
特定のMLとの関わりはないかも知れないタイプ (read / write ?)
これが一番困るケースのような気がしますが、どうしても作る必要があるなら、
fml が頭文字につくコマンドを別途用意します。
例: 記事のスプールを HTML 化する。
fmlhtmlify [-I DIR] $src_dir $dst_dir
ちなみに
この例は
fml に限定されず、ソースが MH フォルダなどでもかまいませんよね。
ちょっと特殊例です。
共通のコマンドラインオプション
libexec/ と bin/ にあるプログラム群(.cgi は除く)
すべてに共通するコマンドラインオプションは
--debug
--help
-c file
-o key=value
の4つです。
-c はデフォルトではない main.cf のパスを指定する際に使います。
また、-o により変数(config.cfで指定する変数)の上書きが可能です。
-o は複数回、使っても問題ありません。
-o key1=value1 -o key2=value2
§.usage.makefml;
§.usage.fml;
§.usage.fmladdr;
§.usage.fmlalias;
§.usage.fmlconf;
§.usage.fmldoc;
§.usage.fmlhtmlify;
レシピ’s
§.usage.onhost.recipes;