2

我使用 quicklisp 作为 SBCL 的包管理工具。

但是,有时我发现通过ql:quickload. (比如我(ql:quickload "xmls")用来安装xmls,其他用户就不能用了。)

更糟糕的是,我想将 lisp 代码作为脚本运行。所以我在使用quicklisp安装的包的时候,很不爽的需要加上那个包的绝对路径,比如:

#!/usr/bin/sbcl --script
(require 'xmls "..../quicklisp/dists/quicklisp/software/xmls-1.4/xmls")

如果我使用,编译器将无法工作,因为如果我使用这些选项(require 'xmls),它将找不到该包。--script

有谁知道如何解决这个问题,以便我可以同时使用--scriptrequire(无需添加绝对路径)?

4

2 回答 2

4

我不知道解决这个问题的好方法。我使用的解决方案是不使用 Common Lisp 编写脚本;我通常编写我在 CL 会话中以交互方式使用的应用程序。当我确实想从命令行运行东西时,我使用buildappql:write-asdf-manifest-file创建一个文件以传递给--manifest-filebuildapp。

我有时希望有一个更好的解决方案,但这可能需要某人(希望不是我)做一些工作。

于 2012-05-10T19:20:26.197 回答
0

我只是这样做sudo sbcl,这样它就会为我的 PC 上的每个用户安装 - 没关系,因为它是我的家用 PC,所以没有危险。

我能想到的一件事可能是将 ql 安装东西的目录符号链接到更容易访问的东西,比如 $HOME/packages -> .../quicklisp/software 什么的?

于 2012-05-10T21:55:33.410 回答