2

尝试使用 ROracle 时,我收到以下错误消息

>   library("ROracle")
Error: package or namespace load failed for ‘ROracle’:
package ‘ROracle’ was installed before R 4.0.0: please re-install it

我已经安装/下载了 DBI、RTools、oracle isntant 客户端(basic + sdk)并尝试按照这些说明进行操作,但没有成功:ROracle install

我可以很好地下载 ROracle(见下文),所以我对缺少的东西感到困惑。我需要降级版本吗?

>   Roracle_path <- "filepath.../ROracle_1.3-2.zip"
>   install.packages(Roracle_path, repos = NULL)

Installing package into ‘C:/Users/<my username>/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
package ‘ROracle’ successfully unpacked and MD5 sums checked
4

2 回答 2

0

如果您从SOURCES安装软件包,为 R 3.6.x 构建的 ROracle_1.3-2.tar.gz 也适用于 R 4.x。

首先,在 Linux 系统上,您必须安装 Oracle Instant Client basic 和 SDK:

/home/jovyan/R
unzip instantclient-basic-linux.x64-21.4.0.0.0dbru.zip -d /opt/oracle/

unzip instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip -d /opt/oracle

linux 软件包 libaio1 必须安装在系统上:

apt install -y libaio1

接下来,必须设置环境变量:

export PATH="$PATH:/opt/oracle/instantclient_21_4"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/oracle/instantclient_21_4"

最后,可以从 Sources 安装软件包(使用 ROracle_1.3-2.tar.gz (sources) 但不是 ROracle_1.3-2_R_x86_64-linux-gnu.tar.gz (binary) ):

R CMD INSTALL --configure-args='--with-oci-lib=/opt/oracle/instantclient_21_4/ --with-oci-inc=/opt/oracle/instantclient_21_4/sdk/include' ROracle_1.3-2.tar.gz

在安装过程中,您将看到该软件包将从 SOURCES 安装:

 * installing to library ‘/opt/conda/lib/R/library’
 * installing *source* package ‘ROracle’ ...
 ** using staged installation
 configure: creating ./config.status
 config.status: creating src/Makevars
 ** libs
 x86_64-conda-linux-gnu-cc -I"/opt/conda/lib/R/include" -DNDEBUG -I/opt/oracle/instantclient_21_4/sdk/include  -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /opt/conda/include -I/opt/conda/include -Wl,-rpath-link,/opt/conda/lib   -fpic  -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /opt/conda/include -fdebug-prefix-map=/home/conda/feedstock_root/build_artifacts/r-base-split_1639563404388/work=/usr/local/src/conda/r-base-4.1.2 -fdebug-prefix-map=/opt/conda=/usr/local/src/conda-prefix  -c rodbi.c -o rodbi.o
 x86_64-conda-linux-gnu-cc -I"/opt/conda/lib/R/include" -DNDEBUG -I/opt/oracle/instantclient_21_4/sdk/include  -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /opt/conda/include -I/opt/conda/include -Wl,-rpath-link,/opt/conda/lib   -fpic  -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /opt/conda/include -fdebug-prefix-map=/home/conda/feedstock_root/build_artifacts/r-base-split_1639563404388/work=/usr/local/src/conda/r-base-4.1.2 -fdebug-prefix-map=/opt/conda=/usr/local/src/conda-prefix  -c rooci.c -o rooci.o
 x86_64-conda-linux-gnu-cc -shared -L/opt/conda/lib/R/lib -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,-rpath,/opt/conda/lib -Wl,-rpath-link,/opt/conda/lib -L/opt/conda/lib -o ROracle.so rodbi.o rooci.o -L/opt/oracle/instantclient_21_4/ -lclntsh -Wl,-rpath,/opt/oracle/instantclient_21_4/ -L/opt/conda/lib/R/lib -lR
 installing to /opt/conda/lib/R/library/00LOCK-ROracle/00new/ROracle/libs
 ** R
 ** inst
 ** byte-compile and prepare package for lazy loading
 ** help
 *** installing help indices
 ** building package indices
 ** testing if installed package can be loaded from temporary location
 ** checking absolute paths in shared objects and dynamic libraries
 ** testing if installed package can be loaded from final location
 ** testing if installed package keeps a record of temporary installation     path
 * DONE (ROracle)
 #

检查输出中的行以查看它将从 Sources 安装:

     * installing *source* package ‘ROracle’ ...
于 2022-01-17T22:46:30.853 回答
0

我降级到 R 3.6.3 并使用 RTools 35,现在它可以工作了。

于 2021-02-24T22:09:14.513 回答