Packrat::restore() 用于系统依赖

Packrat::restore() for system dependencies

我在 Rstudio 的 Windows 机器上开发了一个 shiny-app。现在我需要在 Linux 机器上开发它,稍后需要将它部署到服务器上。由于需要 运行 应用程序跨平台,我正在研究一些环境控制应用程序,这样我就不必手动调整和重新安装所需的包。

我尝试使用 Packrat 来达到这个目的。我在我的 Windows 机器上做了一个快照,将项目复制并粘贴到我的 Ubuntu,在 RStudio 上重新打开项目,安装 Packrat 并自动恢复包 运行。然后我 运行 遇到了一些需要系统依赖的包没有自动安装的问题,例如rgdal 和 jqr。因此,我不得不在终端中手动安装这些系统依赖项(这花了我一段时间,因为其中大约有 10 个需要额外的系统依赖项)。

我想知道是否有更简单的方法来自动处理这个问题。稍后,我将需要与系统管理员一起将应用程序部署到服务器。我想知道 Packrat 是否具有在 Linux machine/server 上自动安装系统依赖项的能力。如果有人以前遇到过这个问题,或者有其他更好的选择,请告诉我!

谢谢!

您好,欢迎来到 Whosebug。

您面临的问题实际上比您一开始想象的更难解决---部署复杂 R包依赖性跨不同操作系统是一个真正的困难而且,说实话,未解决的问题!

您当然可以使用 packratrenv 作为 R 包依赖项 和特定版本的快照。但这 notsystem-level dependencies 做任何事情,这只是被视为“给定”。所以不要只是转移到另一个盒子并说“abracadabra”。抱歉!

我们最接近解决这个问题的可能是Docker,您可以在其中创建一个可移植执行单元,可以部署在任何地方Docker 运行:Windows,macOS,不同的 Linux 风格,...因为它对所有内容进行编码。