syntaxis/docs/howto/about_install.md

278 lines
13 KiB
Markdown
Raw Permalink Normal View 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! 🚀