quicklisp on sbcl@ubuntu が動かないのでどうにかしてみた

ubuntuにquicklispをinstallして(ql:add-to-init-file)してsbclを再起動すると起動に失敗します。

調べてみるとcommon-lisp-controllerとやらでロードする場所に #p"~/.clc/systems/" が指定してあり、これが引っかかるようです。

cl-asdfでinstallされているasdf(version 1.7 カスタマイズされてる?)だと~/をhome directoryとして変換しているようですが、quicklispでasdf 2.0に書き換えられて、そのせいでだめになっているようです。

なので ~/.clc/systems を (merge-pathnames (make-pathname :directory '(:relative ".clc" "systems")) (user-homedir-pathname)) に書き換えてやればうまくいくはず・・・

ということで /etc/common-lisp/source-registry.conf.d/02-common-lisp-controller-userdir.conf を書き換えてみて再起動してみましたが同じところで停止。

書き換えた部分が関数として評価されてなくてマクロに食わされているようです。
#. リードマクロを使って強制的に評価させてみると通りました。

最終的に
/etc/common-lisp/source-registry.conf.d/02-common-lisp-controller-userdir.confを次のように書き換えました。

;(:directory  #p"~/.clc/systems/")
(:directory #.(merge-pathnames (make-pathname :directory '(:relative ".clc" "systems")) (user-homedir-pathname)))