系统依赖项的Packrat::restore()

系统依赖项的Packrat::restore(),r,ubuntu,package-managers,packrat,renv,R,Ubuntu,Package Managers,Packrat,Renv,我在Rstudio的Windows机器上开发了一个闪亮的应用程序。现在我需要在Linux机器上开发它,以后需要在服务器上部署它。由于需要跨平台运行应用程序,我正在研究一些环境控制应用程序,这样我就不必手动调整和重新安装所需的软件包 我试着用Packrat来达到这个目的。我在我的Windows机器上制作了一个快照,将该项目复制并粘贴到我的Ubuntu上,在RStudio上重新打开该项目,安装了Packrat,软件包的恢复自动运行。然后我遇到了一个问题,即一些需要系统依赖关系的软件包没有自动安装,例

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

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

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


谢谢大家!

大家好,欢迎来到StackOverflow

您面临的问题实际上比您一开始想象的要困难得多——跨不同操作系统部署复杂的R包依赖关系是一个真正困难的问题,说实话,这是一个尚未解决的问题

当然,您可以使用
packrat
renv
来获取特定版本的R包依赖项和快照。但这对系统级依赖项没有任何作用,这些依赖项只是被视为“给定的”。所以,不要只是转到另一个盒子里说“abracadabra”。对不起


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

谢谢你,德克。我想接下来的方法是使用Docker。是的,这也有点取决于你到底想做什么——例如,Shiny变得如此流行的一个原因是它“去掉了R”:同事/用户/客户只需要一个web浏览器。类似地,通过网络传输的API只需要联网,但随后需要一台服务器。不断地。R包已经是一个相当便携的“单元”,所以这也是一个选择。