【问题标题】:How to update a dependency with quicklisp?如何使用 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。我也会对更好的解决方案感兴趣。我不知道是否有讨论/计划的改进。

标签: common-lisp sbcl quicklisp asdf 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 中所述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2013-01-24
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
相关资源
最近更新 更多