在 Ubuntu 18.04 上安装新 R 后安装 R 依赖项时出错
Errors during installation of R dependencies after new R installation on Ubuntu 18.04
系统: Ubuntu 18.04
提示我尝试重新安装 R 和依赖项的原始错误:
Error: package or namespace load failed for 'lubridate' in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/usr/local/lib/R/site-library/stringi/libs/stringi.so': libicui18n.so.57: cannot open shared object file: No such file or directory
重现步骤:
- 安装 R:
apt install r-base
- 尝试安装 R 依赖项:
install.packages(c("dplyr", "lubridate", "qcc", "forecast"), repos='http://cran.us.r-project.org')
安装过程中显示的错误:
/usr/local/lib/R/site-library/BH/include/boost/smart_ptr/scoped_ptr.hpp:74:31: warning: 'template<class> class std::auto_ptr' is deprecated
安装后显示的错误:
The downloaded source packages are in
'/tmp/RtmpnulsEe/downloaded_packages'
Warning message:
In install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi"), :
installation of package 'forecast' had non-zero exit status
清除并重新安装 r-base
和 R 依赖项后,我看到了这个...(已经检查过 libcurl4-openssl-dev
是最新版本):
Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
更新: 显然它在 forecast
库中,因为我重现了这样的错误:
$ R
> library(forecast)
Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
您最初的问题是 stringi
是针对 libicu
的 发行包 版本构建的,该版本发生了变化。由于此分发包不知道您在 /usr/local 中有 lubridate
,因此它会更改并破坏内容。
有多种方法可以解决此问题。最简单(也是最窄)的方法是确保安装了 libicu-dev
。然后您可以重新安装(即:重建 stringi
),然后 lubridate
将加载。
其余的你只是有点疯狂地把所有可以移动的东西都扔到墙上。您需要花点时间意识到您可以或者将所有这些安装为二进制文件(即从启动板的 Michael Rutter PPA),或者从资源。您的来电。我有一个较早的答案来解释差异 here(以及此处的其他后续行动),我们也在 r-sig-debian
列表上提供帮助。
但简而言之:阅读此 README at CRAN(尤其是前几段)并考虑 PPA。
尝试以下操作后(在每个步骤之间清除并重新安装 R):
apt purge r-base
- Added/removed 几个不同的 PPA 在意识到 none 之前支持 Bionic Beaver。结果:
Release not found
.
- 找到 Michael Rutter 的 PPA 并尝试使用它。结果:与上面相同的错误消息 (
'CURL_OPENSSL_3' not found
)。
- 正在尝试对此 SO article 的几种解决方案。结果:与上面相同的错误消息 (
'CURL_OPENSSL_3' not found
)。
读取 this article 并在 R 中执行以下操作:
> remove.packages("curl")
> install.packages("curl")
> install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi", "curl"), repos='http://cran.us.r-project.org')
一切都按预期进行。
系统: Ubuntu 18.04
提示我尝试重新安装 R 和依赖项的原始错误:
Error: package or namespace load failed for 'lubridate' in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/usr/local/lib/R/site-library/stringi/libs/stringi.so': libicui18n.so.57: cannot open shared object file: No such file or directory
重现步骤:
- 安装 R:
apt install r-base
- 尝试安装 R 依赖项:
install.packages(c("dplyr", "lubridate", "qcc", "forecast"), repos='http://cran.us.r-project.org')
安装过程中显示的错误:
/usr/local/lib/R/site-library/BH/include/boost/smart_ptr/scoped_ptr.hpp:74:31: warning: 'template<class> class std::auto_ptr' is deprecated
安装后显示的错误:
The downloaded source packages are in
'/tmp/RtmpnulsEe/downloaded_packages'
Warning message:
In install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi"), :
installation of package 'forecast' had non-zero exit status
清除并重新安装 r-base
和 R 依赖项后,我看到了这个...(已经检查过 libcurl4-openssl-dev
是最新版本):
Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
更新: 显然它在 forecast
库中,因为我重现了这样的错误:
$ R
> library(forecast)
Error: package or namespace load failed for 'forecast' in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/curl/libs/curl.so':
/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/local/lib/R/site-library/curl/libs/curl.so)
您最初的问题是 stringi
是针对 libicu
的 发行包 版本构建的,该版本发生了变化。由于此分发包不知道您在 /usr/local 中有 lubridate
,因此它会更改并破坏内容。
有多种方法可以解决此问题。最简单(也是最窄)的方法是确保安装了 libicu-dev
。然后您可以重新安装(即:重建 stringi
),然后 lubridate
将加载。
其余的你只是有点疯狂地把所有可以移动的东西都扔到墙上。您需要花点时间意识到您可以或者将所有这些安装为二进制文件(即从启动板的 Michael Rutter PPA),或者从资源。您的来电。我有一个较早的答案来解释差异 here(以及此处的其他后续行动),我们也在 r-sig-debian
列表上提供帮助。
但简而言之:阅读此 README at CRAN(尤其是前几段)并考虑 PPA。
尝试以下操作后(在每个步骤之间清除并重新安装 R):
apt purge r-base
- Added/removed 几个不同的 PPA 在意识到 none 之前支持 Bionic Beaver。结果:
Release not found
. - 找到 Michael Rutter 的 PPA 并尝试使用它。结果:与上面相同的错误消息 (
'CURL_OPENSSL_3' not found
)。 - 正在尝试对此 SO article 的几种解决方案。结果:与上面相同的错误消息 (
'CURL_OPENSSL_3' not found
)。 读取 this article 并在 R 中执行以下操作:
> remove.packages("curl") > install.packages("curl") > install.packages(c("dplyr", "lubridate", "qcc", "forecast", "stringi", "curl"), repos='http://cran.us.r-project.org')
一切都按预期进行。