Intérprete

Apuntes sobre el entorno base del lenguaje de programación R.


Introducción

De la misma forma que resulta difícil separar a AWK de su intérprete, igual resulta difícil separar a R de lo que se llama el «sistema base» o el «entorno base de desarrollo» (que no es más que el intérprete y algunas utilerías más que ayudan con la administración básica del entorno y paquetes). Aquí se describe la instalación y uso de éste.


macOS

Instalación

Existen varias alternativas para instalar R:

  1. vía la descarga de un instalador (preferentemente desde alguno de los sitios registrados como distribuidores del proyecto,
  2. de la CRANComprehensive R Archive Network; deben evitarse sitios alternos de descarga por seguridad),
  3. mediante un administrador de paquetes como Homebrew,
  4. o construyendo la aplicación compilando el código fuente (descargándolo desde un sitio registrado).

Aquí se exploran algunas de estas.

Usando un instalador

Para el caso de macOS, haciendo uso de un instalador (y así de una distribución binaria), se descarga un paquete .pkg (en estos momentos cuidando si es para una «mactel» o una con Apple silicon) y el administrador de paquetes nativo de macOS se encarga de la instalación de lo que se conoce como el «sistema base». En otras palabras, con la instalación del intérprete y elementos de run-time para que el intérprete de R pueda ser usado.

En general la instalación no es más que aceptar los valores por defecto (salvo que se requiera la instalación en alguna ruta en particular o un componente en específico). Las imágenes inferiores muestran las diversas etapas que se siguen en este proceso de instalación, hasta el final en que se pregunta si se desea conservar o no el archivo descargado.

Compilando el código fuente

Existen varias razones para querer construir al sistema R desde su código fuente (recompilarlo). Algunos autores dan cuenta de ello (ver pág. 149 de [1], por ejemplo). Idealmente es sencillo pero se requiere preparar al equipo con algunas bibliotecas y componentes2, y un cierto conocimiento sobre desarrollo de software para cuando se presenten las dificultades.

Como requisitos tenemos:

  • Tener instalado Homebrew.
  • Desactivar cualquier entorno de conda durante el proceso de configuración e instalación.

A continuación se muestra una de estas experiencias de recompilación.

1. Obteniendo el código fuente desde el sitio del proyecto (que consiste en descargar un «tarball«, ya sea de una versión en particular o la más reciente), se procede a colocar el «tarball» descargado en algún directorio de trabajo y a descompactarlo.

2. En un primer intento, al ejecutar el script principal de configuración se obtuvo:

$ ./configure
checking build system type... aarch64-apple-darwin23.3.0
checking host system type... aarch64-apple-darwin23.3.0
loading site script './config.site'
loading build-specific script './config.site'
...
checking whether the compiler supports GNU Fortran... no
checking whether  accepts -g... no
configure: error: No Fortran compiler found

3. Para resolver la usencia del compilador de Fortran se usó brew (en este caso usada desde una cuenta con acceso administrativo al equipo).

% brew list gFortran
Warning: Cask gfortran was renamed to homebrew/core/gfortran.
Error: No such keg: /opt/homebrew/Cellar/gfortran
% brew install gfortran
...
Warning: Cask gfortran was renamed to homebrew/core/gfortran.
==> Downloading https://ghcr.io/v2/homebrew/core/gcc/manifests/13.2.0-2
######################################################################### 100.0%
==> Fetching dependencies for gcc: isl, mpfr and libmpc
...
🍺  /opt/homebrew/Cellar/gcc/13.2.0: 1,489 files, 364.3MB
==> Running `brew cleanup gcc`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
%

4. Instalado el compilador de Fortran, un segundo intento generó:

