为何renv无法找到特定版本的data.table包?
排查renv.lock导致Docker中data.table安装失败的关键点
针对你遇到的问题,重点检查renv.lock文件中data.table条目下的以下内容:
Source字段:确认该字段值是CRAN还是Posit Package Manager(PPM)。CRAN会定期移除旧版本包,若本地snapshot时依赖的是PPM归档,但lock文件里没指定PPM作为源,Docker构建时renv默认从CRAN拉取,就会找不到1.14.6版本。Hash字段:这个值是包的校验和,下载长度不匹配通常是因为lock文件中的哈希与源上实际包文件的哈希不一致。可能是本地snapshot后源上的包文件被更新,或者lock文件生成时出现了校验和错误。Repository字段:检查是否明确指定了包的仓库地址。如果本地用的是PPM的特定镜像,但lock文件里没记录这个仓库,Docker构建时会使用renv默认仓库,可能无法访问到归档的旧版本。Requirements(依赖)条目:查看是否有其他依赖包的版本限制,间接导致data.table 1.14.6的安装路径出现问题(不过你升级到1.14.10后正常,这点优先级较低)。
补充说明:你升级到1.14.10能正常安装,大概率是因为该版本在CRAN仍处于活跃状态,而1.14.6已被CRAN清理,但PPM归档还保留着——如果lock文件没指定PPM作为源,Docker就会从CRAN拉取失败。
内容的提问来源于stack exchange,提问作者Gregor Thomas
相关产品推荐
相关产品推荐

