许多语言的程序包管理系统将第三方程序包安装在给定项目的根存储库的子文件夹中。 (例如node_modules/
,deps/
等),这很不错,因为它允许单个软件包的多个版本很好地共存,因为每个版本都独立于依赖于它的项目。
raco
默认情况下会在系统范围内安装软件包。有没有办法告诉raco
应该在特定文件夹中安装软件包?
答案 0 :(得分:1)
使用该注释可以使您指向package scopes:在目录管理器级别,使用目录软件包作用域是最精细的控制级别。但是,正如文档所说,
冲突检查不允许安装相同或冲突的计算机 在不同范围内打包...
在Racket软件包系统中,一项设计决定是不允许同一软件包的多个版本在同一安装中共存。想法是,在使用相同名称时,程序包不应进行重大更改。提到的一个灵感是像Debian这样的OS级别的软件包系统,其中gcc-4.7
和gcc-4.8
是安装不同二进制文件的不同软件包。这与某些其他语言包系统(例如npm)的做法有很大不同,但是在实践中效果很好,因为Racket社区非常重视向后兼容。
这实际上是Racket的第二个包装系统。旧系统PLaneT试图变得更加自以为是,其中包括内置的版本控制概念。新的/当前的系统有意识地删除了其中的一些元素,以创建一个更加最小化和集中的软件包系统,这意味着以前必须“内置”到Racket的大量内容现在可以只是另一个软件包。您可能对talk的包装系统设计感兴趣。邮件列表archived here上当时还有很多讨论。
如果确实需要不同的软件包版本,而现有机制无法支持这些软件包,则可以使用独立的Racket安装(而不是系统范围的安装)来获得完全隔离的环境。我确信Racket社区也会对您在实践中遇到的任何问题感兴趣。