Como consertar as dependências quebradas do pacote R depois de uma atualização libgfortran.so

0

[Na prática, isso deve se aplicar a todas as distribuições Lx e "conceitualmente" a todos os sistemas operacionais Apple e M $.]

Atualizar o R [base] no seu sistema pode, às vezes, quebrar algumas dependências , dependendo dos pacotes que você instalou e usou chamando: %código%. Isso aconteceu comigo recentemente após uma atualização de lançamento rotineiro. Aqui está a mensagem que recebi:

unable to load shared object /home/USER/R/x86_64-pc-linux-gnu-library/3.5/leaps/libs/leaps.so:
libgfortran.so.4: cannot open shared object file: No such file or directory

EuvialgunspostsnoSE,Githubeemoutroslugarescomrelatóriossemelhantes,massemsolução(pelomenosparamim).

  • ReinstalarabaseRfazbemoumalouqualquercoisa.
  • Outracoisaquevemàmenteéfazerodowngradeeremoverospacotesmaisrecentespararetornaraumestadodeversãoanterior.Nãoésatisfatórioecomplicadodemanterparalançamentoscontínuos,comooArchLx.

Então,comovocêconsertaissoàs7danoite,quandovocêprecisacolocaroRparafuncionar"agora"?

    
por Cbhihe 16.05.2018 / 10:49

1 resposta

0

1) $ find /usr/lib/ -name "libgfortran.*" Convença-se que simplesmente inventar o elo simbólico que falta libgfortran.so.4 -> libgfortran.so.5.0.0 não ajuda em nada.
(A informação da versão do Target "5.0.0" no link simbólico, irá variar dependendo das versões instaladas.)

2) Descubra exatamente quais dependências estão quebradas. Esta é uma função dos seus pacotes instalados. (Substitua /3.x no caminho abaixo por qualquer versão de R base que você usa.)

$ ldd ~/R/x86_64-pc-linux-gnu-library/3.x/*/libs/*.so \
  | egrep '(so:$|not found)' > ~/R/x86_64-pc-linux-gnu-library/3.x/foobar

ldd imprime dependências de objetos compartilhados. Qualquer linha em foobar anterior a uma linha onde "não encontrada" mostra refere-se a um pacote corrompido que precisa ser removido e reinstalado.

3) Mova as pastas dos pacotes quebrados anteriormente identificados para uma pasta de backup de escolha do ano. Os pacotes Yr R normalmente são instalados em ~/R/x86_64-pc-linux-gnu-library/3.x/ por padrão em lx. (Qualquer outro local deve ser especificado por você durante a instalação ou globalmente em seu arquivo de configuração R.) No console R, reinstale os pacotes removidos:
> install.packages(c("pkg_name_1","pkg_name_2",...), depend=T)
Note que não (removing | moving) de pacotes existentes (quebrados) de sua localização, e continuar com a reinstalação deles, não corrigirá nada. Você precisa mover as pastas dos pacotes quebrados para longe de sua localização, para que R possa reconstruir as dependências.

4) Carregue as bibliotecas R de interesse e realize testes ad hoc a partir do console R, antes de remover ~/R/x86_64-pc-linux-gnu-library/3.x/foobar .

HTH.

    
por 17.05.2018 / 09:23