$ ./configure
checking build system type... aarch64-apple-darwin23.3.0
checking host system type... aarch64-apple-darwin23.3.0
...
looking for a modern Fortran compiler
checking for gfortran... gfortran
checking whether the compiler supports GNU Fortran... yes
checking whether gfortran accepts -g... yes
...
checking how to get verbose linking output from gfortran... -v
checking for Fortran libraries of gfortran...  -L/usr/local/lib -L/opt/homebrew/Cellar/gcc/13.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin23/13 -L/opt/homebrew/Cellar/gcc/13.2.0/bin/../lib/gcc/current/gcc -L/opt/homebrew/Cellar/gcc/13.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin23/13/../../.. -lgfortran -lemutls_w -lquadmath
checking how to get verbose linking output from gcc... -v
checking for C libraries of gcc...  -lto_library -L/usr/local/lib -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a
checking for dummy main to link with Fortran libraries... none
checking for Fortran name-mangling scheme... lower case, underscore, no extra underscore
checking whether gfortran appends underscores to external names... yes
checking whether gfortran appends extra underscores to external names... no
checking whether mixed C/Fortran code can be run... yes
...
checking for X... no
configure: error: --with-x=yes (default) and X11 headers/libs are not available
$

5. Optando por no hacer uso de X11:

$ ./configure --with-x=no 
checking build system type... aarch64-apple-darwin23.3.0
...
checking for X... disabled
using X11 ... no
...
checking whether bzip2 support suffices... yes
checking for lzma_version_number in -llzma... yes
checking for lzma.h... no
configure: error: "liblzma library and headers are required"

6. El caso de la biblioteca lzma fue particularmente latoso de resolver, ya que inicialmente se buscó arreglar revisando la instalación de xz pero resultó ser algo que debía manejarse con una variable de entorno.

% brew install xz
Warning: xz 5.6.1 is already installed and up-to-date.
To reinstall 5.6.1, run:
  brew reinstall xz
% brew reinstall xz
==> Downloading https://ghcr.io/v2/homebrew/core/xz/manifests/5.6.1
Already downloaded: /Users/admin/Library/Caches/Homebrew/downloads/bc72ad1aed6fc861afaf3fd0af8266ea2913cb871cfdcbeef0c228afb9826c72--xz-5.6.1.bottle_manifest.json
==> Fetching xz
==> Downloading https://ghcr.io/v2/homebrew/core/xz/blobs/sha256:b5583c24107269a
Already downloaded: /Users/admin/Library/Caches/Homebrew/downloads/0e0aec6661183ecb640ab65fdea4d5387cd8029dbe702b0b4801030e148df690--xz--5.6.1.arm64_sonoma.bottle.tar.gz
==> Reinstalling xz 
==> Pouring xz--5.6.1.arm64_sonoma.bottle.tar.gz
🍺  /opt/homebrew/Cellar/xz/5.6.1: 166 files, 2.7MB
==> Running `brew cleanup xz`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

Lo cual no cambió el mensaje de error:

$ ./configure --with-x=no
checking build system type... aarch64-apple-darwin23.3.0
...
checking whether bzip2 support suffices... yes
checking for lzma_version_number in -llzma... yes
checking for lzma.h... no
configure: error: "liblzma library and headers are required"
$

xz confirmó que la biblioteca faltante estaba presente, así como su búsqueda y de su archivo de cabecera:

$ xz -V
xz (XZ Utils) 5.4.2
liblzma 5.4.2
% cd /opt
% find . -name "liblzma*" 2>/dev/null
./homebrew/lib/pkgconfig/liblzma.pc
./homebrew/lib/liblzma.a
./homebrew/lib/liblzma.dylib
./homebrew/lib/liblzma.5.dylib
./homebrew/Cellar/xz/5.6.1/lib/pkgconfig/liblzma.pc
./homebrew/Cellar/xz/5.6.1/lib/liblzma.a
./homebrew/Cellar/xz/5.6.1/lib/liblzma.dylib
./homebrew/Cellar/xz/5.6.1/lib/liblzma.5.dylib
% find . -name "*lzma*.h" 2>/dev/null
./homebrew/include/lzma.h
./homebrew/Cellar/xz/5.6.1/include/lzma.h
./homebrew/Cellar/xz/5.6.1/include/lzma/lzma12.h
% pwd                                              
/opt

