如何在 quicklisp 中升级 asdf 版本?

Posted

技术标签:

【中文标题】如何在 quicklisp 中升级 asdf 版本?【英文标题】:How to upgrade asdf version in quicklisp? 【发布时间】:2018-01-06 17:12:49 【问题描述】:

我想编译并运行一个 lisp 源代码来解析 peercoin 区块链,这样我就可以获得前 100 个最富有的地址。我正在使用 lisp 源代码https://github.com/glv2/peercoin-blockchain-parser。 我已经在我的系统上安装了 quicklisp,但是在运行下面的代码时会抛出错误:

debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread #<THREAD "main thread" RUNNING 1002A8AF63>: 
Error while trying to load definition for system bordeaux-threads from
pathname /home/deepchand/quicklisp/dists/quicklisp/software/bordeaux-threads-v0.8.5/bordeaux-threads.asd: 
READ error during COMPILE-FILE: 
You need ASDF >= 3.1 to load this system correctly.
(in form starting at line: 1, column: 0, file-position: 0)

如何更新 asdf 以解决此错误?

【问题讨论】:

遇到此类错误请提供(lisp-implementation-type)(lisp-implementation-version)的结果。 @coredump 结果:(lisp-implementation-type) "SBCL" 0] (lisp-implementation-version) "1.1.14.debian" 0] 我建议只获取更新版本的 SBCL (1.3.20)。但我仍然想要这个问题的答案:) 【参考方案1】:

对于其他 lisp 实现,比如 LispWorks,你可以通过从 asdf 网站下载 asdf.lisp 3.1 或更高版本,然后将

(load "asdf.lisp")

在加载 quicklisp 之前的初始化文件中。 LispWorks[1] 建议你也这样做

(provide "asdf")

为我工作。

[1]http://www.lispworks.com/documentation/lw61/LW/html/lw-312.htm

【讨论】:

【参考方案2】:

见https://common-lisp.net/project/asdf/asdf.html#Upgrading-ASDF

你可以

从 git 下载官方 tarball 或签出版本到 ~/common-lisp/asdf/。

然后它应该在启动时找到。我想就是这样(我最近做了,不记得其他步骤了)。

【讨论】:

【参考方案3】:

以下内容对我有用。

    从https://common-lisp.net/project/asdf/asdf.html 下载您想要的 asdf.lisp 版本。就我而言,我从位于 /usr/share/common-lisp/source 的系统安装副本中复制了我的副本

    将新副本放入 ~/quicklisp 目录或您的 quicklisp 所在的任何目录中,覆盖该目录中的旧 asdf.lisp。

    删除 ~/quicklisp/cache 目录。

    重启你的 lisp。重新填充 ~/quicklisp/cache 目录需要一些时间,所以请耐心等待。

【讨论】:

以上是关于如何在 quicklisp 中升级 asdf 版本?的主要内容,如果未能解决你的问题,请参考以下文章

在 quicklisp 项目上使用 buildapp 时如何修复 asdf 错误

如何使用 quicklisp 更新依赖项?

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

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

asdf 命令不再在 tmux 会话中工作

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