Ir al contenido
Molto

Instalación y plataformas

Un comando por plataforma, qué verifica antes de escribir nada y exactamente qué objetivos publican hoy las releases.

Dos binarios: molto, el sistema de build, y pickup, el gestor de toolchains al que le pide un compilador. Un solo comando instala los dos, los comprueba contra el SHA256SUMS publicado al lado de la release y los escribe en un directorio que ya es tuyo. Sin root, sin administrador y sin nada que desempaquetar.

Linux y macOS

curl -fsSL https://moltobuild.dev/install.sh | sh

Instala en ~/.local/bin e imprime la línea export PATH que hay que añadir si ese directorio aún no está en tu PATH. Los argumentos van después de --:

curl -fsSL https://moltobuild.dev/install.sh | sh -s -- --dir /usr/local/bin --no-pickup
Elección Opción Variable de entorno
Dónde instalar --dir <ruta> MOLTO_INSTALL_DIR
Un molto concreto --molto-version <v> MOLTO_VERSION
Un pickup concreto --pickup-version <v> PICKUP_VERSION
Instalar sólo molto --no-pickup —
Instalar sólo pickup --no-molto —
Apagar los colores — NO_COLOR

En macOS la misma línea instala los dos: pickup publica un binario arm64 para macOS desde la 0.9.4. Lo que pickup encuentra allí es el compilador que traen las herramientas de línea de comandos de Xcode, así que instálalas primero si el Mac todavía no las tiene:

xcode-select --install

Un --pickup-version anterior a la 0.9.4 no tiene binario para macOS, y la instalación se detiene en la descarga que lo nombra.

Sólo Apple Silicon. Un Mac Intel se rechaza por su nombre, en vez de entregarle un binario que no iba a ejecutarse.

Windows

irm https://moltobuild.dev/install.ps1 | iex

Instala en %LOCALAPPDATA%\Programs\molto, que no necesita permisos de administrador y que, a diferencia de %APPDATA%, no viaja a otras máquinas. El directorio se añade al PATH de usuario si no estaba ya, así que abre una terminal nueva después: una shell en marcha conserva el entorno con el que arrancó.

Pasar el script por iex no deja sitio para los argumentos, así que esa forma se configura con variables de entorno:

$env:MOLTO_INSTALL_DIR = 'C:\tools\molto'
irm https://moltobuild.dev/install.ps1 | iex

Para usar los parámetros —-Dir, -MoltoVersion, -PickupVersion, -NoPickup, -NoMolto, -Help— constrúyete un scriptblock con el script:

& ([scriptblock]::Create((irm https://moltobuild.dev/install.ps1))) -NoPickup

Con Windows PowerShell 5.1 basta; no hay que instalar nada antes.

Qué verifica el instalador

Los dos scripts hacen las mismas tres cosas, en este orden, para cada binario:

  1. Resolver la versión — el redirect de /releases/latest nombra la etiqueta más nueva sin gastar una llamada a la API, así que un GitHub con el límite de peticiones agotado no rompe la instalación.
  2. Descargar el binario y el SHA256SUMS publicado a su lado en la misma release.
  3. Calcular el SHA-256 del archivo en disco y compararlo con la línea que nombra exactamente ese asset.

Sólo se mueve al directorio de instalación un archivo que haya coincidido. Una discrepancia, o un asset que los checksums no listan, aborta antes de escribir nada — y ninguno de los dos scripts tiene una opción que se salte la comprobación.

Estado por plataforma

Objetivo Estado Qué publica una release
Linux x86-64 Soportado Un binario estático en cada release.
Windows x86-64 Soportado Un .exe en cada release, compilado de forma cruzada y pasado por la suite entera en un runner de Windows antes de publicarse.
macOS arm64 Soportado Un binario en cada release, construido en un Mac —a Darwin no se compila de forma cruzada— y ejecutado allí antes de publicarse. No es estático, y no va firmado.
macOS x86-64 (Intel) Sin medir Nada. Ni se prueba ni se promete.

Lo que no está en esa tabla no tiene binario publicado. Las fuentes compilan con cualquier compilador de C suficientemente reciente, así que una plataforma que no aparece es una que nadie ha medido, no una negativa.

El compilador no entra aquí

Instalar Molto no instala ningún compilador, y Molto nunca elige uno. Tu manifiesto declara las capacidades que necesita el código, pickup responde qué driver local las proporciona, y demuestra cada capacidad compilando un programa que la usa.

Si la máquina no tiene nada suficientemente reciente, pickup se trae una toolchain a ~/.pickup — otra vez sin root:

pickup doctor            # con qué puede construir esta máquina, y qué le falta
pickup install clang     # una toolchain tuya, bajo ~/.pickup

Sin pickup, C_COMPILER y CPP_COMPILER nombran los drivers directamente. Esa ruta se salta pickup por completo, y con él la verificación de requires, así que Molto avisa por stderr cuando el compilador se ha elegido a mano.

macOS: dos cosas que conviene saber

El binario no va firmado ni notarizado. Si lo descargas con el navegador, macOS le pone el atributo com.apple.quarantine y Gatekeeper se niega a ejecutarlo. Quita el atributo, o ábrelo una vez desde el Finder con clic derecho y Abrir:

xattr -d com.apple.quarantine molto pickup

Bajarlo con curl —que es lo que hace el instalador— no pone ningún atributo de cuarentena, así que esto sólo afecta a una descarga manual por el navegador.

El binario de macOS no es estático, a diferencia del de Linux. No puede serlo: Apple no distribuye una libSystem estática ni admite enlazarla. En su lugar enlaza contra libSystem, que forma parte de cualquier macOS, así que tampoco hay nada que instalar al lado.

Después de instalar

molto --version
pickup doctor

Si la shell responde command not found, el directorio de instalación no está en tu PATH — el instalador POSIX imprime la línea que hay que añadir, y el de PowerShell lo añade por ti, pero sólo para las terminales que abras después.