Os pacotes R no CRAN precisam passar por uma série de verificações técnicas. Essas verificações também podem ser chamadas por qualquer usuário ao executar R CMD check
na embalagem tar.gz
(emular o CRAN, tanto quanto possível, deve-se também definir o --as-cran
opção ao fazê-lo). Essas verificações precisam ser aprovadas antes que um pacote seja aceito no CRAN. Além disso, essas verificações são executadas regularmente para cada pacote no CRAN para garantir que novos recursos R ou atualizações de pacotes upstream não quebrem o pacote. Além disso, as verificações CRAN se tornam regularmente mais rígidas. Portanto, manter um pacote no CRAN pode exigir um esforço regular do mantenedor do pacote. Embora isso às vezes possa ser um pouco frustrante para o mantenedor, em parte por causa do limite bastante curto de duas semanas do CRAN em caso de problemas recentes, esse é um dos recursos que garante a alta qualidade técnica dos pacotes no CRAN.
Como um exemplo para verificações cada vez mais rigorosas, o CRAN agora também realiza um conjunto de verificações adicionais, além das verificações do CRAN em todas as plataformas R que são mostradas em uma página de verificação de pacotes (por exemplo, para o MPTmultiverse). Essas verificações adicionais incluem testes para erros de acesso à memória (por exemplo, usando valgrind
), R compilado usando compiladores alternativos, diferentes bibliotecas de álgebra numérica, mas também testa uma versão R sem suporte para duplas longas (ou seja, noLD
) Agora aconteceu pela segunda vez que um dos meus pacotes mostrou um problema na versão R sem suporte duplo e longo
No meu caso, o problema na versão R sem suporte duplo longo apareceu nos exemplos de pacotes ou nos testes de unidade do pacote. Portanto, eu não queria apenas corrigir o problema do cheque, mas também entender o que estava acontecendo. Portanto, eu precisava de uma versão funcional do R
sem suporte para duplas longas. Infelizmente, a descrição dessa configuração é bastante esparsa. A única informação sobre CRAN é bastante esparsa:
testes no Linux x86_64 com o R-devel configurado usando
--disable-long-double
Outros detalhes como https://www.stats.ox.ac.uk/pub/bdr/Rconfig/r-devel-linux-x86_64-fedora-gcc
Da mesma forma, informações esparsas são fornecidas em Writing R Extensions:
Se você deve tentar estabelecer uma tolerância empiricamente, configure e construa R com –Disable-long-double e use sinalizadores de compilador apropriados (como -ffloat-store e -fexcess-precision = standard para
gcc
, dependendo do tipo de CPU86) para atenuar os efeitos dos cálculos de precisão estendida.
Infelizmente, minha primeira abordagem na qual simplesmente tentei adicionar o --disable-long-double
A opção para o script de instalação do R-devel falhou. Após algumas pesquisas, encontrei a solução no fórum da comunidade RStudio, graças a David F. Severski. Além de --disable-long-double
é preciso também adicionar --enable-long-double=no to configure
. Pelo menos no Ubuntu, isso compila com êxito um R
versão sem suporte duplo longo. Isso pode ser confirmado com uma chamada para capabilities()
no R
.
O restante deste post fornece uma lista de todos os pacotes que eu precisava instalar em uma nova versão do Ubuntu para compilar o R dessa maneira. Obviamente, esse conjunto de pacotes também deve ser utilizado para a compilação de versões R normais. Espero não ter esquecido muitos pacotes, mas espero que isso cubra a maioria. Sinta-se livre para postar um comentário se algo estiver faltando e vou tentar atualizar a lista.
sudo apt-get update sudo apt-get install build-essential sudo apt-get install gfortran sudo apt-get install libpcre2-dev sudo apt-get install xorg-dev sudo apt-get install libcurl sudo apt-get install libcurl4-openssl-dev sudo apt-get install libbz2-dev sudo apt-get install texlive-fonts-extra sudo apt-get install default-jdk sudo apt-get install curl
Depois disso, poderemos construir o R. Para isso, segui as instruções do `RStudio` para instalar várias versões do R em paralelo. Começamos definindo uma variável de ambiente e baixando R.
export R_VERSION=4.0.1 curl -O https://cran.rstudio.com/src/base/R-4/R-${R_VERSION}.tar.gz tar -xzvf R-${R_VERSION}.tar.gz cd R-${R_VERSION}
Podemos então instalar R
(aqui defino as opções para desativar duplas longas):
./configure --prefix=/opt/R/${R_VERSION} --enable-R-shlib --with-blas --with-lapack --disable-long-double --enable-long-double=no make sudo make install
Para testar a instalação, podemos usar:
/opt/R/${R_VERSION}/bin/R --version
Por fim, precisamos criar um link simbólico:
sudo ln -s /opt/R/${R_VERSION}/bin/R /usr/local/bin/R sudo ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/local/bin/Rscript
Podemos então correr R
e verifique os recursos da instalação:
> capabilities() jpeg png tiff tcltk X11 FALSE TRUE FALSE FALSE TRUE aqua http/ftp sockets libxml fifo FALSE TRUE TRUE TRUE TRUE cledit iconv NLS profmem cairo TRUE TRUE TRUE FALSE FALSE ICU long.double libcurl TRUE FALSE TRUE
Ou mais curto:
> capabilities()[["long.double"]] [1] FALSE
Relacionado
Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …