解决R语言中install_github中无法安装遇到的问题
作者:qq_41858657
首先,让我们来进入常规步骤
我安装的是recharts包,正常的写法呢,就是以下这个样子:
install.packages("devtools") #devtools::install_github("madlogos/recharts")
第一个问题:
然而对于今天的我来说,那就太天真了,首先踏入的第一个坑:
无法打开URL'http://yihui.name/xran/src/contrib/PACKAGES' Warning in install.packages : 从zip文件中抽取1时出了错
类似于无法访问的错误,第一步的解决办法,就是改变包的镜像。
在Tools->Global Options->packages->change->china Beijing.
如下图所示:
这可能是R新版本的默认设置为外国版本,之前的版本上没有遇到过类似镜像的问题,解决完这里,如果是稍微简单点的问题就可以被解决了,然而我的路才刚刚开始。
第二个问题:
要在https://cran.rstudio.com/bin/windows/Rtools/网站中下载rtools错误大概就是这么写的,具体我已经无法还原了,相信这个报错大家都能看懂,下载未被冻结或锁定的rtools,注意安装时要选择自动添加路径,不然还得手动添加,容易出错。这一步下来,正常的包都可以安装了。
第三个问题
错误为:
failed to receive handshake ssl/tls connection failed github
第一种方法:
始终无法访问github,查过许多资料,有一部分说是IE出了问题,在选项中一次勾选SSL之类的,然而我一开始没有找到这个地方,不过好像这个方法蛮简单,大家如果遇到类似问题可以去百度尝试一下,
第二种方法:
很可能是因为你的网络被设置而代理,或者是你有下载翻墙软件串改了你的internet设置,具体操作如下:打开IE浏览器,选择工具->internet选项->连接->局域网设置->点击自动设置(若勾选,则点为不勾选。若不勾选,则点为勾选),下面的LAN设置不要勾选
第三种方法:
打开git bash,输入下列代码
$ git config --global http.sslBackend "openssl" $ git config --global http.sslCAInfo c://program files//R//R-3.6.3//library//openssl//cacert.pem(此为R中cacert.pem的文件路径)
运行完之后退出,重新打开R,再执行安装命令
install.packages("devtools") devtools::install_github("madlogos/recharts")
就OK了。
补充:R安装xml2 (安装devtools)
安装devtools
今天看到了一个R上的一个包,似乎是要用到devtools。发现我linux电脑上的R并没有装devtools这个包。想着直接安装一下,没想到却意外频发。
R:R-4.0.0
devtools需要很多依赖包,用R自带的
install.packages("devtools")
可以很好地解决这些问题,但是发现安装失败。仔细检查后发现是安装xml2的时候出现了意外。
xml2这个包没有装上,导致了最终devtools没有安装成功。
安装xml2时报错:
Error : unable to load shared object '/home/Litedg/Programs/R-4.0.0/lib64/R/library/00LOCK-xml2/00new/xml2/libs/xml2.so': libiconv.so.2: cannot open shared object file: No such file or directory
开始以为是没有装libxml2、libxml2-devel。用yum装过了一下,发现只是版本有些旧,但还是有的。
然后发现在报错的最前面:
--- Please select a CRAN mirror for use in this session ---
trying URL 'https://cloud.r-project.org/src/contrib/xml2_1.3.2.tar.gz'
Content type 'application/x-gzip' length 271876 bytes (265 KB)
==================================================
downloaded 265 KB
* installing *source* package 'xml2' ...
** package 'xml2' successfully unpacked and MD5 sums checked
** using staged installation
Found pkg-config cflags and libs!
Using PKG_CFLAGS=-I/home/Litedg/Programs/anaconda3/include/libxml2 -I/home/Litedg/Programs/anaconda3/include
Using PKG_LIBS=-L/home/Litedg/Programs/anaconda3/lib -lxml2 -L/home/Litedg/Programs/anaconda3/lib -lz -
L/home/Litedg/Programs/anaconda3/lib -llzma -lpthread -L/home/Litedg/Programs/anaconda3/lib -liconv -
L/home/Litedg/Programs/anaconda3/lib -licui18n -licuuc -licudata -lm -ldl
** libs
所以应该是由于调用了anaconda3下面的libxml2导致的原因。想在环境变量中将anaconda3给注释掉,但是会调到pymol下面,后来发现直接修改xml2安装包的configure就好了。
找到xml2的安装包。在报错的最后面会给出:
The downloaded source packages are in
'/tmp/RtmpUV7uZp/downloaded_packages'
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
Warning message:
In install.packages("xml2") :
installation of package 'xml2' had non-zero exit status
找到这个目录,解压:
cd /tmp/RtmpUV7uZp/downloaded_packages tar -zxvf xml2_1.3.2.tar.gz
修改其中configure文件:
xml2-config --version >/dev/null 2>&1 if [ $? -eq 0 ]; then PKGCONFIG_CFLAGS=`xml2-config --cflags` PKGCONFIG_LIBS=`xml2-config --libs` # MacOS versions El Capitan and later ship a xml2-config which appends `xcrun # --show-sdk-path` to the xml2-config. So we remove it if it is present. # (https://stat.ethz.ch/pipermail/r-sig-mac/2016-September/012046.html) if [ "$OS_TYPE" = "Darwin" ] && [ "$OS_VERSION" -gt "13" ] && [ "$OS_VERSION" -lt "17" ]; then PKGCONFIG_CFLAGS=`echo $PKGCONFIG_CFLAGS | perl -pe "s{\Q\`xcrun -show-sdk-path\`\E}{}"` PKGCONFIG_LIBS=`echo $PKGCONFIG_LIBS | perl -pe "s{\Q\`xcrun -show-sdk-path\`\E}{}"` fi # Fix a missing libxml2 directory on the requested include directory # https://github.com/r-lib/xml2/issues/296 if [ "${OS_TYPE}" = "Darwin" ] && echo "${PKGCONFIG_CFLAGS}" | grep -sq "/usr/include$"; then PKGCONFIG_CFLAGS="$PKGCONFIG_CFLAGS/libxml2" fi else pkg-config --version >/dev/null 2>&1 if [ $? -eq 0 ]; then PKGCONFIG_CFLAGS=`pkg-config --cflags $PKG_CONFIG_NAME` PKGCONFIG_LIBS=`pkg-config --libs $PKG_CONFIG_NAME` fi fi
改成:
if [ $(command -v pkg-config) ]; then PKGCONFIG_CFLAGS=$(pkg-config --cflags $PKG_CONFIG_NAME) PKGCONFIG_LIBS=$(pkg-config --libs $PKG_CONFIG_NAME) fi
即可。保存退出。
使用R CMD进行安装(在xml2目录下)
R CMD INSTALL ./
即可顺利安装xml2包。
其余的包使用
install.packages("devtools")
继续安装即可~
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。