许多语言的包管理系统在给定项目的根存储库的子文件夹中安装第三方包。(如node_modules/、deps/等)这很好,因为它允许单个包的多个版本很好地共存,因为每个版本都与依赖它的项目隔离。
默认情况下,raco在系统范围内安装软件包。有没有办法告诉raco应该在特定文件夹中安装软件包?
发布于 2019-06-28 22:31:11
这个注释正确地指出了包装范围:使用目录包范围是包管理器级别上可用的最细粒度的控制级别。然而,就像医生说的,
冲突检查不允许在不同范围(…)中安装相同或冲突的包。
这是一个设计决策,在球拍包装系统,不允许多个版本的同一包共存在同一安装。这样做的想法是,包在使用相同的名称时不应该进行破坏性的更改。提到的灵感之一是像Debian这样的操作系统级软件包系统,其中gcc-4.7和gcc-4.8是安装不同二进制文件的不同包。这与其他语言包系统(如npm)的实践非常不同,但在实践中效果很好,因为球拍社区非常重视向后兼容性。
这实际上是球拍的第二套包装系统。旧系统PLaneT试图变得更加固执己见,包括内置的版本控制概念。新的/当前的系统有意识地删除了其中的一些元素,以创建一个更小和重点更集中的包系统,这意味着许多以前必须“内置”的东西现在可以仅仅是另一个包了。您可能对有关包系统设计的谈话感兴趣。在邮件列表上,也有相当多的讨论,也就是存档在这里。
如果您确实发现您需要不同的包版本,在某种程度上不能被现有的机制所支持,您可以使用一个独立的Racket安装(而不是一个系统范围的安装)来获得一个完全隔离的环境。我相信球拍界也会对你在实践中遇到的任何问题感兴趣。
https://stackoverflow.com/questions/56764556
复制相似问题