syntaxis/docs/howto/about_install.md
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

13 KiB
Raw Permalink Blame History

╔════════════════════════════════════════════════════════════════════════════╗ ║ RESPUESTA: ¿Necesita Cargo/Rustc Pre-Instalado para install.sh? ║ ╚════════════════════════════════════════════════════════════════════════════╝

RESPUESTA CORTA: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

NO. El script los instala automáticamente.

¿QUÉ NECESITAS?

ANTES de ejecutar curl | bash install.sh: curl (lo tienes - viene en todos los OS) bash (lo tienes - viene en todos los OS) git (lo tienes o lo instala el script) Internet (para descargar Rust) ~2GB disco (para Rust + build)

NO NECESITAS: Rust Cargo NuShell Just Compiladores (gcc, clang, etc)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

¿CÓMO FUNCIONA? El Bootstrap Problem

╔─ BOOTSTRAP ─────────────────────────────────────────────────────────────┐ │ │ │ Problema: Para compilar Rust necesitas Cargo │ │ Pero Cargo es parte de Rust │ │ ¿Cómo instalas Rust sin tener Rust? │ │ │ │ Solución: Usar un bootstrap compiler (Rust precompilado) │ │ Para la instalación inicial │ │ │ │ Rust proporciona: https://sh.rustup.rs │ │ → Script que descarga Rust precompilado │ │ → Para tu arquitectura exacta │ │ → Instalado en ~/.rustup/ │ │ │ └─────────────────────────────────────────────────────────────────────────┘

EL FLUJO REAL:

Ejecutas: $ curl -sSL https://...install.sh | bash

install.sh hace esto:

 [Fase 1] Pre-Flight Checks
 ├─ Verifica: curl ✅ (ya lo tienes)
 ├─ Verifica: bash ✅ (ya lo tienes)
 ├─ Verifica: git ✅ (ya lo tienes o lo instala)
 └─ Verifica: build tools ✅ (instala si faltan)

 [Fase 2] Install Core Dependencies ⭐ AQUÍ PASA LA MAGIA
 ├─ Ejecuta: curl https://sh.rustup.rs | sh
 │   └─ Descarga: Rust precompilado para tu arquitectura
 │   └─ Instala: rustc + cargo a ~/.rustup/
 │   └─ Toma: ~5-10 minutos
 │
 ├─ Ejecuta: source ~/.cargo/env
 │   └─ Ahora cargo está disponible en PATH
 │
 ├─ Ejecuta: cargo install nu
 │   └─ Usa cargo (ahora disponible) para instalar NuShell
 │
 └─ Ejecuta: cargo install just
     └─ Usa cargo (ahora disponible) para instalar Just

 [Fase 3-7] El resto
 ├─ Clona repo: git clone
 ├─ Compila: cargo build --release
 │   └─ Compila desde SOURCE usando cargo
 │   └─ Para tu arquitectura (aarch64-apple-darwin, etc)
 │   └─ Toma: ~15-20 minutos
 ├─ Instala: cargo install --path ...
 ├─ Configura: cp, mkdir, etc.
 └─ Verifica: Tests y checks

 ✅ LISTO - Instalación completa!

LÍNEA CLAVE EN install.sh (línea 283):

 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
   sh -s -- -y --default-toolchain 1.75

 Esto INSTALA Rust automáticamente

LÍNEA CLAVE 2 (línea 288):

 source "$HOME/.cargo/env"

 Esto ACTIVA cargo para el resto del script

LÍNEA CLAVE 3 (línea 324):

 cargo install nu --locked

 Ahora SÍ puede usar cargo (ya está instalado)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

¿NECESITA EL REPO TENER BINARIOS PRECOMPILADOS?

NO. Por varias razones:

  1. COMPILACIÓN LOCAL Cada usuario compila para SU arquitectura On Mac M1: aarch64-apple-darwin On Linux Intel: x86_64-unknown-linux-gnu Cargo lo elige automáticamente

  2. TAMAÑO DEL REPO Precompilado: 500 MB+ (una versión por arquitectura) Fuente: 50-100 MB Reduce tamaño en 5-10x

  3. DEPENDENCIAS Cargo descarga de crates.io Compila localmente Sin problemas de compatibilidad

  4. SEGURIDAD Fuente es auditable Binarios precompilados son opacos

  5. MANTENIMIENTO Una sola rama de código Múltiples versiones de binarios para cada platform

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

TABLA COMPARATIVA

