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

278 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

╔════════════════════════════════════════════════════════════════════════════╗
║ 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! 🚀