在ubuntu上构建R(cran)+ rpy2 - > libRblas.so未找到

时间:2012-06-04 15:06:17

标签: r ubuntu building rpy2

我正在尝试在ubuntu(11.04,natty narwhal)上构建R(尝试2.14.2和2.15)和rpy2(2.2.6,python 2.7.1),将其部署到自定义目录(在下面调用/ home / me / lib / R),因为我没有root访问权限,但需要比服务器上提供的版本更新的版本。

进一步向下构建等的细节,但即使在运行rpy2的测试时,我总是会收到以下错误:

/home/me/lib/pythonlib/lib/python/rpy2/rinterface/__init__.py in <module>()
---> 87 from rpy2.rinterface._rinterface import *
ImportError: libRblas.so: cannot open shared object file: No such file or directory
WARNING: Failure executing file: <experiments/arrangement/test_smacof_arrange.py>

我确信我正在调用正确的rpy2模块(我自定义构建的模块),该模块是针对自定义构建的R版本构建的。要做到这一点,我正在做以下事情:

  1. 我首先在ubuntu上构建R-base

    wget http://cran.r-project.org/bin/linux/ubuntu/natty/r-base_2.14.2.orig.tar.gz
    # untar and go to directory
    
    # enable-R-shblib flag is needed for rpy2 linking, enable-BLAS-shlib was included
    # because I hoped to solve the problem, which doesnt change anything however
    ./configure --enable-R-shlib --enable-BLAS-shlib --prefix=/home/me/lib/R
    make
    make install
    
  2. 然后我针对此R版本构建rpy2

    wget http://pypi.python.org/packages/source/r/rpy2/rpy2-2.2.6.tar.gz
    # untar and go to directory
    
    # build rpy2, by providing the r-home-lib and r-home flags, and deploy to custom dir
    python setup.py build --r-home /home/me/lib/R --r-home-lib /home/me/lib/R/lib64/R/lib install --home /home/me/lib/pythonlib
    

    我也调整了我的pythonpath来查找/ home / me / lib / pythonlib中的模块,所以问题不在那里。 python构建返回正确的配置(注意Rblas出现在这里!)

    Configuration for R as a library:
    include_dirs: ('/home/me/lib/R/lib64/R/include',)
    libraries: ('R', 'Rblas', 'Rlapack')
    library_dirs: ('/home/me/lib/R/lib64/R/lib',)
    extra_link_args: ()
    
  3. 我试图追踪错误,但没有尽头。 / home / me / lib / R / lib64 / R / lib包含libRblas.so,但是有一件事看起来很奇怪,那就是libRblas.so没有从libR.so正确链接,但我不确定是否有问题这会导致错误,我也不知道如何修复它。

    >> ldd -d libR.so
    
    linux-vdso.so.1 =>  (0x00007fffcec58000)
    libRblas.so => not found
    libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fe63d21d000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe63cf97000)
    ...
    

    非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

对于遇到此问题的其他人,我能够通过确保将R库添加到bashrc中的库路径来解决它:

export LD_LIBRARY_PATH="R-install-location/lib65/R/lib:$LD_LIBRARY_PATH"

答案 1 :(得分:2)

简言之:

  1. 为什么在Ubuntu上构建R?只需按照http://cran.r-project.org/bin/linux/ubuntu的自述文件从CRAN仓库中获取现有和当前的二进制文件 - 这些是通过CRAN提供的当前Debian软件包的端口,以克服正常的Ubuntu发布延迟。

  2. 每当我在Ubuntu上需要一个更新的(小)软件包时,我只需抓住Debian软件包源并在Ubuntu上重建它们。关于如何建立一个包,网上应该有足够的HOWTO;最小的是a)关闭三元组.orig.tar.gz,.diff.gz和.dsc并使用dpkg-sourcepackage -x *.dsc展开然后b)切换到目录并运行sudo debian/rules binary(如果你拥有所有Build-Depends:已安装的软件包)。您甚至可以使用apt-get为您执行这些步骤,但它会超出此问题的范围......