gpt4 book ai didi

r - packrat.lock 中的哈希值是什么?

转载 作者:行者123 更新时间:2023-12-03 17:34:41 25 4
gpt4 key购买 nike

我正在使用 Packrat 为我的 R 项目设置一个 git 工作流程。每次我packrat::snapshot()我的工作区,文件 packrat.lock随着新包/版本等发生变化,但它也会更改每个包的哈希行,这在检查文件差异以查看从一个提交到另一个提交的更改时有点烦人。

这个Hash真的有必要吗?如果没有,有什么办法可以禁用它吗?

最佳答案

哈希由 stash 的 hash() 生成函数在 packrat库,它用作包一致性检查。
该算法生成一个 md5sum这是基于 DESCRIPTION包 tarball 中包含的文件,但还涉及其他逻辑,请参阅 lines #103-#107 packrat/R/cache.R 来源在 Github。
为了获取packrat的HASH预计在 packrat.lock 中找到文件直接调用 hash()必须做出功能。这个函数是未曝光 在编译包中,因此访问它的唯一方法是使用 packrat来源。

  • 获取 packrat 源的副本来自 CRAN 的库,版本正确
  • 将其解压缩到一个文件夹中(在我的示例中是 packrat-0.5.0 )
  • 启动 R session

  • 以下几行演示了如何为包 BH-1.66.0-1 生成哈希值( 4cc8883584b955ed01f38f68bc03af6d ):
    # md5sum() function is neeeded
    library(tools)

    # relevant source code files are loaded
    source('packrat-0.5.0/R/utils.R') # readDcf() function
    source('packrat-0.5.0/R/cache.R') # packrat's hash() function

    # execute the hash() function on the DESCRIPTION file in the package
    print(hash('/usr/local/lib/R/site-library/BH/DESCRIPTION'))
    这应该返回 4cc8883584b955ed01f38f68bc03af6d 的正确 HASH .
    我不知道 packrat 中的任何选项这将允许您禁用 HASH 检查。如果您的目标是手动修改 packrat.lock文件来改变包版本,当然可以通过执行这个技巧。
    这可以帮助克服一些小的依赖性问题。但是,有两个危险:
  • 这样的包版本变化可能会引发一连串的依赖升级需求
  • 由于兼容性问题,您的应用程序中出现错误
  • 关于r - packrat.lock 中的哈希值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284336/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com