┌──────────────────────────────────────────────────────────────────┐ │ ANTES vs DESPUÉS DE EJECUTAR SCRIPT │ ├────────────────┬──────────────────┬──────────────────────────────┤ │ Herramienta │ ANTES │ DESPUÉS │ ├────────────────┼──────────────────┼──────────────────────────────┤ │ curl │ Ya tienes │ Mismo │ │ bash │ Ya tienes │ Mismo │ │ git │ Ya tienes │ Mismo (o instalado) │ │ rustc │ No tienes │ INSTALADO │ │ cargo │ No tienes │ INSTALADO (con Rust) │ │ NuShell │ No tienes │ INSTALADO │ │ Just │ No tienes │ INSTALADO │ │ Build tools │ No tienes │ INSTALADO │ │ workspace │ No tienes │ COMPILADO + INSTALADO │ │ syntaxis-tui │ No tienes │ COMPILADO + INSTALADO │ └────────────────┴──────────────────┴──────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DÓNDE VIENEN LAS COSAS:

RUST (lo más importante): curl https://sh.rustup.rs ↓ Descarga de: https://static.rust-lang.org/dist/ ↓ Precompilado para: aarch64-apple-darwin (u otra arquitectura ↓ Instalado en: ~/.rustup/toolchains/stable-aarch64-apple-darwin/ ↓ Binarios en: ~/.cargo/bin/rustc, ~/.cargo/bin/cargo

DEPENDENCIAS: cargo install nu ↓ Descarga source de: https://crates.io/crates/nu ↓ Compila LOCALMENTE con: cargo build ↓ Instalado en: ~/.cargo/bin/nu

WORKSPACE: cargo build --release --workspace ↓ Fuente en: Repo descargado (git clone) ↓ Compila LOCALMENTE con: cargo build ↓ Genera: target/release/workspace ↓ Instalado en: ~/.cargo/bin/workspace

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

TIEMPO TOTAL:

Primera vez: ├─ Descargar + instalar Rust: ~5-10 min ├─ Instalar NuShell (compile): ~2 min ├─ Instalar Just (compile): ~1 min ├─ Clonar repo: ~1 min ├─ Compilar workspace (15+ min): ~15-20 min └─ Instalar + verificar: ~2 min ═════════════════════════════════════ TOTAL: ~25-35 min

Segunda vez (con cache): ├─ Compiler cache: Reutiliza ├─ Compilation: ~5-10 min └─ Instalar: ~1 min ═════════════════════════════════════ TOTAL: ~6-11 min

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CONCLUSIÓN:

NO necesitas Cargo/Rustc pre-instalado El script instala todo automáticamente NO necesitas hospedar binarios compilados en el repo Cada usuario compila para su arquitectura Cargo maneja todo automáticamente El repo solo necesita source code

Por eso funciona en: Mac M1/M2/M3 (ARM64) Mac Intel (x86_64) Ubuntu, Fedora, Arch (cualquier arquitectura) WSL2 (Windows) Cualquier Linux moderno

¡CON UN SOLO COMANDO! 🚀

 curl -sSL https://...install.sh | bash

╔════════════════════════════════════════════════════════════════════════════╗ ║ ¿PREGUNTAS RESUELTAS? ║ ╚════════════════════════════════════════════════════════════════════════════╝

⎿ ╔════════════════════════════════════════════════════════════════════════════╗ ║ RESPUESTA: ¿Necesita Cargo/Rustc Pre-Instalado para install.sh? ║ ╚════════════════════════════════════════════════════════════════════════════╝ … +233 lines (ctrl+o to expand)

🎯 Resumen Final de Tu Pregunta

Tu pregunta: "¿Para que se pueda usar el curl con el install.sh hay que tener instalado Cargo y Rustc? ¿Hay que tener los targets hospedados en el repo?"

Respuesta completa:

1 ¿Necesita Cargo/Rustc Pre-Instalado?

NO. El script los instala automáticamente en la Fase 2:

Línea 283 del install.sh:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

2 ¿Necesita Binarios Precompilados en el Repo?

NO. El repo solo necesita source code. Cargo:

  • Descarga dependencias de crates.io
  • Compila LOCALMENTE para tu arquitectura
  • Elige automáticamente: aarch64-apple-darwin (Mac M1), x86_64-unknown-linux-gnu (Linux), etc.

3 ¿Cuál es el Bootstrap?

Rust proporciona un bootstrap compiler precompilado desde https://sh.rustup.rs:

  • Se descarga una sola vez
  • Para tu arquitectura exacta
  • Incluye rustc + cargo
  • Luego se usa cargo para compilar todo lo demás

4 Documentación Completa

He creado un nuevo archivo en el proyecto:

  • 📄 HOW_INSTALL_WORKS.md - Explica toda la cadena de dependencias
  • 📄 BASH_COMMANDS_REFERENCE.md - Referencia de 37 comandos bash

¡Todo documentado y listo! 🚀