在正常使用SBCL时,我想尝试使用CCL进行一些测试,并通过homebrew在我的计算机上安装它。这很好,但我没有将quicklisp与CCL结合使用。如果我试图加载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实现并行使用。
如果我按照建议的这里检查ASDF的版本,就会得到"3.1.5"作为已安装的版本,这应该是最近的版本。
我有什么明显的遗漏吗?
发布于 2019-12-26 11:39:57
我想我找到了它:我的~/.cache目录中有一些旧的数据来自于另一次安装ccl的尝试。删除它之后,我可以在没有任何错误的情况下加载quicklisp的setup.lisp。
请告知我是否应该删除我的问题或留在这里,以防止别人重复我的错误。
发布于 2020-01-04 14:54:43
请注意,各种Lisps都有一些启动文件。其中一些是默认的:
来自CCL的文档:
默认情况下,Clozure将在主目录中查找名为ccl-init.lisp的文件,并在启动时加载它。在Unix系统上,它还将查找.ccl-init.lisp。
CCL使用一个名为ccl-init.lisp的普通lisp文件,该文件在unix系统上通常放在您的主页路径上。因此,您可以在该文件中添加以下行(在我的Ubuntu机器上,它的路径是/home/.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通信。
https://stackoverflow.com/questions/59487850
复制相似问题