在Ubuntu中只安装Windows R包

时间:2012-01-16 08:27:41

标签: r

我有一个需要使用的R包。有问题的套餐是BQuant

该软件包可以下载zip file(我后来发现)包含windows二进制文件。首先,我尝试提取这些二进制文件并将其打包在.tar.gz中我使用install.packages()安装了.tar.gz包。

这没有给出任何错误但是当我试图调用包R的任何函数时,我给出了错误:Error: could not find function <function_name>

然后我找到source files并尝试在.tar.gz中提取和重新打包。这次,在安装过程中,错误是:**ERROR: Windows-only package**

当我在source files中检查说明OS_type: windows时。我删除了该行并再次尝试。这次错误是:

gcc -std=gnu99 -shared -o BQuant.so dp.o -L/usr/lib/R/lib -lR
dp.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make:  ***[BQuant.so] Error 1
ERROR: compilation failed for package ‘BQuant’

简而言之:  我需要知道这个Windows软件包是否可以安装在Linux中。

2 个答案:

答案 0 :(得分:3)

我认为你需要在'BQuant \ R \ fcn_preproc.r'文件中改变一下。

此文件加载dll文件,这是一个仅限Windows的文件。

.First.lib <- function(lib, pkg) 
{
   library.dynam("BQuant.dll")
}

您可以尝试添加基于平台的测试。

.First.lib <- function(lib, pkg) 
{
   if(.Platform$OS.type == 'windows'){
      library.dynam("BQuant.dll")
   }
   if(.Platform$OS.type == 'unix'){
      library.dynam("BQuant.so")
   }
}

这可能会成功。 另外不要忘记更改依赖文件的os行。

要尝试编译.c文件,可以从终端使用此命令。

R CMD SHLIB -o BQuant.so dc.c

根据:http://www.ats.ucla.edu/stat/r/library/interface.pdfhttp://www.maths.lancs.ac.uk/~prangle/CinR/CinR.pdf

答案 1 :(得分:2)

据我所知,unix / linux没有编译的代码对象。您链接到的zip实际上只是一个Windows二进制文件,并且缺少在Linux上编译成等效的BQuant.dll所需的源代码。甚至R代码都在&#34;编译&#34;形式,即不是纯文本R代码。

除非您拥有源代码,否则您无法将其编译为在Linux上运行。修改维护者以查看他们是否可以提供正确的源包。