我们最近能够获得一个小型 redhat 服务器来试验 shiny-server。我们的 IT 部门运行了闪亮服务器并安装了 Oracle 客户端,但我无法让 ROracle 在闪亮服务器中工作。他们(IT)已经决定这是一个应用程序问题,并开始放弃......
最初,ROracle 根本无法在服务器上运行,但我们通过在我的 .bashrc 文件中设置 LD_LIBRARY_PATH 来从我的用户帐户中运行它。完成后,我可以登录服务器,并从 R 查询数据库。我什至可以使用 runApp() 从 R 运行我闪亮的应用程序。
当我尝试通过 shiny-server 访问同一个应用程序时,出现以下错误:
Listening on port 40679
Loading required package: DBI
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/lib64/R/library/ROracle/libs/ROracle.so':
libclntsh.so.11.1: cannot open shared object file: No such file or directory
Error : package or namespace load failed for 'ROracle'
Error : package or namespace load failed for 'ROracle'
这是我在设置 LD_LIBRARY_PATH 变量之前在我的帐户上遇到的相同错误。服务器以闪亮用户身份运行,但显然不会运行任何启动脚本,因此为我的用户修复它的内容不会为闪亮用户修复它。这一切都远远超出了我的知识领域,正如我所说,我们的 IT 部门说他们没有想法。
我没有对服务器的 sudo 访问权限,所以我可以尝试的东西是有限的。在使用 Sys.setenv() 和使用 system() 加载 ROracle 之前,我尝试从我的 server.R 脚本设置 LD_LIBRARY_PATH ,但这些都不起作用。我们一直试图帮助我的 DBA 尝试在 /etc/init/shiny-server.conf 中设置 LD_LIBRARY_PATH 但这似乎也不起作用。
我真的希望这里有人有一些想法。
谢谢