gpt4 book ai didi

shiny-server - 在 shiny-server 上使用 ROracle 连接到 Oracle 数据库

转载 作者:行者123 更新时间:2023-12-04 05:15:02 24 4
gpt4 key购买 nike

我们最近能够得到一个小型的 redhat 服务器来试验 shiny-server。我们的 IT 部门让 shiny-server 运行并安装了 Oracle 客户端,但我无法让 ROracle 在 shiny-server 中工作。他们(IT)已经确定这是一个应用程序问题并开始放弃......

最初 ROracle 根本无法在服务器上运行,但我们通过在我的 .bashrc 文件中设置 LD_LIBRARY_PATH 使其从我的用户帐户运行。完成后,我可以登录到服务器,并从 R 查询数据库。我什至可以使用 runApp() 从 R 运行我 Shiny 的应用程序。

当我尝试通过 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 变量之前在我的帐户上遇到的错误相同。服务器以 shiny 用户身份运行,但显然不会运行任何启动脚本,因此为我的用户修复它的内容不会为 shiny 用户修复它。这完全超出了我的知识范围,正如我所说,我们的 IT 部门说他们没有想法。

我没有对服务器的 sudo 访问权限,所以我可以尝试的事情是有限的。在使用 Sys.setenv() 和使用 system() 加载 ROracle 之前,我尝试从我的 server.R 脚本设置 LD_LIBRARY_PATH,但这些都不起作用。我们的 DBA 一直试图帮助我尝试在/etc/init/shiny-server.conf 中设置 LD_LIBRARY_PATH,但这似乎也不起作用。

我真的希望这里有人有一些想法。

谢谢

最佳答案

经过令人沮丧的几天后,我找到了解决方案。您需要在位于/etc/init/shiny-server.conf 的 upstart 脚本中设置 LD_LIBRARY_PATH 变量,但根据 upstart documentation ,您需要使用 env 关键字来定义它。所以添加:

env LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH

到 shiny-server.conf 脚本的开头似乎已经解决了这个问题。

关于shiny-server - 在 shiny-server 上使用 ROracle 连接到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21585497/

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