common lisp の環境も関係者の努力によっていろんなツールが着々とバージョンアップを重ねているらしく、しらないうちに adsf も version 3.0 になった。3年以上前のようだが、、、 ドキュメントも充実し始めているので、もはや断片的に誰かの blog や書き残し(多分古い情報だ)をみるより本家を見た用がよい。そのうちこの blog も古くなる。 日本語の(非公式らしい)訳があるので参考になる。
2014 と少し古いようが keens さんの blog も参考になる。
require, ASDF, quicklispを正しく使う | κeenのHappy Hacκing Blog
まず version 2.0 のスタイル asdf:central-registry は使わない。後方互換もあるようなので使っても構わないが、3.0 以降では非推奨だ。
ubuntu では簡単に apt install cl-asdf でインストールできる。そうすると、/usr/share/common-lisp/ にインストールされる。source と systems があるが systems は古いスタイルようなので無視する(asd のシンボリックリンクがある)。source が対象になる。asdf は /usr/share/common-lisp/cl-asdf にあり、さらに自動的に build ディレクトリの下に asdf.lisp があるはずだ。これを load すれば以後 asdf が使える。よかったよかった。
clisp では
#-:asdf (load "/usr/share/common-lisp/source/cl-asdf/asdf.lisp")
と書けばいいだろう。これで asdf が使える。asdf:asdf-version でバージョンを確認しよう。
[1]> (asdf:asdf-version) "3.3.1"
つぎに追加のディレクトリ。
ASDFがシステムを見つけられるように設定する (ASDF マニュアル) にあるように、
のいずれかにソースを置くようにする。そうすると自動的に検索対象になるようだ。追加の為には
~/.config/common-lisp/source-registry.conf.d/
に 50-luser-lisp.conf などと conf の拡張子のあるファイルを置いていく。私は、keens さんを参考に3つのパスを通した。
> ls 10-systems.conf 20-ryos.conf 30-quicklisp.conf > cat * (:tree "/usr/share/common-lisp/source/") (:tree (:home "Lisp/")) (:tree "~/quicklisp/dists/")
最初の /usr/share/common-lisp/source は ubuntu における common-lisp ライブラリの標準のインストール場所。以後 apt などで install されたライブラリがここで参照できる。
そしてこれまた人まねで quicklisp の初期化は .clisprc からコメントアウトした。(sbcl 使えって?)、これでうまくいくはず。いままでいい加減に load とかやってたのを ubuntu の世界でうまく整理できた。
cygwin もやってみた。asdf を make して build に asdf.lisp が出来るところまでやったが、(require "cl-fad") (公式ドキュメントによると "cl-fad" と文字列でやるのが互換性のある記述らしい。'cl-fad は GNU lisp で動くが互換性はないとのこと)、とすると alexandria がこける。どうも LANGの設定が絡んでいるようだが、なにが悪いのかは特定できなかった。cygwin の clisp がだめなのかも。