如何使用 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-systemql:quickload 加载此类系统(后者也将解析并下载缺失的依赖项)。

如果 quicklisp 已经安装了不同版本的系统,而 ASDF 恰好先找到了该版本,您可能需要事先ql:uninstall

【讨论】:

如果你将新的 Lisp 库放在 ~/common-lisp/ 下,要让它们在运行的镜像中可见,你必须使用 (asdf:clear-source-registry) 重置源注册表配置,如 asdf documentation 中所述。

以上是关于如何使用 quicklisp 更新依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

在 quicklisp 项目上使用 buildapp 时如何修复 asdf 错误

如何使用 Gradle 版本目录知道是不是存在依赖项更新

如何在 quicklisp 中升级 asdf 版本?

如何使用 NPM 更新开发依赖项?

如何在不作为模块使用的情况下更新第三方库中的依赖项?

更新依赖项后,如何让 Visual Studio Code IDE 更新类型?