我从Python世界来到Lisp,它基本上运行在virtualenv
和pip
上,作为创建容器和管理依赖项的方法。
目前,我正在更详细地学习Common Lisp,并想知道它的社区理念是如何管理依赖关系和包。
例如,如果我跑:
(ql:quickload '(cl-who hunchentoot parenscript elephant fiveam css-lite cl-json))
据我所知,所有这些软件包都将安装在quicklisp
目录中的某个位置。 (我不确定它们的安装形式或位置。)
问题是,是否有必要安装不同版本的软件包,具体取决于手头的代码。也就是说,那个人做了什么?他只是依靠包的向后兼容性吗?
Common Lisp世界如何解决这个问题?
答案 0 :(得分:5)
如果您需要特定版本的软件包进行开发,则只需将其克隆到Quicklisp(~/quicklisp/local-projects/
)自动找到的存储库中。该版本将适用于所有项目。如果您需要将其作为项目本地,或者通过应用程序轻松发送依赖项列表,则可以使用Qlot,这非常类似于pip需求文件和venv。
在另一个答案中也指出了Quicklisp bundles。
更重要的是,有Quicklisp controller来构建dists,一整套协同工作的程序包,就像Quicklisp一样,但是对于你自己的相关软件包集合。这就是cl21所做的事情。
我建议你不要再打扰那些,直到你知道你需要它为止;)