Compilar desde el código fuente
Es fácil compilar GraphoOS desde el código fuente en una distribución GNU/Linux. Cargo se encarga de la compilación; lo único que tienes que hacer es asegurarte de que están instaladas las dependencias correctas.
-
Instala el compilador de Rust y Cargo con
rustup.rs. Si ya tienes la toolchain, asegúrate de usar la última versión de Rust. -
Instala las dependencias de tu sistema operativo:
Ubuntu
sudo apt install clang libxkbcommon-x11-dev pkg-config libvulkan-dev libwayland-dev xorg-dev libxcb-shape0-dev libxcb-xfixes0-dev
Fedora
sudo dnf install clang libxkbcommon-x11-devel libxcb-devel vulkan-loader-devel wayland-devel openssl-devel pkgconf
Void Linux
sudo xbps-install -S base-devel clang libxkbcommon-devel vulkan-loader wayland-devel
Mientras los repositorios de GraphoOS sean privados, Cargo necesita tus credenciales de GitHub para traer las dependencias
graphoos-*. El.cargo/config.tomldel repositorio ya le dice a Cargo que use elgitdel sistema, así que basta con haber hechogh auth login(o tener un token en el ayudante de credenciales de git). En un contenedor o en un trabajo de CI, exporta un token y ejecutagit config --global url."https://x-access-token:${GH_TOKEN}@github.com/".insteadOf "https://github.com/"antes de clonar: el clon lo necesita tanto como la compilación. Comprobado el 2026-09-24 en un contenedorrust:1.98.1-bookwormlimpio siguiendo estos pasos tal cual (registro en build-logs).
- Clona este repositorio (este comando lo clona en tu carpeta personal):
git clone https://github.com/Empoorio/graphoos.git ~/graphoos
- Entra con
cden el repositorio y ejecuta el comando de compilación con la opción de release
cd ~/graphoos
cargo install --path . --bin graphoos --profile release-lto --locked
release-ltooptimiza el programa entero de una vez y necesita bastante más de 8 GB de memoria en el último paso; un contenedor o equipo con 8 GB o menos muere ahí sin decir nada. En uno así, compila con--profile release: el mismo editor, algo más grande y más lento.Si usas otra distribución y te cuesta encontrar las dependencias adecuadas, ¡avísanos en una issue!
Una vez compilado GraphoOS, el ejecutable estará en $HOME/.cargo/bin/graphoos y debería estar en el PATH automáticamente.
Gramáticas, consultas y proxies
Un programa compilado solo con cargo no tiene colores de sintaxis hasta
que encuentra gramáticas: busca primero las que lleva consigo y después
las descargadas. make app las mete en GraphoOS.app/Contents/Resources;
para una compilación propia, ponlas a su lado con
scripts/bundle_resources.sh ~/.cargo/share/graphoos
(share/graphoos junto a la carpeta del programa; también vale
resources/ al lado del programa, y GRAPHOOS_RESOURCES_DIR apunta a
cualquier otra carpeta). Toma los archivos de gramáticas de
GRAPHOOS_GRAMMARS_DIST (el dist/ del repositorio de gramáticas) y los
proxies de Linux de scripts/build_linux_proxies.sh. Con ellos, una
instalación limpia tiene colores y se conecta a máquinas Linux sin red y
sin cuenta. tools/bundled_smoke.py lo comprueba en el editor en marcha.
Compilar sin red, y de forma reproducible
scripts/vendor_tarball.sh [commit] crea graphoos-<versión>-<commit>-vendored.tar.gz: el
repositorio en ese commit y todas las dependencias con las que compila (vendor/), con un
.cargo/config.toml que las toma de ahí. Compila sin red y sin credenciales:
tar xzf graphoos-0.5.0-beta.1-<commit>-vendored.tar.gz && cd graphoos-0.5.0-beta.1-<commit>
RUSTUP_TOOLCHAIN=1.98.1 cargo build --offline --frozen --profile release
RUSTUP_TOOLCHAIN porque rust-toolchain.toml pide también rustfmt y clippy, que para compilar
no hacen falta y rustup intentaría descargar: sin red, nombra la toolchain instalada.
Dos compilaciones del mismo commit dan los mismos bytes cuando se hacen desde la misma ruta
(scripts/reproducible_check.sh compila dos veces en /tmp/graphoos-build y compara).
Desde dos carpetas distintas, no: cargo mete la ruta de los paquetes propios del workspace en
el nombre de sus símbolos, adonde --remap-path-prefix no llega.
Compilar con Docker o Podman
Los paquetes de las releases se compilan en contenedores basados en Dockerfiles de varias etapas. Para orquestar las compilaciones con facilidad, en la raíz del repositorio hay un manifiesto docker-bake.hcl que define todas las etapas y los objetivos.
Si quieres compilar todos los paquetes de Ubuntu, puedes ejecutar RELEASE_TAG_NAME=nightly docker buildx bake ubuntu (RELEASE_TAG_NAME es una variable de entorno obligatoria que indica qué tipo de release se compila y, además, fija la propia versión).
Para limitarte a una versión concreta de una distribución, puedes indicar el objetivo con su versión correspondiente de la matriz; por ejemplo, para compilar solo el paquete de Ubuntu Focal, ejecuta RELEASE_TAG_NAME=nightly docker buildx bake ubuntu-focal.
Además de compilar varias versiones del sistema a la vez, las compilaciones con Docker también intentan hacer compilación cruzada de GraphoOS para otras arquitecturas.
No hace falta tener QEMU instalado, porque es compilación cruzada de verdad: HOST ejecuta la arquitectura nativa de tu sistema y CPU y TARGET es la arquitectura deseada, en lugar de levantar un contenedor que ejecute un sistema con la arquitectura TARGET.
![WARNING] No ejecutes objetivos genéricos como
ubuntuofedorasi no tienes una máquina muy potente, porque lanzan muchos trabajos a la vez que tardan mucho en compilar.
Fuente: docs/es/building-from-source.md