Compilando versões antigas do R (2.11 ou mais antigas) no Ubuntu 13.10 (ou mais recente)?

1

Eu estou tentando compilar uma versão antiga do R (2.11.1, especificamente). "Por quê?", Você poderia perguntar. Bem, eu tenho um programa que estou tentando executar (que não foi escrito por mim, mas espero usar em minha pesquisa) que foi escrito em "old" R, e o escritor do programa mencionou especificamente que R-2.11. 1 ou mais deve ser usado.

  • Corri ./configure sem erros óbvios (a saída inteira é longa demais para ser publicada aqui, mas fui avisado de que não posso fazer versões em PDF, DVI ou HTML das páginas de ajuda, que Eu não estou muito preocupado com isso.

  • Em seguida, quando eu passar o comando make , recebo o seguinte erro (após um longo fluxo de comandos bem-sucedidos):

    Warning in solve.default(rgb):
    unable to load shared library '/home/sbowerma/Programs/R-2.11.1/modules//lapack.so':
    /home/sbowerma/Programs/R-2.11.1/lib/libRlapack.so: undefined symbol: _gfortran_compare_string
    Error in solve.default(rgb) : lapack routines cannot be loaded
    Error: unable to load R code in package 'grDevices'
    Execution halted
    

No entanto, confirmei que a biblioteca lapack.so está, de fato, na posição exata em que deveria estar.

    
por Sam 09.06.2014 / 21:44

1 resposta

0

O processo de compilação R-2.11.1 parece compilar suas próprias versões das bibliotecas BLAS e LAPACK (como R-2.11.1/lib/libRblas.so e R-2.11.1/lib/libRlapack.so ) por padrão - mesmo que versões do sistema dessas bibliotecas estejam disponíveis. Por razões que não fui capaz de determinar, estas bibliotecas localmente construídas parecem não ligar corretamente a biblioteca gfortran runtime (pelo menos, não no Ubuntu 13.10 de 64 bits).

Usando ./configure --help , você verá

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-blas             use system BLAS library (if available), or specify
                          it [no]
  --with-lapack           use system LAPACK library (if available), or specify
                          it [no]

Portanto, a solução consiste em garantir que você tenha os pacotes de desenvolvimento BLAS / LAPACK (ou ATLAS) apropriados instalados no sistema e, em seguida, adicionar as opções --with-blas e --with-lapack à sua configuração, por exemplo

./configure --with-blas --with-lapack --prefix=/usr/local

O relatório de configuração deve indicar algo como

External libraries:      readline,BLAS(generic),LAPACK(generic)

e depois disso você deve conseguir completar o make .

    
por steeldriver 10.06.2014 / 04:17