如何使用 quicklisp 更新依赖项?
Posted
技术标签:
【中文标题】如何使用 quicklisp 更新依赖项?【英文标题】:How to update a dependency with quicklisp? 【发布时间】:2017-12-05 19:02:06 【问题描述】:我已将 quicklisp 更新到最新版本
CL-USER> (ql:update-all-dists)
要检查的 1 个区域。
您已经拥有最新版本的“quicklisp”:2017-06-30。
无
但这并没有将依赖项更新到最新版本,例如。 Hunchentoot 网络服务器是 1.2.35 版本,但由于有错误修复,我需要 1.2.37。
/home/pio/quicklisp/dists/quicklisp/software/hunchentoot-1.2.35/hunchentoot.asd
如何使用 quicklisp 将 Hunchentoot 更新到最新版本 (https://github.com/edicl/hunchentoot/releases/tag/v1.2.37)?
【问题讨论】:
AFAIK Quicklisp 似乎每个月只更新一次,最后一次更新是在 7 月 1 日:blog.quicklisp.org/2017/07/…您现在可能已经有了最新版本的 Hunchentoot。我也会对更好的解决方案感兴趣。我不知道是否有讨论/计划的改进。 【参考方案1】:Ql:quickload
将首先向 ASDF 询问本地可用系统,这发生在 defined order 中。
我通常将所有我想找到的 Lisp 库放在~/common-lisp/
下,这是 ASDF 研究的标准位置,所以它可以正常工作。
如果您有一些其他目录,您可以让 ASDF 知道这些目录。例如,您可以使用文件~/.config/common-lisp/source-registry.conf
:
(:source-registry
(:tree (:home "repos"))
:inherit-configuration)
这将使 ASDF 了解 ~/repos/
目录下的所有 .asd
文件。
然后您可以使用asdf:load-system
或ql:quickload
加载此类系统(后者也将解析并下载缺失的依赖项)。
如果 quicklisp 已经安装了不同版本的系统,而 ASDF 恰好先找到了该版本,您可能需要事先ql:uninstall
。
【讨论】:
如果你将新的 Lisp 库放在~/common-lisp/
下,要让它们在运行的镜像中可见,你必须使用 (asdf:clear-source-registry)
重置源注册表配置,如 asdf documentation 中所述。以上是关于如何使用 quicklisp 更新依赖项?的主要内容,如果未能解决你的问题,请参考以下文章