在R中,“安装软件包'FILE_PATH'时出现非零退出状态”

29

通过使用以下命令在R中安装包:

install.packages('FILE_PATH', repos=NULL, type = "source")

我遇到了以下错误:

Installing package into ‘/home/p/R/x86_64-pc-linux-gnu-library/3.0’ (as ‘lib’ is unspecified) Errore in rawToChar(block[seq_len(ns)]) : embedded nul in string: 'PK\003\004\024\0\002\0\b\0]\xadVCr\xcb\xea\xfcR\0\0\0\xa7\0\0\0\027\0\0\0bivpois-Rcode/.Rhistory+\xce/-JN\xd5PO\xca,+\xc8\xcf,\xd6+IL\xcaI\xd5\vR\xd7\xe4\xe5*\x86J\xe5\xe4\xea%\025`\b\xa5d\xa2\v楖\xe7%\xe6' Warning message: In install.packages("/home/p/Research/14_bivpois-Rcode.zip", repos = NULL, : installation of package ‘/home/p/Research/14_bivpois-Rcode.zip’ had non-zero exit status

R版本是3.0.2(2013-09-25)--“Frisbee Sailing”,操作系统为Linux Mint(UNIX)。

我为什么会收到这个错误消息,它是什么意思:

在R中安装包‘/home/p/Research/14_bivpois-Rcode.zip’时出现非零的退出状态

?

您可以在此处找到该软件包,14_bivpois-Rcode.zip是源文件。

我尝试在本地安装它,路径是正确的。

有没有安装该软件包的建议?


1
该存档没有符合有效 R 包所需的结构。看起来您需要从每个 .R 文件中将函数加载到工作区(例如使用 source),或者从您链接的页面提供的 .RData 文件中加载(请参阅 ?load)。 - jbaums
首先,感谢您对问题的评论。在您看来,如果我使用load(),我可以用什么代替'envir = parent.frame'?我不明白R在这种语法中的含义。 - QuantumGorilla
你可以将 envir 参数保留默认值 - 这个参数只是指定你想要加载函数/对象的位置。在你的情况下,默认值会将它们加载到全局环境中。 - jbaums
请点击这里查看我的解决方案。希望能对你有所帮助。 - undefined
9个回答

16

在您的Linux系统上安装以下库很简单。
curl: sudo apt-get install curl
libssl-dev: sudo apt-get install libssl-dev
libcurl: sudo apt-get install libcurl4-openssl-dev
xml2: sudo apt-get install libxml2-dev


安装每个软件包时都能正常工作,但出现“安装软件包‘XXXX’时出现非零退出状态”的错误。 - Pavlos Ponos

13

作者提供的 .zip 文件不是有效的 R 包,他们确实指出源代码是“直接在 R 中使用”的(我想这意味着需要手动加载包含的函数)。而 非零退出状态 仅表示在“安装”该“包”时发生了错误。

您可以手动提取存档文件,然后使用如下命令加载其中的函数:source('bivpois.table.R');或者您可以下载他们提供的 .RData 文件,并使用 load('.RData') 将其加载到工作空间中。这样做并不会将函数安装为包的一部分,而是将函数加载到您的全局环境中,使其暂时可用。

您可以按照以下步骤从 R 中下载、提取和加载 .RData:

download.file('http://stat-athens.aueb.gr/~jbn/papers/files/14/14_bivpois_RDATA.zip', 
              f <- tempfile())
unzip(f, exdir=tempdir())
load(file.path(tempdir(), '.RData'))

如果您希望在当前工作目录中使用 .RData 文件,并在将来加载它,则可以使用以下内容:

download.file('http://stat-athens.aueb.gr/~jbn/papers/files/14/14_bivpois_RDATA.zip', 
              f <- tempfile())
unzip(f, exdir=tempdir())
file.copy(file.path(tempdir(), '.RData'), 'bivpois.RData')
# the above copies the .RData file to a file called bivpois.RData in your current 
# working directory.
load('bivpois.RData')
在未来的R会话中,你只需调用load('bivpois.RData')

一切都正常,没有错误,但我无法调用该包。如果我尝试使用library()在当前会话中调用它,就会出现错误。 - QuantumGorilla
@Quantopic - 这是因为它不是一个包。这些函数在您的工作区中自由浮动。每次想要使用这些函数时,您都需要加载 .Rdata 文件。 - jbaums
好的。感谢您的解释和帮助。非常清晰和有用。 - QuantumGorilla
@Quantopic - 我进行了一些编辑,以便更清楚地表达。 - jbaums
再次感谢您的帮助! - QuantumGorilla

13
你可以尝试使用命令:install.packages('*包名', dependencies = TRUE) 例如,如果你需要在Linux上的R机器上安装'caret'包: install.packages('caret', dependencies = TRUE) 这样做会下载该软件包的所有依赖项。

3

如果您正在使用MacOS,并且像我一样一直在为某些R包无法安装而困扰,这里提供一种可能的解决方法。

如果出现非零退出状态,请首先检查所有依赖项是否已安装,并仔细查阅消息。如果确认已经检查,则查找指示,例如gfortran: No such a file or directory。这可能是由于Apple OS编译器问题导致的,因此某些软件包只有在使用它们的二进制版本时才能安装。在cran.r-project.org页面中查找二进制zip文件,下载并使用以下命令安装软件包:

install.packages("/PATH/zip file ", repos = NULL, type="source")


兄弟,如果这个包有20个依赖项怎么办?我需要一个一个地安装吗? - Reabo

2

您是否检查过系统中的gsl软件包。请尝试以下方法:

ldconfig-p | grep gsl

如果已经安装了gsl,它将显示配置路径。如果它不在标准路径/usr/lib/中,则需要在bash中执行以下操作:

export PATH=$PATH:/your/path/to/gsl-config 

如果未安装gsl,只需执行以下操作:
sudo apt-get install libgsl0ldbl
sudo apt-get install gsl-bin libgsl0-dev

我曾遇到过mvabund包的问题,这个方法解决了错误。

谢谢!


2
尝试使用这个:

    apt-get install r-base-dev

这会很有帮助。然后我就可以执行install.packages('//package_name')命令了。


1

我曾经遇到过同样的问题,但是@little_chemist的答案帮助我解决了它。在Unix操作系统(例如Ubuntu 18.04)上从文件安装软件包时,文件不能被压缩。你正在使用:

install.packages("/home/p/Research/14_bivpois-Rcode.zip", repos = NULL, type="source")

我注意到解决方案就是简单地解压缩软件包。此外,像 @little_chemist 指出的那样,解压所有(与安装相关的?)软件包。然后使用 install.packages 命令:

install.packages("/home/p/Research/14_bivpois-Rcode", repos = NULL, type="source")

希望它有所帮助!

1

我遇到了类似的问题,尝试安装一个名为AED的软件包。我尝试使用install.packages()命令:

install.packages('FILE_PATH', repos=NULL, type = "source")

但是一直收到以下警告信息:
Warning message:
In install.packages("/Users/blahblah/R-2.14.0/AED",  :
installation of package ‘/Users/blahblah/R-2.14.0/AED’ had
non-zero exit status

原来文件夹'AED'里还有一个未解压的文件夹。我将其解压后再次尝试安装软件包,成功了。

1

我在R中遇到了一个特定包的问题,解决方法是在Ubuntu终端中安装libcurl。请查看上方显示的信息,说明curl包安装出错。

我对这条消息有所了解:

Configuration failed because libcurl was not found. Try installing:
 * deb: libcurl4-openssl-dev (Debian, Ubuntu, etc)
 * rpm: libcurl-devel (Fedora, CentOS, RHEL)
 * csw: libcurl_dev (Solaris)
If libcurl is already installed, check that 'pkg-config' is in your
PATH and PKG_CONFIG_PATH contains a libcurl.pc file. If pkg-config
is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'

安装它,我使用了net命令:
sudo apt-get install libcurl4-openssl-dev
有时候我们无法在R中安装特定的软件包,因为我们之前必须安装curl软件包等软件包存在问题。要知道是否应该安装它,我们应该检查警告错误,比如:安装软件包'curl'时出现非零退出状态。
希望我能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接