| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Command-line usage
この節にはコマンド ラインで LilyPond を使用するための追加情報が含まれます。これにはプログラムに追加オプションを渡す必要があるかもしれません。さらに、いくつかの特別なプログラム (midi2ly など) はコマンド ラインからしか利用できません。
ここで ‘コマンド ライン’ とは、OS の中にあるコマンド ラインを意味します。Windows ユーザは ‘DOS シェル’ や ‘コマンド シェル’ ‘コマンド プロンプト’ という言葉の方が馴染みがあるかもしれません。MaxOS X ユーザは ‘ターミナル’ や ‘コンソール’ という言葉の方が馴染みがあるかもしれません。MaxOS X ユーザは追加のセットアップが必要かもしれません。 (web)MacOS X section ‘MacOS X’ in General Information を参照してください。
OS のコマンド ラインの使用方法についての説明はこのマニュアルが扱う範囲ではありません。コマンド ラインに馴染みがない場合は、その内容を扱っている他のドキュメントをあたってください。
lilypond を呼び出す | ||
| LilyPond の基本的なコマンド ライン オプション | ||
| LilyPond の高度なコマンド ライン オプション | ||
| 環境変数 | ||
| 再配置 | ||
| chroot jail 環境で LilyPond を実行する |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
lilypond を呼び出す@translationof Invoking lilypond
lilypond 実行可能形式ファイルはコマンド ラインから以下のように呼び出されます。
lilypond [option]… file… |
拡張子を持たないファイル名で呼び出された場合、‘.ly’ が最初に試されます。stdin から入力を読み込む場合には、file に対してダッシュ (-) を使用します。
‘filename.ly’ が処理されると、lilypond は出力として ‘filename.pdf’ を作り出します。いくつかのファイルを指定することもできます。その場合、それらのファイルは個々に処理されます。(1)
‘filename.ly’ が複数の \book ブロックを含んでいる場合、残りの score は
‘filename-1.pdf’ から始まる番号付きのファイルに出力されます。さらに、output-suffix がベース名と番号の間に挿入されます。例えば、 ‘filename.ly’ が以下の内容を含んでいる場合、
#(define output-suffix "violin")
\score { … }
#(define output-suffix "cello")
\score { … }
|
LilyPond は ‘filename-violin.pdf’ と ‘filename-cello-1.pdf’ を出力します。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
LilyPond はコマンドラインアプリケーションなので、LilyPond を呼び出すために ‘シェル’ の機能をうまく利用することができます。
例えば,
lilypond *.ly |
は、カレントディレクトリのすべての LilyPond ファイルを処理します。
コンソール出力をリダイレクトする(例えばファイルへ)のも有用でしょう。
lilypond file.ly 1> stdout.txt lilypond file.ly 2> stderr.txt lilypond file.ly &> all.txt |
上記コマンドはそれぞれ ‘普通の’ 出力、‘エラー’ のみ、‘すべて’ 、 をテキストファイルにリダイレクトします。あなたの使用しているシェル、コマンドプロンプト (Windows)、ターミナルやコンソール (MacOS X) がリダイレクトをサポートしているか、あるいは構文が異なるかどうかは、そのシェルのドキュメントを調べてください。
以下は、カレントディレクトリ以下のすべての入力ファイルを再帰的に探し、処理する例です。出力ファイルは元の入力ファイルのあるディレクトリではなく、コマンドを実行したディレクトリに置かれます。
find . -name '*.ly' -exec lilypond '{}' \;
|
これは MacOS X ユーザでも使えるでしょう。
Windows ユーザは
forfiles /s /M *.ly /c "cmd /c lilypond @file" |
スタートメニューから
スタート > アクセサリ > コマンドプロンプト
とたどるか、検索ウィンドウで ‘コマンドプロンプト’ と入力して、
コマンド プロンプト を起動し、これらのコマンドを入力します。
または、入力ファイルを含むすべてのサブフォルダを含む、最上位のフォルダを明示的に指定できる /p オプションもあります;
forfiles /s /p C:\Documents\MyScores /M *.ly /c "cmd /c lilypond @file" |
最上位フォルダ名がスペース文字を含む場合は、パス全体をダブルクオーテーションで囲む必要があります。;
forfiles /s /p "C:\Documents\My Scores" /M *.ly /c "cmd /c lilypond @file" |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Basic command line options for LilyPond
以下のオプションがサポートされます。
-d, --define-default=var[=val]LilyPond の高度なコマンド ライン オプション を参照してください。
-e, --evaluate=expr‘.ly’ ファイルを解析する前に Scheme expr を評価します。複数の -e オプションが与えられた場合、それらは順番に評価されます。
Scheme 表記は guile-user モジュールの中で評価されます。そのため、expr の中で
(define-public a 42) のような定義を使いたいのならば、コマンド ラインで以下を使用して、
lilypond -e '(define-public a 42)' |
‘.ly’ ファイルの先頭に以下を含めます.
#(use-modules (guile-user)) |
Note: Windows ユーザはシングル クォートではなく、ダブル クォートを使う必要があります。
-E, --epsEPS ファイルを生成します。
このオプションは LilyPond のコマンドラインオプションに
--ps, -dbackend=eps, と -daux-files='#f'
を指定するのと同じです。
-f, --format=format(主な)出力ファイルのフォーマットを指定します。format の選択肢は ps, pdf, または png です。
例: lilypond -fpng foo.ly
svg フォーマットや eps フォーマットを出力するには
-dbackend オプションを用います。
LilyPond の高度なコマンド ライン オプション を参照してください。
-h, --help使用方法の要約を表示します。
-H, --header=fieldヘッダ フィールドをファイル ‘BASENAME.field’ に吐き出します。
例えば、 ‘foo.ly’ という入力ファイルが以下の内容を含んでいる場合、
\header { title = "bar" }
\score { c1 }
|
コマンド
lilypond -H title foo.ly |
を実行すると、文字列 bar を含んだプレーンテキストファイル ‘foo.title’ が作られます。
-i, --init=fileinit ファイルとして file をセットします (デフォルト: ‘init.ly’)。
-I, --include=directorydirectory を入力ファイルのサーチ パスに相対パスとして追加します。デフォルトではカレントディレクトリのみが検索されます。
複数の ‘-I’ オプションを与えることができます。検索はカレントディレクトリから開始され、入力ファイルが見つからない場合は、最初の ‘-I’ で指定されたディレクトリ、そして二番目の ‘-I’ で指定されたディレクトリ、というように検索します。
Note: チルド記号 (~) を ‘-I’ と共に使用すると、シェルによっては予期しない結果をもたらす場合があります。
Windows ユーザは、ディレクトリのパスの最後にスラッシュを含める必要があります。
-j, --jail=user,group,jail,dir[このオプションは OS が chroot 機能をサポートする場合のみ有効です。特に、 Windows はサポートしていません。]
lilypond を chroot jail 環境で実行します。(訳者: chroot jail 環境とはセキュリティのためにカレント プロセスに対してルート ディレクトリの位置を変更すること。)
‘--jail’ オプションは、Web サーバ経由で LilyPond 譜刻を提供する時や
LilyPond が外部ソースから送られてきたコマンドを実行する時に、--dsafe よりも自由度の高い代替手段を提供します。
(LilyPond の高度なコマンド ライン オプション を参照してください。)
--jail オプションはコンパイル プロセスの開始直前に
lilypond のルート ディレクトリを jail に変更します。それから、ユーザとグループを user と group に変更して、カレント ディレクトリを dir に変更します。これにより、jail (牢獄) から抜け出せないことを (少なくとも理論上は)
保証します。--jail を指定した lilypond の実行は root (ユーザ名)
として行う必要があります。通常、これは sudo を用いた安全な方法で行います。
jail のセットアップは比較的複雑な問題です。LilyPond がソースをコンパイルするのに必要とされるものすべてを jail の内部 で見つけられるということを保証しなければならないからです。一般的なセットアップには以下の項目が含まれます:
noexec, nodev, nosuid などのセーフ オプションでマウントするための専用ファイルシステムを作成すべきです。こうすることで、LilyPond から実行可能形式ファイルを実行したり、デバイスに直接書き込むことは不可能になります。専用のパーティションを作成することを望まないのなら、適当なサイズのファイルを作成し、それを使用してループ デバイス (ループバック デバイス) をマウントしてください。専用ファイルシステムはさらに、LilyPond が許可されたディスク容量以上には書き込めないということを保証します。
jail 内部で LilyPond を実行する際、低い権限を持つ専用のユーザとグループ
(仮に lily/lily とします)
で行うべきです。このユーザが書き込み可能なディレクトリが 1 つだけ存在すべきであり、それを dir に渡します。
LilyPond は実行中にいくつかのファイルを読み込む必要があります。それらのファイルをすべて jail にコピーしておきます。それらのファイルが本当のルート ファイル システムで存在しているパスと同じパスにコピーします。LilyPond インストールの内容すべて (例えば、‘/usr/share/lilypond’) をコピーすべきです。
問題が発生した場合、その原因を突き止める最も簡単な方法は
strace を使って LilyPond を実行することです。これによりどのファイルが見当たらないのかがわかります。
noexec でマウントされた jail の中では、外部プログラムを実行することは一切できません。そのため、外部プログラムを必要としないバックエンドで
LilyPond を実行しなければなりません。すでに述べたように、jail モードでの LilyPond の実行はスーパーユーザ権限で行われなければならず
(もちろん、その権限はすぐに外されます)、たぶん sudo を使います。LilyPond が使用可能な CPU 時間を数秒に制限する
(例えば、ulimit -t を使って) というのも良い方法です。さらに、OS がサポートしているのなら、割り当て可能なメモリ容量を制限するというのも良い方法です。@ref{LilyPond in chroot jail} も参照してください。
-l, --loglevel=levelコンソール出力の饒舌さを level にセットします。取り得る値は以下の通りです:
NONE何も出力しません。エラー メッセージさえも出力しません。
ERRORエラー メッセージだけを出力します。警告や進捗メッセージは出力しません。
WARN警告とエラー メッセージを出力し、進捗メッセージは出力しません。
BASIC_PROGRESS基本的な進捗メッセージ (成功メッセージ)、警告、それにエラー メッセージを出力します。
PROGRESSすべての進捗メッセージ、警告とエラー メッセージを出力します。
INFO進捗メッセージ、警告、エラーそれに追加の実行情報を出力します。 これがデフォルトです。
DEBUG饒舌なデバッグ出力を含む、出力可能なメッセージをすべて出力します。
-o, --output=file-o, --output=folderデフォルトの出力ファイルとして file をセットします。セットした名前のフォルダが存在する場合、 folder に入力ファイルから取ったファイル名で出力されます。どちらの場合にも適切な接尾辞が追加されます (つまり、PDF ならば拡張子 ‘.pdf’ が追加されます)。
-O, --pspdfopt=keykey へ PS/PDF 最適化を設定します。選択肢は:
size非常に小さい PS/EPS/PDF ドキュメントを生成します。 これがデフォルトです。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#f' と
-dgs-never-embed-fonts='#f'
を指定した場合と同じです。
TeXPdfTeX, LuaTeX, XeTeX ドキュメントにインクルードされるのに最適化されたファイルを生成します。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#t' と
-dgs-never-embed-fonts='#f'
を指定した場合と同じです。
TeX-GSLilyPond によって生成された PDF を TeX ドキュメントに複数インクルードしたい場合は、このオプションを使い、TeX によって生成された PDF を Ghostscript で後処理してください。
LilyPond の Scheme コマンドラインオプション
-dmusic-font-encodings='#t' と
-dgs-never-embed-fonts='#t'
を指定した場合と同じです。
--psPostScript を生成します。このオプションは -fps と同じです。
--png各ページの図を PNG フォーマットで生成します。このオプションは -fpng と同じです。
画像の解像度を N DPI に設定するには以下のようにします。
-dresolution=N |
--pdfPDF を生成します。これがデフォルトで、-fpdf と同じです。
-s, --silent進行状況を表示せず、エラーメッセージのみ表示します。これは -lERROR と同じです。
-v, --versionバージョン情報を表示します。
-V, --verbose冗長表示モードにします:
読み込むすべてのファイルのフル パスを表示して、時間情報などを表示します。これは -lDEBUG と同じです。
-w, --warrantyGNU LilyPond の保証責任を表示します。(GNU LilyPond には保証責任はありません!)
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Advanced command line options for LilyPond
オプション ‘-d’ は LilyPond の Scheme 関数 ly:set-option
のコマンドラインインタフェースです。つまり、ここで示しているすべてのオプションは ‘.ly’ ファイルの中で設定することが可能です。
-d, --define-default=option-name[=value]-d, --define-default=no-option-name内部 Scheme シンボル option-name に value を設定するのと同じです。例えば、コマンドラインオプション
-dbackend=svg |
は LilyPond 入力ファイルに
#(ly:set-option 'backend 'svg) |
を書くことと同じです。
value が指定されない場合、 #t
(真偽値以外を取る場合は、おかしな結果になるかもしれません)が使われます。option-name に接頭辞 no- を付けると、そのオプションは
‘off’ つまり #f が使われます。例えば、
-dpoint-and-click='#f' |
は
-dno-point-and-click |
と同じです。
[‘#’ 文字は多くのシェルでコメントの開始を意味することに注意してください。そのため、それを含む式は常にクォートすることをお勧めします。]
次の表に、サポートされているすべてのオプション名と値を示します。Scheme コード内では、オプション値は関数 ly:get-option で読み取ることができます。
anti-alias-factor num(与えられた因数 num を用いて) 高解像度で描画して、その結果をスケールダウンすることにより、PNG 画像の輪郭がギザギザになることを防ぎます。デフォルト: 1.0。
aux-files boolbool が #t ならば、
eps バックエンドオプションを使っているときに
‘.tex’, ‘.texi’, と ‘.count’ ファイルを生成します。デフォルト: #t。
backend symbolsymbol を LilyPond 出力のバックエンドとして使用します。 選択肢は:
psこればデフォルトです。
Postscript ファイルはTTF, Type1, それに OTF フォントを埋め込みます。フォントのサブセットは作成されません。日本語のような ‘東洋’ の文字セットを用いるとファイルが非常に大きくなる可能性があることに注意してください。
PDF 出力には ps バックエンドが使われます。出力された PS データは Ghostscript の ps2pdf で後処理され、デフォルトでフォントのサブセットが作成されます。
epslilypond-book コマンドのデフォルトです。これは、1 つのファイルにすべてのページとフォントを埋め込んだものと、ページ毎に分離しフォントを埋め込まない eps ファイルの、両方を吐き出します。
null楽譜を出力しません。-dno-print-pages と同じ効果を持ちます。
scm内部的な Scheme ベースの描画コマンドを吐き出します。
svgページ毎の SVG (Scalable Vector Graphics) ファイルが全ページ分作られます。音楽グリフはベクタ画像に変換されますが、文字フォントは SVG ファイルには埋め込まれません。
そのため、テキストや歌詞の最適な描画を得るためには、SVG ビュアーに関連するテキストフォントが必要となります。SVG ビュアーが対応していないことがあるので、‘フォントリスト’ や ‘フォントエイリアス’ を使用しないことをお勧めします。Web Open Font Format (WOFF) ファイルを使うときには、追加の -dsvg-woff スイッチが必要となります。
check-internal-types boolbool が #t なら、全てのプロパティ代入について型チェックを行います。デフォルト: #f。
clip-systems boolbool が #t なら、楽譜から断片を取り出します。これを使用するには、
\layout ブロックに clip-regions 関数が定義されている必要があります。
(notation)音楽の断片を抽出する section ‘音楽の断片を抽出する’ in Notation Referenceを参照してください。
‘-dno-print-pages’ と一緒に用いられた場合、断片は全く出力されません。デフォルト: #f。
crop boolbool が #t なら、すべての楽譜とヘッダをマージンなしの ‘単一ページ’ 出力に合わせます。デフォルト: #f。
datadirデータファイル パスの接頭辞です。読み取り専用で、設定しても効果がありません。
debug-gc boolbool が #t なら、メモリに関するデバッグ用の統計を吐き出します。
debug-gc-assert-parsed-dead boolメモリに関するデバッグ用:
bool が #t なら、パースされたオブジェクトへの全ての参照が無くなっていることを保証します。これは内部オプションであり、`-ddebug-gc' によって自動的にオンになります。デフォルト: #f。
debug-lexer boolbool が #t なら、Flex 文法解析ソフトウェアをデバッグします。デフォルト: #f。
debug-page-breaking-scoring boolbool が #t なら、多くの改ページ設定に関するスコアを吐き出します。デフォルト: #f。
debug-parser boolbool が #t なら、Bison パーサをデバッグします。デフォルト: #f。
debug-property-callbacks boolbool が #t なら、コールバック循環をデバッグします。デフォルト: #f。
debug-skylines boolbool が #t なら、スカイライン (訳注: 行ごとのオブジェクトの最高位置と最低位置を線で表示するもの) を表示します。デフォルト: #f。
delete-intermediate-files boolbool が #t なら、コンパイルの途中で作成される使用しない中間ファイル ‘.ps’ を削除します。デフォルト: #t。
dump-cpu-profile boolbool が #t なら、CPU 時間情報を吐き出します (システムに依存します)。デフォルト: #f。
dump-profile boolbool が #t なら、各ファイルのメモリと CPU 時間情報を吐き出します。デフォルト: #f。
dump-signatures boolbool が #t なら、システムごとに出力情報を吐き出します。回帰テストに用いられます。デフォルト: #f。
embed-source-code boolbool が #t なら、出力される PDF ドキュメントに LilyPond ソースファイルを埋め込みます。デフォルト: #f。
eps-box-padding num出力される EPS の左端に num mm の余白を追加します。デフォルト: #f (余白追加しないことを意味します)。
font-export-dir stringPostScript ファイルとしてフォントをエクスポートするディレクトリを
string に指定します。デフォルト: #f (カレントディレクトリを意味します)。
gs-load-fonts boolbool が #t なら、Ghostscript 経由でフォントを読み込みます。LilyPond 出力ファイルのフォントはすべて参照のみが含まれるようになり、
Ghostscript による後処理で実際のフォントに解決する必要があります。デフォルト: #f。
gs-load-lily-fonts boolbool が #t なら、LilyPond のフォントを Ghostscript 経由で読み込みます。LilyPond 出力ファイルの音楽フォントはすべて参照のみが含まれるようになり、
Ghostscript による後処理で実際のフォントに解決する必要があります。他のすべてのフォントは通常通り出力されます。デフォルト: #f。
gs-never-embed-fonts boolbool が #t なら、Ghostscript が TrueType フォントのみを埋め込むようになり、他のフォーマットのフォントは埋め込まれません。デフォルト: #f。
gui boolbool が #t なら、出力を表示せずに処理を行い、すべての出力をログ ファイルにリダイレクトします。デフォルト: #f。
Windows ユーザへの注意: ‘lilypond.exe’ がデフォルトですべての進捗情報をコマンド ウィンドウに出力するのに対して、‘lilypond-windows.exe’ は進捗情報を出力しません。‘-dgui’ オプションを用いることで、出力をログ ファイルにリダイレクトさせることができます。
help boolbool が #t なら、このヘルプを表示します。デフォルト: #f。
include-book-title-preview boolbool が #t なら、プレビュー画像にブック タイトルを含めます。デフォルト: #t。
include-eps-fonts boolbool が #t なら、システム毎の EPS ファイルにフォントを含めます。デフォルト: #t。
include-settings stringグローバル設定のファイルとして string
をインクルードします。このファイルは楽譜の処理が開始する前にインクルードされます。デフォルト: #f (グローバル設定ファイル無しを意味します)。
job-count numnum ジョブで、並列処理します。デフォルト: #f (並列処理無しを意味します)。
log-file string出力をログファイル ‘string.log’ にリダイレクトします。デフォルト: #f (ログファイル無しを意味します)。
max-markup-depth numマークアップ ツリーの階層の最大値を num に設定します。それよりも深い階層を持つマークアップがある場合、そのマークアップは終了していないと見なされて、警告が表示され、null マークアップが返されます。デフォルト: 1024。
midi-extension stringMIDI 出力ファイルのデフォルトのファイル拡張子を ‘.string’ に設定します。デフォルト: "midi"。
music-strings-to-paths boolbool が #t なら、記譜フォントを用いるテキストをパスに変換します。デフォルト: #f。
paper-size extra-quoted-stringデフォルトの紙面サイズを extra-quoted-string に設定します。文字列をエスケープ記号付の 2 重引用符で囲む必要があることに注意してください。デフォルト: "\"a4\""。
pixmap-format symbol画像出力のための GhostScript の出力フォーマットを symbol
に設定します。デフォルト: png16m。
point-and-click boolbool が #t なら、PDF と SVG 出力に ‘ポイント&クリック’ リンクを付け加えます。@ref{Point and click} を参照してください。デフォルト: #f。
preview boolbool が #t なら、通常の出力に加えてプレビュー画像を作成します。デフォルト: #f。
このオプションはすべてのバックエンド
(pdf, png, ps, eps, それに svg)
でサポートされますが、scm ではサポートされません。入力ファイル名 file でバックエンド format を使った場合、出力ファイル名は ‘file.preview.format’ で、タイトルと楽譜の最初の段を含みます。
\book ブロックや \bookpart ブロックが使われている場合、\book, \bookpart, それに \score のタイトルが出力に譜刻され、\paper 変数 print-all-headers が #t にセットされている場合は各 \score ブロックの最初の段も譜刻されます。
通常の出力を抑制するには、必要に応じて ‘-dprint-pages’ オプションまたは ‘-dno-print-pages’ オプションを使ってください。
print-pages boolbool が #t なら、すべてのページを生成します。デフォルト: #t。
‘-dpreview’ や ‘-dcrop’ を使う場合は ‘-dno-print-pages’ を組み合わせると有用です。
profile-property-accesses boolbool が #t なら、get_property() 関数呼び出しの統計を取ります。デフォルト: #t。
protected-scheme-parsing boolbool が #t なら、パーサでインライン Scheme のエラーが発生しても処理を続けます。#f に設定されている場合、エラー終了して、スタック トレースを表示します。デフォルト: #t。
read-file-list string‘string’ を処理する入力ファイルのリストを保持するファイルとして指定します。デフォルト: #f (入力ファイルのリスト無しを意味します)。
relative-includes boolbool が #t なら、\include コマンドを処理するとき、インクルードするファイルをカレント ファイルからの相対位置で検索します。#f なら、ルート ファイルからからの相対位置で検索します。デフォルト: #f。
resolution num生成する PNG 画像の解像度を num dpi に設定します。デフォルト: 101。
safe boolbool が #t なら、‘.ly’ 入力ファイルを信用しません。デフォルト: #f。
Web サーバ経由で LilyPond 譜刻が利用可能な場合、‘--dsafe’ オプションか ‘--jail’ オプションのどちらかを 指定する必要があります。‘--dsafe’ オプションはインライン Scheme コードが無茶をする – 例えば、以下のような – ことを防ぎます。
% 正しく書くのはあまりにも危険
#(s ystem "rm -rf /")
% 破壊的ではないが悪意がある
{ c4^$(ly:gulp-file "/etc/passwd") }
|
‘-dsafe’ オプションはインライン Scheme 表記を特別なセーフ モジュールの中で評価します。これは GUILE の ‘safe-r5rs’ モジュールに由来しますが、‘scm/safe-lily.scm’ でリスト アップされている LilyPond API 関数のいくつかも追加されています。
さらに、セーフ モードでは \include は許可されず、TeX 文字列の中でバックスラッシュを使うこともできません。また、セーフ モードでは LilyPond 変数を Scheme にインポートすることもできません。
‘-dsafe’ はリソースの過使用を検出 しません ので、このオプションを指定してもプログラムをハングさせられる可能性があります – 例えば、サイクリック (巡回) データ構造をバックエンドに埋め込むことによってです。 そのため、LilyPond を一般公開する Web サーバで使用する場合、プロセスのCPU とメモリ使用を制限すべきです。
セーフ モードは多くの有用な LilyPond 楽譜断片がコンパイルされることを妨げます。
‘--jail’ はさらに安全な代替手段ですが、セットアップにかかる手間も増えます。@ref{Basic command line options for LilyPond} を参照してください。
separate-log-files boolbool が #t なら、入力ファイル ‘file1.ly’, ‘file2.ly’, … に対するログをファイル ‘file1.log’, ‘file2.log’, … に出力します。デフォルト: #f。
show-available-fonts boolbool が #t なら、使用可能なフォント名をリスト アップします。加えて LilyPond は fontconfig の設定そのものを表示します。デフォルト: #f。
strict-infinity-checking boolbool が #t なら、浮動小数点の例外 Inf と NaN に遭遇した時、強制終了します。デフォルト: #f。
strip-output-dir boolbool が #t なら、出力ファイル名を構築する時に入力ファイルのディレクトリを使用しません。デフォルト: #f。
strokeadjust boolbool が #t なら、PostScript に線幅補正 (stroke adjustment) を強制します。このオプションは普通、PDF ファイルが PostScript 出力から生成されている場合に意味があります
(線幅補正は、低解像度のビットマップ デバイスに対して自動的に有効になります)。このオプションを指定しない場合、PDF ビューアは典型的な解像度のスクリーンにおいて、一貫性の無い符幹の幅を出力しようとします。このオプションは印刷結果の品質には目立って影響せず、PDF のファイル サイズを大きく増加させます。デフォルト: #f。
svg-woff boolこのオプションは svg バックエンドで Web Open Format (WOFF)
フォントを使うために必要となります。bool が #t なら、ページ毎の SVG ファイルが全ページ分作られます。LilyPond 自身の音楽グリフを除き、フォントは埋め込まれません。そのため、テキストや歌詞の最適な描画を得るためには、SVG ビュアーにフォントが必要となります。SVG ビュアーが対応していないことがあるので、‘フォントエイリアス’ や ‘フォントリスト’ を使用しないことをお勧めします。デフォルト: #f。
verbose饒舌レベル。これは読み込み専用のオプションで、設定しても効果はありません。
warning-as-error boolbool が #t なら、すべての警告と ‘プログラミング エラー’ をエラーに変更します。デフォルト: #f。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Environment variables
lilypond は以下の環境変数を認識します:
LILYPOND_DATADIRこれはデフォルトで参照するロケール メッセージとデータ ファイルがあるディレクトリを指定し、コンパイル時に定義されるか、実行時に動的に計算される場所を上書きします (@ref{Relocation} を参照してください) 。このディレクトリは ‘ly’, ‘ps’, ‘tex’ などのサブディレクトリを保持しているべきです。
LILYPOND_LOCALEDIRロケール固有のファイルが配置されているディレクトリを指定します。これは LILYPOND_DATADIR から派生した値を上書きします。
LILYPOND_RELOCDIR再配置ファイルが配置されているディレクトリを指定します。これは lilypond バイナリの場所から派生した値を上書きします。
LANGstdout および stderr に送信される LilyPond データ、たとえば、進捗レポート、警告メッセージ、デバッグ出力などの言語を選択します。例: LANG=de
LILYPOND_LOGLEVELデフォルトのログレベル。明示的にログレベルが指定されずに LilyPond が呼び出された場合 (すなわち ‘--loglevel’ コマンド ライン オプションが指定されなかった場合)、この値が使用されます。
LILYPOND_GC_YIELDメモリ管理を調節する変数 (単位はパーセント) です。大きな値は LilyPond に多くのメモリ使用を許し、小さな値だと CPU 使用時間が長くなります。デフォルト値は 70 です。
この変数を使ってメモリ使用量とパフォーマンスを調節することができます。これはメモリ管理の振る舞いを調整するパーセント値です。高い値にするとプログラムはより多くのメモリを使用し、低い値にするとより多くの CPU 時間を使用します。デフォルト値は 70 です。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Relocation
Unix の世界のほとんどのプログラムは、コンパイル前の構成時に決定されるデフォルト ディレクトリを使用します。 LilyPond も例外ではありません。たとえば、標準的なインストールでは、‘lilypond’ バイナリが ‘/usr/bin’ に配置され、LilyPond に固有のすべてのファイルが ‘/usr/share/lilypond/2.21.0/’ のサブディレクトリに配置されます (現在のバージョンが 2.21.0 であると仮定すると) 。
このアプローチは、手動コンパイルや標準のパッケージ マネージャーが付属するプラットフォームでは正常に機能しますが、そのようなマネージャーが一般的でないか、デフォルトで使用されないプラットフォームでは問題を引き起こす可能性があります。このようなプラットフォームの典型的な例は、ユーザーがアプリケーション バンドルをどこにでもインストールできると期待している Windows と MacOS です。
この問題の一般的な解決策は再配置サポートです。データファイルへのハードコーディングされたパスを使用する代わりに、必要なサポートファイルの場所が実行時に実行されたバイナリに対して相対的に計算されます。
| 再配置ファイル | ||
| 再配置アルゴリズム |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Relocation files
実行時の構成には、実際には別のメカニズムがあります。
LilyPond は、外部プログラムとライブラリ、特にシステムフォントを見つけるための ‘FontConfig’ 、
Scheme ファイルを処理するための ‘GUILE’ ライブラリ、
PS データを PDF ファイルに変換するための gs プログラムにそれぞれ大きく依存しています。それらのすべては、関連するデータファイルを見つけるためにも構成する必要があります。これを行うために、lilypond プログラムは外部ライブラリとプログラムを制御する環境変数を操作するために、
‘relocate’ というディレクトリ(存在する場合。下のこのディレクトリが検索される場所を参照してください)
内のすべてのファイルを解析します。このような再配置ファイルのフォーマットは単純です。各行には構文があります
command key=value |
空の行は無視されます。
command ディレクティブは次のいずれかです。
set環境変数 key を無条件に value にセットします。 これは以前に設定された値を上書きします。
set?key がまだ定義されていない場合にのみ、環境変数 key を value にセットします。つまり、以前に設定された値を上書きしません。
setdirvalue がディレクトリの場合、無条件に環境変数 key を value にセットします。それ以外の場合は、警告を発します。
setfilevalue がファイルの場合、無条件に環境変数 key を value にセットします。それ以外の場合は、警告を発します。
prependdir環境変数 key 内のディレクトリのリストにディレクトリ value を追加します。 key が存在しない場合は作成されます。
(先頭のドル記号でマークされた) 環境変数は value で許可され、ディレクティブが実行される前に展開されます。
以下は、GUB から取得した再配置ファイル エントリの 2 つの例です ( (contributor)Grand Unified Builder (GUB) section ‘Grand Unified Builder (GUB)’ in Contributor’s Guide を参照してください) 。
set? FONTCONFIG_FILE=$INSTALLER_PREFIX/etc/fonts/fonts.conf prependdir GUILE_LOAD_PATH=$INSTALLER_PREFIX/share/guile/1.8 |
‘relocate’ ディレクトリ内のファイルの解析順序は任意であるため、再配置ファイルでは、複数の行で同じ環境変数を設定することを避ける必要があります。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Relocation algorithm
LilyPond は、次のアルゴリズムを使用してデータファイルを検索します。
lilypond バイナリが配置されているディレクトリを計算します。これを bindir としましょう。
(内部) 環境変数 INSTALLER_PREFIX を ‘bindir/..’
(つまり、bindir の親ディレクトリ) にセットします。
LILYPOND_DATADIR を確認します。セットされている場合は、その値を LilyPond のデータ ディレクトリ datadir
に使用します。それ以外の場合は、‘$INSTALLER_PREFIX/share/lilypond/version’
(version は現在の LilyPond バージョンです) または
‘$INSTALLER_PREFIX/share/lilypond/current’ を使用します。
LILYPOND_LOCALEDIR を確認します。セットされている場合は、その値を LilyPond のロケール データ ディレクトリ
localedir に使用します。それ以外の場合は、‘$INSTALLER_PREFIX/share/locale’ を使用します。
LILYPOND_RELOCDIR を確認します。セットされている場合は、その値を LilyPond の再配置ファイルのディレクトリ
relocdir に使用します。それ以外の場合は、‘$INSTALLER_PREFIX/etc/relocate’ を使用します。
datadir が存在しない場合は、代わりにコンパイル時の値を使用します。
localedir についても同様です
(ただし、relocdir に関しては無意味なので、同様ではありません) 。
relocdir が存在する場合は、@ref{Relocation files} の説明に従って、このディレクトリ内のすべてのファイルを処理します。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof LilyPond in chroot jail
LilyPond を chroot jail 環境で実行させるようサーバをセットアップすることは複雑な作業です。以下にステップをリスト アップします。各ステップの中にある例は Ubuntu GNU/Linux 用であり、sudo の使用が必要となるかもしれません。
lily という名前のユーザを作成します:
adduser lily |
このコマンドはユーザ lily のためにホーム フォルダ (/home/lily)
と新しいグループも作成します。
lily のホーム フォルダで、独立したファイルシステムとして使用するファイルを作成します:
dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 |
このコマンドは jail ファイルシステムとして使用する 200MB のファイルを作成します。
lily が書き込めるフォルダを作成します:
mkdir /mnt/lilyloop losetup /dev/loop0 /home/lily/loopfile mkfs -t ext3 /dev/loop0 200000 mount -t ext3 /dev/loop0 /mnt/lilyloop mkdir /mnt/lilyloop/lilyhome chown lily /mnt/lilyloop/lilyhome |
/mnt/lilyloop となり、DIR は /lilyhome となります。
sed を使うことで必要な実行形式ファイルをコピーすることができます:
for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
\1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
|
#!/bin/sh
## defaults set here
username=lily
home=/home
loopdevice=/dev/loop0
jaildir=/mnt/lilyloop
# the prefix (without the leading slash!)
lilyprefix=usr/local
# the directory where lilypond is installed on the system
lilydir=/$lilyprefix/lilypond/
userhome=$home/$username
loopfile=$userhome/loopfile
adduser $username
dd if=/dev/zero of=$loopfile bs=1k count=200000
mkdir $jaildir
losetup $loopdevice $loopfile
mkfs -t ext3 $loopdevice 200000
mount -t ext3 $loopdevice $jaildir
mkdir $jaildir/lilyhome
chown $username $jaildir/lilyhome
cd $jaildir
mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
chmod a+w tmp
cp -r -L $lilydir $lilyprefix
cp -L /bin/sh /bin/rm bin
cp -L /usr/bin/convert /usr/bin/gs usr/bin
cp -L /usr/share/fonts/truetype usr/share/fonts
# Now the library copying magic
for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
"/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
\/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
| sed '/.*=>.*/d'; done | sh -s
# The shared files for Ghostscript...
cp -L -r /usr/share/ghostscript usr/share
# The shared files for ImageMagick
cp -L -r /usr/lib/ImageMagick* usr/lib
### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
### you should be able to run:
### Note that /$lilyprefix/bin/lilypond is a script, which sets the
### LD_LIBRARY_PATH - this is crucial
/$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
|
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] |
This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.
他の言語: English, català, deutsch, español, français, magyar, italiano
About automatic language selection.