如何使用 QuickLisp 将软件包安装到 SBCL 的系统目录中



我正在使用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(无需添加绝对路径)?

我不知道

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

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

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

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

最新更新