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:
- Resolver la versión — el redirect de
/releases/latestnombra 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. - Descargar el binario y el
SHA256SUMSpublicado a su lado en la misma release. - 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.