7. Dado que la ayuda en línea del script de configuración (./configure -h) no indicaba opciones para el control de los archivos de cabecera (la opción --includedir no parecía tener efecto) se optó por buscar algo que pudiera indicar la causa del problema, entre ello el archivo config.log, donde se observó que varios de los llamados al compilador de gcc incluían (opción -I) la ruta a archivos de cabecera en /usr/local/include, que no incluía la ya mostrada de lzma.h.

8. La documentación del compilador de C indica el uso de la variable de ambiente export C_INCLUDE_PATH (cuidar el valor de ésta, no copiar ciegamente de estas notas), con la que se pudo en parte remontar el problema, aunque (ver resultado):

$ export C_INCLUDE_PATH=/opt/homebrew/Cellar/xz/5.6.1/include
$ ./configure --with-x=no
...
checking for lzma_version_number in -llzma... yes
checking for lzma.h... yes
checking if lzma version >= 5.0.3... yes
checking for pcre2.h... yes
checking for pcre2_compile_8 in -lpcre2-8... yes
checking if PCRE2 has Unicode support... yes
checking whether PCRE support suffices... yes
...
config.status: creating src/include/config.h
config.status: executing libtool commands
config.status: executing stamp-h commands

R is now configured for aarch64-apple-darwin23.3.0

  Source directory:            .
  Installation directory:      /usr/local

  C compiler:                  gcc  -g -O2
  Fortran fixed-form compiler: gfortran  -g -O2

  Default C++ compiler:        g++ -std=gnu++17  -g -O2
  C++11 compiler:              g++ -std=gnu++11  -g -O2
  C++14 compiler:              g++ -std=gnu++14  -g -O2
  C++17 compiler:              g++ -std=gnu++17  -g -O2
  C++20 compiler:              g++ -std=gnu++20  -g -O2
  C++23 compiler:              g++ -std=gnu++2b  -g -O2
  Fortran free-form compiler:  gfortran  -g -O2
  Obj-C compiler:	       gcc -g -O2 -fobjc-exceptions

  Interfaces supported:        aqua
  External libraries:          pcre2, readline, curl
  Additional capabilities:     PNG, JPEG, TIFF, NLS, cairo, ICU
  Options enabled:             shared BLAS, R profiling

  Capabilities skipped:        
  Options not enabled:         memory profiling

  Recommended packages:        yes

configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help pages
$ make
...
grep.c:75:10: fatal error: 'pcre2.h' file not found
# include<pcre2.h>
         ^~~~~~~~~
1 error generated.
make[2]: *** [grep.d] Error 1
make[1]: *** [R] Error 1
make: *** [R] Error 1
$

9. La utilería faltante ya se encontraba instalada, por lo que el problema debía ser otro.

 % brew install pcre2
==> Downloading https://formulae.brew.sh/api/formula.jws.json
######################################################################### 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
######################################################################### 100.0%
Warning: pcre2 10.43 is already installed and up-to-date.
To reinstall 10.43, run:
  brew reinstall pcre2
% 

10. Se ajustó el valor de la variable de ambiente, con lo que se arregló este problema pero…

$ export C_INCLUDE_PATH=/opt/homebrew/include
$ make
make[1]: Nothing to be done for `R'.
make[1]: Nothing to be done for `R'.
...
using C compiler: ‘Apple clang version 15.0.0 (clang-1500.3.9.4)’
using SDK: ‘MacOSX14.4.sdk’
gcc -I"/Users/lalo/Desktop/R/R-4.3.3/include" -DNDEBUG   -I/usr/local/include    -fPIC  -g -O2  -c conftest.c -o conftest.o
conftest.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
         ^~~~~~~
1 error generated.
make[2]: *** [conftest.o] Error 1
Unable to compile a JNI program

JAVA_HOME        : /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Java library path: 
JNI cpp flags    : 
JNI linker flags : 
Updating Java configuration in /Users/lalo/Desktop/R/R-4.3.3
Done.
$

