什么是pip需求文件,ruby gemfile,node package.json等的lisp等价物?我不完全确定asdf和quicklisp是如何关联的,如果这些是适当的使用方法。
答案 0 :(得分:4)
.asd文件是需求文件。使用quicklisp安装需求。
使用ASDF定义“系统”。创建my-system.asd
文件。
(asdf:defsystem #:my-system
:serial t
:description "Describe my-system here"
:author "My Name <my.name@example.com>"
:license "Specify license here"
:depends-on (#:hunchentoot
#:cl-who)
:components ((:file "package")
(:file "dispatch")))
这将创建名为#:my-system的系统。我真的不确定#表示什么,因为我在源代码中没有看过系统定义。只需要第一行。 :depends-on
告诉ASDF在处理此新系统定义之前加载其他系统。在这种情况下,它会加载#:hunchentoot
和#:cl-who
。 :components
加载特定文件。已加载package.lisp
和dispatch.lisp
。 :serial t
告诉它按顺序加载它。如果dispatch.lisp
取决于package.lisp
中的某些内容,则需要首先加载package.lisp
,这一点非常重要。
使用quicklisp在:depends-on
下载和安装依赖项。跑
(ql:quickload "my-system")
。
我没有看到任何版本控制的迹象。
答案 1 :(得分:1)
首先,pip的requirements.txt
与rubygem或节点的package.json
非常不同:前者仅指定依赖关系,而后者则描述包,包括其依赖关系。
Python的pip
实际上也依赖于类似的包描述格式,称为“eggs”。
与rubygem直接相当的是ASDF defsystem
形式,通常放在文件<system-name>.asd
中(“系统”是Lisp的术语,可称为包,模块或其他语言的图书馆 - 有关更详细的说明,请参阅here。
两个主要区别是:
ASDF还允许指定如何构建(以及加载,测试等)系统(有点等同于makefile) - AFAIK,在rubygems或节点中没有这样的概念
与gems或节点不同,ASDF不提供下载和安装软件包的机制。这是quicklisp
的用武之地 - 它涉及获取ASDF系统。但ql
不是唯一的方法:历史上还有其他方法可以安装ASDF库,包括ASDF-Install
和clbuild
,其他方法可能会在未来出现
答案 2 :(得分:1)
对于与ASDF和Quicklisp的关系,其他答案给出了一个很好的方法。
我想说的是,现在你可以使用一个非常类似于尖头的常见lisp库,可以在quicklisp上找到,Qlot。它用于指定项目本地依赖项。它与ruby中的bundle和gemfile非常相似。
在2015-04-28中也可以使用quicklisp bundles Quicklisp库包是从Quicklisp导出并可加载而不涉及Quicklisp的自包含系统集。
答案 3 :(得分:0)
没有与上述相同的一对一。然而,ASDF + Quicklisp组合非常接近。
使用ASDF,您可以定义系统(模块,如果您愿意) - 以一致的方式打包您的lisp文件,并声明您的依赖项。 Quicklisp是这些系统的源的在线存储库。当您使用Quicklisp加载系统时,它将下载这些依赖项并为您加载它们。
现在我不确定是否存在版本控制......