Не удается использовать quicklisp с clozure-cl

При использовании SBCL обычно я хочу попробовать CCL для некоторого тестирования и установил его через homebrewна моем компьютере. Это сработало, но я не могу использоватьquicklisp с участием CCL. Если я попытаюсь загрузить quicklispsetup.lisp Я получаю следующее сообщение об ошибке:

➜  ~ ccl64
Clozure Common Lisp Version 1.11.6  DarwinX8664

For more information about CCL, please see http://ccl.clozure.com.

CCL is free software.  It is distributed under the terms of the Apache
Licence, Version 2.0.
? (require 'asdf)
ASDF
("uiop" "UIOP" "asdf" "ASDF")
? (load "~/quicklisp/setup.lisp")                        
> Error: There is no package named "ASDF/SYSTEM-REGISTRY" .
> While executing: CCL::%FASL-NVPACKAGE, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry finding package with name "ASDF/SYSTEM-REGISTRY".
> Type :? for other options.
1 > :POP

Я не мог найти простого решения в Интернете. CCL приходит с ASDF в качестве (require 'ASDF)работает. В документации quicklisp я не смог найти ничего о дополнительных усилиях по использованию его с двумя реализациями lisp параллельно.

Если я проверю версию ASDF, как предложено здесь, я получу"3.1.5" как установленная версия, которая должна быть последней.

Есть ли что-то очевидное, что мне не хватает?

2 ответа

Решение

Я думаю, что нашел: у меня были старые данные в моем ~/.cache каталог из другой попытки установки ccl. После удаления я могу загрузить quicklispsetup.lisp без ошибок.

Пожалуйста, посоветуйте, если я должен удалить свой вопрос или оставить его здесь, чтобы другие не повторили мои ошибки.

Обратите внимание, что у разных Lisp'ов есть файлы запуска. Некоторые из них по умолчанию:

  • SBCL: ~/.sbclrc
  • CLISP: ~ /.clisprc.lisp
  • Закрытие: ~/.ccl-init.lisp

Из документации CCL:

По умолчанию Clozure CL будет искать файл с именем ccl-init.lisp в вашем домашнем каталоге и загружать его при запуске. В системах Unix он также будет искать.ccl-init.lisp.

CCL использует обычный файл lisp с именем ccl-init.lisp, который в системах unix обычно помещается в ваш домашний путь. Таким образом, вы можете добавить следующие строки в этот файл (на моем компьютере с Ubuntu это путь /home/me/.ccl-init.lisp), который указывает CCL загружать quicklisp при запуске:

#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

Этого достаточно, чтобы ваш CCL мог взаимодействовать с quicklisp.

Другие вопросы по тегам