11. Similarmente, la declaración de la variable de ambiente JAVA_HOME permitió completar el proceso de compilación.

(base) Codex:R-4.3.3 lalo$ export C_INCLUDE_PATH=/opt/homebrew/include
(base) Codex:R-4.3.3 lalo$ export JAVA_HOME=/usr/bin
(base) Codex:R-4.3.3 lalo$ make
...
installing to /Users/lalo/Desktop/R/R-4.3.3/library/mgcv/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (mgcv)
'pdflatex' is needed to make vignettes but is missing on your system.
make[1]: `stamp-java' is up to date.
$ ./R

R version 4.3.3 (2024-02-29) -- "Angel Food Cake"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: aarch64-apple-darwin23.3.0 (64-bit)
...
Escriba 'demo()' para demostraciones, 'help()' para el sistema on-line de ayuda,
o 'help.start()' para abrir el sistema de ayuda HTML con su navegador.
Escriba 'q()' para salir de R.

> q()
Save workspace image? [y/n/c]: n
$

Desinstalación

Las acciones de desinstalación de R dependerán de la forma en la que éste fue instalado. Si R se instaló mediante el instalador para macOS descargado de CRAN (un archivo .pkg), el proceso de desinstalación es diferente al de una instalación desde el código fuente.

Via un instalador

Antes de eliminar a R conviene validar la o las rutas donde se encuentren instaladas las bibliotecas, por ejemplo

$ r

R version 4.3.0 (2023-04-21) -- "Already Tomorrow"
Copyright (C) 2023 The R Foundation for Statistical Computing
Platform: aarch64-apple-darwin20 (64-bit)
...
> .libPaths()
[1] "/Users/lalo/Library/R/arm64/4.3/library"
[2] "/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library"

Tomando nota de lo anterior para ver que en los siguientespasos estas rutas sean incluidas, podrá hacerse uso de un desinstalador (o mover la aplicación al bote de basura) para remover al intérprete de R, cuidando que se elimine lo indicado en los siguientes partados.

1. Recibos

Los instaladores .pkg de CRAN para macOS suelen instalar R en:

  • /Library/Frameworks/R.framework
  • Y enlaces simbólicos en /usr/local/bin

Para su remoción, habría que:

sudo rm -rf /Library/Frameworks/R.framework
sudo rm -f /usr/local/bin/R
sudo rm -f /usr/local/bin/Rscript

Adicionalmente, para hablar de una limpieza total, los recibos del instalador que se almacenan en /var/db/receipts deben ser retirados:

sudo pkgutil --forget org.r-project.R.framework

Si se tienen instaladas varias versiones (p. ej., R-4.3.1 y R-4.2.3), cada una podría tener su propio recibo (e.g. org.r-project.R-4.3.1.fw.pkg). Para consultarlos:

pkgutil --pkgs | grep r-project

2. Archivos de preferencias

Las configuraciones de nivel de usuario, pueden ser eliminadas con:

rm -rf ~/Library/R
rm -rf ~/.Rhistory ~/.RData ~/.Rprofile ~/.Rapp.history

Vía código fuente

Si aun se cuenta con el directorio de construcción (donde se descargó y llevço a cabo la compilación), es posible hacer:

make -n install

conl o que se podrá listar las acciones de instalación sin hacer ésta (un dry run, pues).

1. Localizar al binario

Si la instalación se hizo compilando desde el código fuente, lo primero es localizar al intérprete con:

which R

o

type -a R

o

R RHOME

Acciones que idealmente deberán apuntar a /usr/local/.

2. Borrar archivos

Asumiendo que /usr/local/ esla ruta de instalación (cuidar y substituirla de los comandos abajo mostrados):

sudo rm -rf /usr/local/lib/R
sudo rm -f /usr/local/bin/R
sudo rm -f /usr/local/bin/Rscript

e igualmente, validar y remover la documentación en línea:

sudo rm -rf /usr/local/share/man/man1/R.1
sudo rm -rf /usr/local/share/man/man1/Rscript.1
sudo rm -rf /usr/local/share/doc/R

Validación

Un paso común para los dos escenarios anteriores, es quitar lo que haya sido agregado a los archivos de arranque y configuración del usuario, como .zshrc o .bash_profile, en donde hay que buscar y, si existe, retirar:

export R_HOME=...

Si ya no hay más aplicaciones en /usr/local/bin, también podría buscarse a esta ruta en la construcción del PATH, como:

export PATH="/usr/local/bin:$PATH"

para quitarlo de éste.

Al terminar la desinstalación, si se estuvo trabajando desde la terminal convendrá al menos cerrar la sesión pero será mejor reiniciar la computadora. Después del reinicio, cualquier comando como

which R

o

R --version

deberá marcar un error al no encontrar al intérprete de R.


Windows

Salvo que se indique otra cosa, las actividades aquí descritas se hacen en una máquina virtual de Parallels con Windows 11 para ARM.

Instalación

Desde la página del The Comprehensive R Archive Network (la página oficial del proyecto) se procede a descargar la distribución binaria que se requiera (en este ejemplo, la versión 4.4.2, la más reciente al escribir esto).

Al ejecutar el programa de instalación uno será guiado en las distintas etapas del proceso y, en general, las opciones por defecto son las adecuadas.

Terminada la instalación, desde el shortcut creado o desde los enlaces a las aplicaciones, se podrá abrir la consola del sistema.

Desinstalación

La documentación de R es muy vaga al respecto sólo habla de recurrir a Programs and Features en el Control Panel de Windows o al programa de desinstalación provisto con el producto. Algo no mencionado es revisar antes, las posibles bibliotecas o herramientas instaladas con .libPaths() en la consola de R, que mostraría algo como «C:/Users/%USERNAME%/Documents/R/win-library/4.4» o «C:/Program Files/R/R-4.4.2/library«, para verificar su eliminación.

El programa de desinstalación se encuentra en:

Sí se desea proceder desde el Control Panel

la destinstalación mostrará:

y al término de ejecución se deberá eliminar el producto inicialmente instalado junto con el contenido de C:\Users\%USERNAME%\AppData\Local, C:\Users\%USERNAME%\Documents\R\, y C:\Users\%USERNAME%\Documents\.Rhistory.


Uso

Idealmente, las instrucciones dadas aquí deben aplicar para cualquier sistema operativo en el que R pueda ser instalado, principalmente de tipo unix pero sabemos que Windows siempre es la excepción. De cualquier modo, cuando aplique una excepción, se señalará explícitamente.

Interactivo

Por «uso interactivo» deberá entenderse toda actividad que se haga a través de la consola de R (en modo REPL), aplicaciones como RStudio y entornos de libretas (e.g. Jupyter, Databricks, Dataiku).

En batch

En general, en modo batch lo entenderemos cuando no se haga uso de la consola de R ni de alguna aplicación como las señaladas en el apartado previo.

R proporciona un par de front-ends (formas o interfaces) desde las que se pueden ejecutar archivos de instrucciones y comandos de R (scripts). A diferencia del apartado dedicado al modo de trabajo interactivo (para efecto de las explicaciones de esta sección), nos referiremos a la ejecución de un script de R en modo batch (aunque esto no necesariamente implique una ejecición sin interacción con el usuario), cuando al término del script el control se regresa a la línea de comando y no a la consola.

Algunos intérpretes de comandos no hacen distinción entre mayúsculas o minúsculas, por lo que es igual invocar al intérprete de R como r o R. Para mayor información, consultar la documentación del intérprete o la ayuda en línea (r --help).

  1. Ejecución de un script.

    $ R -f hello.R
  2. Ejecución leyendo instrucciones desde un archivo.

    $ r --no-save < hello.R

  3. Ejecución omitiendo varias opciones de entorno leyendo instrucciones desde un archivo.

    $ R --vanilla -s < hello.R

  4. Ejecución silenciosa (sin mensaje de bienvenida) de un script.

    $ R -s -f hello.R
  5. .

***Más opciones por agregar***

Servidor R

** por desarrollar**


Troubleshooting

Mensajes de advertencia

Diversos mensajes pueden ser mostrados al momento de instalar un paquete, ejecutar un comando, hacer uso de una biblioteca, y un largo etcétera dentro el entorno de R pero que no representan un problema o impiden realizar algo. La sección se organiza con estos mensajes como encabezado.

Warning message:
In doTryCatch(return(expr), name, parentenv, handler) :
  unable to load shared object '/Library/Frameworks/R.framework/Resources/modules//R_X11.so':
  dlopen(/Library/Frameworks/R.framework/Resources/modules//R_X11.so, 0x0006): Library not loaded: /opt/X11/lib/libSM.6.dylib
  Referenced from: <33554B34-BF14-316F-B12C-9F6B4C9327DD> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/modules/R_X11.so
  Reason: tried: '/opt/X11/lib/libSM.6.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/X11/lib/libSM.6.dylib' (no such file), '/opt/X11/lib/libSM.6.dylib' (no such file), '/Library/Frameworks/R.framework/Resources/lib/libSM.6.dylib' (no such file), '/Library/Java/JavaVirtualMachines/jdk-11.0.18+10/Contents/Home/lib/server/libSM.6.dylib' (no such file)

El warning mostrado arriba apareció al instalar el kernel de R para Jupyter. Al parecer tiene que ver con el subsistema gráfico X11. El equipo donde se hizo la instalación del kernel no contaba con este subsistema ni con Java. Por el momento no se han percibido problemas adicionales.

Mensajes de error

Mensajes que al momento de instalar un paquete, ejecutar un comando, hacer uso de una biblioteca, y un largo etcétera dentro el entorno de R indican un problema que impide concretar o el funcionamiento de algo. La sección se organiza con cada mensaje como encabezado.

> IRkernel::installspec()
Error in IRkernel::installspec() : 
  jupyter-client has to be installed but “jupyter kernelspec --version” exited with code 127.
Además: Warning message:
In system2("jupyter", c("kernelspec", "--version"), FALSE, FALSE) :
  error in running command

Al tratar de registrar el kernel de R ante Jupyter, haciendo uso de la instrucción IRkernel::installspec(), se muestra el mensaje de error indicado. El mensaje indica que Jupyter no ha sido instalado por lo que se resuelve instalándolo (ver página de Jupyter en este sitio al respecto) o activando el entorno de Conda donde ya pudiera haber sido instalado.


Referencias

  1. Joseph Adler, «R in a nutshell«, O’Reilly, 1st ed. Sebastopol, CA. 2010.
  2. «Building R» in Contributing to GNU R, bookdown.org, web. Visited: 2024.03.11. URL: https://bookdown.org/lionel/contributing/building-r.html.
  3. «macOS» in Binaries available for gfortran, gnu.org, web. Visited: 2024.03.11. URL: https://gcc.gnu.org/wiki/GFortranBinaries#MacOS.
  4. «Building from source» in R Installation and Administration, web. Visited: 2024.03.11. URL: https://cran.r-project.org/doc/manuals/r-release/R-admin.html#Building-from-source.
  5. «How do I UNinstall R?«, R for Windows FAQ, Version for R-4.4.2; web. Visited:. 2024.11.23. URL: https://cran.r-project.org/bin/windows/base/rw-FAQ.html#How-do-I-UNinstall-R_003f

© Todos los derechos reservados.
Dr. Eduardo René Rodríguez Ávila

Creación: 2022.09.28
Última actualización: 2025.11.05

El contenido de este sitio puede ser copiado y reproducido libremente, siempre que no se altere y se cite su origen. Marcas y productos registrados se citan por referencia y sin fines de lucro ni dolo. Todas las opiniones son a título personal del o de los autores de estas y, salvo que se exprese de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello de lo que se trata. Para conocer más sobre la posición de privacidad y responsabilidad respecto de lo que se presenta en este sitio web y de cómo se ha obtenido, consulte la declaración correspondiente.