无法将 quicklisp 与 clozure-cl 一起使用

Posted

技术标签:

【中文标题】无法将 quicklisp 与 clozure-cl 一起使用【英文标题】:Fail to use quicklisp with clozure-cl 【发布时间】:2020-04-16 15:54:03 【问题描述】:

虽然通常使用SBCL,但我想尝试CCL 进行一些测试,并通过homebrew 在我的计算机上安装它。效果很好,但我无法将quicklispCCL 一起使用。如果我尝试加载 quicklisp 的 setup.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 实现并行使用的额外努力。

如果我按照here 的建议检查 ASDF 的版本,我会得到 "3.1.5" 作为安装版本,这应该是最新的。

我有什么明显的遗漏吗?

【问题讨论】:

【参考方案1】:

我想我找到了:我的~/.cache 目录中有一些旧数据来自另一次尝试安装ccl。删除后,我可以毫无错误地加载 quicklisp 的setup.lisp

请告知我是否应该删除我的问题或将其留在这里以防止其他人重复我的错误。

【讨论】:

【参考方案2】:

请注意,各种 Lisp 都有一些启动文件。其中一些是默认的:

SBCL:~/.sbclrc CLISP:~/.clisprc.lisp 闭包:~/.ccl-init.lisp

来自CCL的documentation:

默认情况下,Clozure CL 将在您的主目录中查找名为 ccl-init.lisp 的文件,并在启动时加载它。在 Unix 系统上,它也会查找 .ccl-init.lisp。

CCL 使用一个名为 ccl-init.lisp 的普通 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 进行通信。

【讨论】:

感谢您的回答!正如我在回答中所写的那样,问题不是加载 quicklisp 本身,而是之后加载 ASDF 的过程。

以上是关于无法将 quicklisp 与 clozure-cl 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地项目添加到quicklisp配置的asdf

如何使用 quicklisp 更新依赖项?

如何让 Emacs/Slime/SBCL 识别 quicklisp 包

如何获取 Quicklisp 提供的每个系统的所有依赖项列表?

如何在 quicklisp 中升级 asdf 版本?

UIOP 无法识别本地昵称关键字