December 9, 2022

762 words 4 mins read

Instalación de Quarto-CLI en sistemas Linux-arm64

Instalación de Quarto-CLI en sistemas Linux-arm64

ACTUALIZACIÓN:

Este artículo ya no es relevante debido a la disponibilidad de compilaciones oficiales de Quarto para la arquitecura arm64. Ahora la instalación es bastante simple:

# Descarga el instalador deb
wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.3.433/quarto-1.3.433-linux-arm64.deb
# Instala Quarto
sudo dpkg -i quarto-1.3.433-linux-arm64.deb

Dejaré el artículo anterior abajo como referencia.


Quarto es el nuevo sistema de publicación científica y técnica de código abierto de Posit basado en Pandoc que permite entrelazar texto narrativo y código para producir resultados de alta calidad, incluidos informes, presentaciones, sitios web y más. Es el sucesor del ecosistema R Markdown de gran éxito, pero específico de R, que lleva todos los beneficios de R Markdown a otros lenguajes de programación como Python, Julia y Observable.

Desafortunadamente, debido a la falta de fuentes oficiales de binarios arm64 para algunas de sus dependencias (por ejemplo, Deno, SASS, Pandoc), y como me explicaron, su ancho de banda limitado para soportar arquitecturas no suficientemente populares como Linux arm64. Quarto no admite oficialmente la arquitectura arm64, pero eso no significa que no podamos hacer que funcione en ella nosotros mismos.

Con la amable ayuda de Carlos Scheidegger (@scheidegger@mastodon.social), un ingeniero de software de Posit que trabaja en Quarto, Me las arreglé para instalar Quarto en sistemas arm64 y me gustaría compartir cómo lo hice con la comunidad R.

Plataforma de Prueba

Probé esto en Raspberry Pi 3B+ y 4B con Raspberry Pi OS y Ubuntu 22.04 LT, y en una máquina virtual Oracle Ampere Altra con Ubuntu 22.04 LTS, por lo que estoy bastante seguro de que debería funcionar en cualquier sistema arm64, siempre que puedas obtener versiones arm64 adecuadas de las dependencias de Quarto en tu distribución de Linux específica. En todos los casos, comencé con una instalación limpia y actualizada del sistema operativo, así que asegurate de actualizar el tuyo también antes de comenzar.

sudo apt update
sudo apt dist-upgrade

Instalación de Dependencias

Primero, necesitamos una versión arm64 suficientemente moderna de Pandoc, y dado que la versión que viene con los repositorios deb estándar para su sistema operativo probablemente sea demasiado antigua, es mejor que descarguemos una versión moderna nosotros mismos (esto es muy importante ya que Quarto fallará con versiones anteriores de Pandoc).

wget https://github.com/jgm/pandoc/releases/download/2.19.2/pandoc-2.19.2-1-arm64.deb
sudo dpkg -i pandoc-2.19.2-1-arm64.deb
rm pandoc-2.19.2-1-arm64.deb

Además, necesitamos R y el paquete R rmarkdown, pero dado que estás leyendo este artículo en un blog relacionado con R, asumiré que ya tienes R instalado en tu sistema y sabes cómo instalar paquetes R, si no lo sabes, puedes revisar esta otra publicación donde detallo opciones para instalar R en una Raspberry Pi. Para aclarar, estoy considerando R como una dependencia porque estoy escribiendo en un blog relacionado con R, pero si vas a usar Quarto con algún otro lenguaje de programación, R no es obligatorio.

Instalación de Quarto

Dado que no hay binarios arm64 para Quarto, lo instalaremos desde la fuente. Sigue estos pasos de arriba a abajo sin saltarte ninguno ya que todos dependen del anterior:

Primero, necesitamos clonar el repositorio de GitHub en una ubicación adecuada. Ten en cuenta que, opcionalmente, puedes clonar una versión de lanzamiento específica si lo prefieres utilizando la opción --branch (por ejemplo, --branch v1.3.47)

sudo su -

cd /usr/local/src

git clone --depth 1 https://github.com/quarto-dev/quarto-cli

cd quarto-cli

A continuación, vamos a engañar a Quarto para que instale una versión arm64 de Deno desde una fuente alternativa modificando su archivo configure.sh antes de ejecutarlo.

sed -i 's/https:\/\/github.com\/denoland\/deno\/releases\/download/https:\/\/github.com\/LukeChannings\/deno-arm64\/releases\/download/' configure.sh
sed -i 's/DENOFILES=deno-x86_64-unknown-linux-gnu.zip/DENOFILES=deno-linux-arm64.zip/' package/scripts/common/utils.sh
sed -i 's/DENO_DIR=deno-x86_64-unknown-linux-gnu/DENO_DIR=deno-linux-arm64/' package/scripts/common/utils.sh

./configure.sh

Finalmente, vamos a reemplazar los binarios externos amd64 que Quarto descarga durante la instalación con binarios arm64.

mkdir package/dist/bin/tools/deno-x86_64-unknown-linux-gnu/
ln -s /usr/local/src/quarto-cli/package/dist/bin/tools/deno-linux-arm64/deno package/dist/bin/tools/deno-x86_64-unknown-linux-gnu/deno

rm package/dist/bin/tools/pandoc
ln -s /usr/bin/pandoc package/dist/bin/tools/pandoc

rm -rf package/dist/bin/tools/dart-sass/
wget https://github.com/sass/dart-sass/releases/download/1.57.1/dart-sass-1.57.1-linux-arm64.tar.gz
tar zxvf dart-sass-1.57.1-linux-arm64.tar.gz
rm dart-sass-1.57.1-linux-arm64.tar.gz
mv -f dart-sass/ package/dist/bin/tools/

Si todo salió bien, ahora tienes una instalación funcional de la interfaz de línea de comandos de Quarto en tu sistema, y puedes comenzar a renderizar archivos qmd desde la terminal. Para probar si realmente funciona, rendericemos un documento de prueba; crea un archivo test.qmd con el siguiente contenido:

---
title: "Test Document"
format: html
---

## Hello

```{r}
print("world")
```

Y renderiza el documento desde una terminal del sistema con el siguiente comando:

quarto render test.qmd

Si todo va bien, obtendrás un archivo test.html en la ubicación actual.

No he descubierto cómo habilitar la integración de RStudio IDE con Quarto (las compilaciones experimentales de RStudio para arm64 vienen con las funciones de integración con Quarto deshabilitadas). He planteado la pregunta en el repositorio de GitHub y actualizaré esta publicación si surge una solución.

Edit this page
comments powered by Disqus