Next: , Previous: , Up: ASDFがシステムを探す場所を設定する   [Contents][Index]


8.6 設定ディレクトリ

設定ディレクトリ内の.confファイルのDSLは、ソースレジストリを設定するDSLと少し異なります。まず、ディレクティブを(:source-registry ...)で囲む必要はありません。また、継承ディレクティブ:inherit-configuration:ignore-inherited-configurationは使えず、ディレクティブのリストの末尾に暗黙に:inherit-configurationが加わります。これらに反した設定ファイルを読み込むと、ASDFはuiop:invalid-configurationエラーを通知するでしょう。なお、ディレクトリ中の設定ファイルは、そのネームストリングに従ってstring<の順で読み込まれ、ディレクティブもこの順番で結合されます。

Common Lispソフトウェアのディストリビューションは、自身の設定ファイル(例えば10-foo.conf)を設置する際、すべてのユーザーに対する設定は/etc/common-lisp/source-registry.conf.d/10-foo.confを、ユーザー単位の設定は~/.config/common-lisp/source-registry.conf.d/10-foo.confを使うことができます。そうすれば、インストールされるソフトウェアの設定情報を、容易かつモジュール化された形で登録できるでしょう。例えばDebianのパッケージや、将来のバージョンのclbuildがそうなることでしょう。37

設定ディレクトリ内の設定ファイル名は、上で挙げたように2つの数字から始めるのが慣習です。こうすることで、設定が読み込まれる順番を決めることができます。また、ファイル形式は.confでなければなりません。この仕様のメリットは、単に実装が簡単であるだけでなく、設定ファイルを無効にするにはただファイル形式を変えればよい、という点にもあります。

設定ファイル内で別の設定ディレクトリをインクルードしたい場合は、ディレクトリのパス名か文字列を:includeディレクティブに指定してください:

	(:include "/foo/bar/")

例として、前のセクションの~/.config/common-lisp/source-registry.confと同じ設定を、設定ディレクトリで行ってみましょう。ファイル~/.config/common-lisp/source-registry.conf.d/33-home-fare-cl.confを次の内容で作ります38:

(:tree "/home/fare/cl/")

Footnotes

(37)

[訳注] clbuildは2018年現在、メンテナンスされていません。

(38)

[訳注] こちらの例ではユーザー名が明示されていますが、もちろん(:tree (:home "cl"))という記述も有効です。