6

I am trying to update ASDF in CLISP 2.49 (on Mac OS Sierra) to version 3.x. I have now version 2.26 of ASDF. I have tried everything I found online: I downloaded the latest version of ASDF as indicated in https://common-lisp.net/project/asdf/ but then when I eval (require "asdf"), as indicated in the manual (https://common-lisp.net/project/asdf/asdf.html#Upgrading-ASDF) nothing happens, I still have version 2.26. The manual also tells to load the file asdf.lisp, but the file is missing from the new version folder. I discovered that quicklisp had its own version of asdf.lisp and asdf.fas, which seem to be the ones being loaded, but I don't see how to replace them with any new version. I have tried so many things now that I'm afraid I'm screwing the system up.

Does anyone know how to upgrade ASDF to a version >= 3.0 reliably and step by step? Thanks a lot.

4

4 回答 4

8

1- 要从源代码生成 asdf.lisp,make请输入 asdf git checkout。

2-(load (compile-file ...))每次都会重新编译它。您可能只想编译一次,然后覆盖通常与它一起使用的任何 fasl。

3-如果您从 quicklisp 获得 asdf,就像我想的那样,只需将其过时的 ~/quicklisp/asdf.lisp 2.26 替换为您的 asdf.lisp 3.2.1,然后清除 ~/quicklisp/cache/ 中的缓存

4- 请向 Xach 投诉将其 asdf 升级到 3.1.7 或 3.2.1。Quicklisp 通过分发 2.26 对 lispers 造成了伤害。

于 2017-07-14T03:45:36.367 回答
4

基本上,您需要做的就是将 2.6 替换为 3.2。

找出asdf.lisp2.6 所在的位置。

你可以做(load "asdf")or(require "asdf")看看它是从哪里加载的。让路径成为my/asdf/directory/asdf.lisp

替换文件。

wget https://common-lisp.net/project/asdf/archives/asdf.lisp -O my/asdf/directory/asdf.lisp

编译新的asdf

clisp -norc -c my/asdf/directory/asdf.lisp
于 2017-07-12T20:45:17.857 回答
3

好的,我终于明白了,它是上面两个答案的组合。首先,我的系统中没有 wget,但是我手动下载了文件https://common-lisp.net/project/asdf/archives/asdf.lisp并将其保存在正确的路径中。然后添加了这两行

(load #P"~/quicklisp/setup.lisp")        ; will load asdf 2.26
(load (compile-file #P"~/rc/asdf.lisp")) ; will load asdf 3 over asdf 2.26.

到文件 ~/.clisprc.lisp 现在,重新启动 CLISP 后,我终于得到:

(asdf:asdf-version)
"3.2.1"

非常感谢 Sam 和 Pascal 的帮助!

于 2017-07-12T21:23:21.050 回答
2

asdf 本身是可自我更新的。您只需加载最新版本。

http://paste.lisp.org/display/350703

所以基本上,你在某个地方下载了一个 asdf 3,比如说~/rc/asdf.lisp~/.clisprc.lisp把:

(load #P"~/quicklisp/setup.lisp")        ; will load asdf 2.26
(load (compile-file #P"~/rc/asdf.lisp")) ; will load asdf 3 over asdf 2.26.
于 2017-07-12T19:03:14.937 回答