如何通过QuickLisp将安装包用于SBCL的系统目录?

时间:2012-05-10 18:46:16

标签: functional-programming lisp common-lisp sbcl quicklisp

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

但是,有时我发现通过ql:quickload将包安装到当前用户的HOME目录不太方便。 (例如,如果我使用(ql:quickload "xmls")安装xmls,则其他用户无法使用它。)

更糟糕的是,我想将lisp代码作为脚本运行。因此,当我使用quicklisp安装的软件包时,我需要不舒服地添加该软件包的绝对路径,例如:

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

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

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

2 个答案:

答案 0 :(得分:4)

我不知道这个问题有一个很好的解决方案。我使用的解决方案是不用Common Lisp编写脚本;我经常编写从CL会话中交互使用的应用程序。当我想从命令行运行时,我会使用buildapp,并使用ql:write-asdf-manifest-file创建一个文件,以便传递给build --manifest-file

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

答案 1 :(得分:0)

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

我能想到的一件事情可能是将ql安装内容的目录符号链接到更易于访问的内容,例如$ HOME / packages - > ... / quicklisp /软件或什么?