racket - 有没有办法指定 raco 应该在哪里安装软件包?

标签 racket raco

许多语言的包管理系统在给定项目的根存储库的子文件夹中安装第三方包。 (例如 node_modules/deps/ 等)这很好,因为它允许单个包的多个版本很好地共存,因为每个版本都与依赖的项目隔离在上面。

raco 默认情况下似乎在系统范围内安装软件包。有没有办法告诉 raco 它应该在特定文件夹中安装包?

最佳答案

评论给你点对了package scopes :使用目录包范围是包管理器级别可用的最细粒度的控制级别。然而,正如文档所说,

Conflict checking disallows installation of the same or conflicting package in different scopes …

Racket 包系统的设计决定不允许同一个包的多个版本共存于同一个安装中。这个想法是一个包不应该在使用相同的名称时进行重大更改。提到的一个灵感来自像 Debian 的操作系统级包系统,其中 gcc-4.7gcc-4.8 是安装不同二进制文件的不同包。这与其他一些语言包系统(例如 npm)的做法非常不同,但在实践中效果很好,因为 Racket 社区非常重视向后兼容性。

这其实是Racket的第二个包系统。旧系统,PLaneT ,试图更加自以为是,包括版本控制的内置概念。新/当前系统有意识地删除了其中一些元素,以创建一个更小、更集中的包系统,这意味着以前必须“内置”到 Racket 的大量内容现在可以只是另一个包。您可能对 talk 感兴趣关于包系统的设计。当时在邮件列表上也有相当多的讨论,即archived here。 .

如果你确实发现你需要不同的包版本到现有机制无法支持的程度,你可以使用独立的 Racket 安装(而不是系统范围的安装)来获得一个完全隔离的环境。我相信 Racket 社区也有兴趣了解您在实践中遇到的任何问题。

关于racket - 有没有办法指定 raco 应该在哪里安装软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56764556/

相关文章:

scheme - Racket/Scheme 编译为单个二进制文件,没有依赖项? FFI 和静态链接

racket - raco 在哪里安装软件包?

linker - 将 Racket 程序链接到 Fortran 库

scheme - 从命名空间映射符号重新内部化符号

lisp - 将列表中的字符串转换为 Racket 中的数字?

variables - 如何知道是否定义了 Racket 变量

scheme - 使用Scheme检测二进制文件中的EOF

recursion - Racket/Scheme 中的 zip 函数