ASDF(Another System Definition Facility)という、Common Lispの機能拡張システムのインストールと設定について。
このサイトを参考にしている。
ASDFは、Linuxなどのパッケージ管理システムに近い働きをするもので、Common Lispのライブラリルーチン(的なもの)というかパッケージをftpから自動的にダウンロード&コンパイルするもの。
この新たに組み込まれるパッケージを"SYSTEM DEFINITION"(システムディフィニション)という。
どんなパッケージがあるかはCLiki : ASDF-Installを参照のこと。
※SBCLの場合、最初からasdfがインストールされているので、以下の手順は不要。
■ASDFシステムの入手
asdfを利用するには、以下のふたつをダウンロード&インストールする。
1. ASDF
以下のurlから入手。
Unix系なら以下のコマンドで取得。
2. ASDF-INSTALL
以下のurlから入手。
Unix系なら以下のコマンドで取得。
■システムへの展開
展開先は特に決まっていないので、自分のホームディレクトリ下でもかまわないが、いろいろ考えると/usr/lib下に専用のディレクトリをつくって共有するほうがよいかも。展開は、Unix系なら以下の通り。
tar zxvf asdf.tar.gz
tar zxvf asdf-install_latest.tar.gz
■ASDFのコンパイル&インストール
asdfを展開したら、Lisp上で以下のようにコンパイルを行う。
(load (compile-file "/展開したディレクトリ/asdf.lisp"))
これで、コンパイル済みファイルが上記の展開したディレクトリにつくられる。
■Lisp起動時にasdfを自動ロードするよう設定
起動時設定ファイル(CLISPなら".clisprc")に以下の行を追加する。
#-:asdf (load "/path/where/asdf/is/located/asdf")
SBCLの場合は、上記ではなく、以下のように設定。
(require :asdf)
■レジストリディレクトリの設定
asdfは、コンパイルしたシステムディフィニションの保存先&検索先のディレクトリを*central-registry*という変数で管理する。起動時設定ファイルに以下の行を追加し、変数を設定する。
(pushnew "/レジストリとして設定するディレクトリ/" asdf:*central-registry* :test #'equal)
レジストリディレクトリは複数設定することができる。その場合は、上のような行を複数書けばよい。
注意事項は以下のふたつ。
・ディレクトリの設定なので、文字列の最後は"/"で終わらせること。
・ちゃんと存在するディレクトリを設定すること。
■ASDF-INSTALLのコンパイル&インストール
Lisp上で、以下のようにコンパイルを行う。コンパイル後のファイルは、レジストリディレクトリに保存される。
(asdf:operate 'asdf:compile-op :asdf-install)
(asdf:operate 'asdf:load-op :asdf-install)
■Lisp起動時にasdfを自動ロードするよう設定
起動時設定ファイル(CLISPなら".clisprc")に以下の行を追加する。
#-:asdf-install (asdf:operate 'asdf:load-op :asdf-install)
SBCLの場合は、上記ではなく、以下のように設定。
(require :asdf-install)
■その他に必要なもの
ASDFとASDF-INSTALLのインストールは上記で終了。その他にも、以下のふたつをインストールしておくことが推奨されている。
・GnuPG(GnuバージョンのPGP)
・GnuTar(GnuバージョンのTar)
とくにGnuTarはASDFが前提としているものなので注意。Linux系のシステムであればGnuTarはインストール済みである場合が多いが、BSD系やMacOS X、Windowsなどの場合は別バージョンのTarがインストールされているかもしれないので要確認のこと。
最終更新:2010年02月13日 14:43