在CLISP中更新到ASDF 3.x.

时间:2017-07-11 19:38:09

标签: macos common-lisp clisp asdf

我正在尝试将CLISP 2.49(在Mac OS Sierra上)的ASDF更新到版本3.x. 我现在有ASDF版本2.26。 我已经尝试了我在网上找到的所有内容:我按照this中的说明下载了最新版本的ASDF,但是当我评估(require "asdf")时,如手册(https://common-lisp.net/project/asdf/中所示)没有任何反应,我仍然有2.26版本。 该手册还告诉您加载文件asdf.lisp,但新版本文件夹中缺少该文件。 我发现quicklisp有自己的版本asdf.lispasdf.fas,似乎是正在加载的版本,但我不知道如何用任何新版本替换它们。 我现在已经尝试了很多东西,我担心我搞砸了系统。

有谁知道如何可靠且一步一步地将ASDF升级到版本> = 3.0? 非常感谢。

4 个答案:

答案 0 :(得分:6)

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

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

3-如果你从quicklisp获得asdf,就像我想的那样,只需用你的asdf.lisp 3.2.1替换它过时的〜/ quicklisp / asdf.lisp 2.26,然后在〜/ quicklisp / cache中删除缓存/

4-请向Xach投诉将asdf升级到3.1.7或3.2.1。通过分发2.26,Quicklisp正在为lispers做一个伤害。

答案 1 :(得分: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.

答案 2 :(得分:2)

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

找出asdf.lisp 2.6所在的位置。

您可以执行(load "asdf")(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

答案 3 :(得分:1)

好的,我终于明白了,这是上面两个答案的组合。 首先,我没有在我的系统中使用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的帮助!