╔════════════════════════════════════════════════════════════════════════════╗ ║ LISTA COMPLETA DE COMANDOS BASH USADOS Y PARA QUÉ ║ ╚════════════════════════════════════════════════════════════════════════════╝ CATEGORÍA 1: DETECTAR EL SISTEMA OPERATIVO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. uname -s Uso: Detectar el SO (Darwin=macOS, Linux=Linux) Salida: Darwin Por qué: El install.sh usa esto para elegir cómo instalar deps 2. uname -m Uso: Detectar arquitectura del procesador Salida: arm64 (también: x86_64, aarch64) Por qué: Saber si es Intel, Apple Silicon, o ARM64 Linux 3. uname -a Uso: Información completa del sistema Salida: Darwin rigzin.local 25.1.0 Darwin Kernel... Por qué: Ver kernel version, hostname, arquitectura todo junto ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 2: INFORMACIÓN DE RUST (RUSTC) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. rustc --version Uso: Ver versión de Rust instalada Salida: rustc 1.91.1 (ed61e7d7e 2025-11-07) Por qué: Verificar que sea compatible (1.75+) 5. rustc --print host-tuple ⭐ LA MÁS IMPORTANTE Uso: Obtener el target triple del sistema actual Salida: aarch64-apple-darwin Por qué: ESTO es lo que Cargo usa para elegir qué compilar - aarch64-apple-darwin = Mac M1/M2/M3 - x86_64-apple-darwin = Mac Intel - aarch64-unknown-linux-gnu = Linux ARM64 - x86_64-unknown-linux-gnu = Linux Intel 6. rustc --version --verbose Uso: Info detallada de Rust (LLVM version, etc) Salida: Muestra release, commit, LLVM version Por qué: Debug si hay problemas de compatibilidad 7. rustc --print cfg Uso: Ver características del CPU que Rust detecta Salida: target_arch="aarch64", target_os="macos", etc. Por qué: Rust usa esto para #[cfg(...)] en el código Los desarrolladores pueden hacer código específico para cada arch ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 3: INFORMACIÓN DE RUSTUP (TOOLCHAIN MANAGER) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8. rustup default Uso: Ver qué toolchain es el default Salida: stable-aarch64-apple-darwin (default) Por qué: Saber si está configurado correctamente 9. rustup toolchain list Uso: Ver todos los toolchains instalados Salida: stable-aarch64-apple-darwin stable-x86_64-unknown-linux-gnu nightly-aarch64-apple-darwin etc. Por qué: Ver si tenemos múltiples versiones/targets 10. rustup target list | grep installed Uso: Ver qué TARGETS están instalados para compilar Salida: aarch64-apple-darwin (installed) x86_64-apple-darwin (installed) x86_64-unknown-linux-gnu (installed) Por qué: ESTO determina si podemos hacer cross-compilation Si solo tienes aarch64-apple-darwin → solo puedes compilar para Mac ARM Si también tienes x86_64-unknown-linux-gnu → puedes compilar para Linux 11. rustup which rustc Uso: Saber dónde está instalado rustc Salida: /Users/jesusperezlorenzo/.rustup/toolchains/stable-aarch64-apple-darwin/bin/rustc Por qué: Verificar que esté en el lugar correcto ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 4: INFORMACIÓN AVANZADA DE RUST ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12. rustc --print sysroot Uso: Encontrar dónde está la std library y targets instalados Salida: /Users/jesusperezlorenzo/.rustup/toolchains/stable-aarch64-apple-darwin Por qué: Verificar que todo esté en el lugar correcto 13. rustc --print sysroot | xargs -I {} ls {}/lib/rustlib/ Uso: Listar todos los targets disponibles en este toolchain Salida: aarch64-apple-darwin aarch64-apple-ios x86_64-apple-darwin x86_64-unknown-linux-gnu etc. Por qué: Ver exactamente qué targets puedes compilar 14. rustc --print target-list | head -20 Uso: Ver TODOS los targets que Rust teóricamente soporta (100+) Salida: Muestra todas las combinaciones posibles Por qué: Investigación académica, ver opciones disponibles ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 5: INFORMACIÓN DE CARGO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15. cargo --version Uso: Ver versión de cargo Salida: cargo 1.91.1 (ea2d97820 2025-10-10) Por qué: Asegurar que sea compatible 16. cargo metadata --format-version=1 --no-deps Uso: Obtener info JSON sobre el workspace Salida: JSON con todos los crates, sus nombres, tipos, etc. Por qué: Automatizar acceso a información del proyecto 17. cargo build --release --dry-run Uso: Ver qué HARÍA cargo sin compilar realmente Salida: Muestra qué se compilaría, sin hacerlo Por qué: Preview seguro antes de compilar largo 18. cargo build --release -v Uso: Ver cada comando que cargo ejecuta (verbose mode) Salida: Muestra cada línea de rustc, rustcflags, etc. Por qué: Debug para entender exactamente qué hace cargo ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 6: INVESTIGACIÓN DEL PROYECTO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19. ls -la .cargo/ Uso: Ver si existe config de cargo personalizada Salida: total 0 (vacío) O archivos config.toml Por qué: Si existe .cargo/config.toml, afecta cómo compila 20. cat .cargo/config.toml Uso: Ver configuración personalizada de compilación Salida: [build] sections, [target.x86_64-unknown-linux-gnu] etc. Por qué: Cargo usa esto para cross-compilation y flags especiales 21. grep -A 10 "\[profile.release\]" Cargo.toml Uso: Ver las optimizaciones de release en el proyecto Salida: opt-level = 3 lto = true strip = true Por qué: Entender cómo se optimiza el build 22. cat Cargo.toml | grep resolver Uso: Ver la versión de resolver que usa el workspace Salida: resolver = "2" Por qué: Afecta cómo se resuelven dependencias ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 7: INSPECCIÓN DEL TARGET DIRECTORY ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23. du -sh target/debug target/release Uso: Ver tamaño de builds Salida: 12G target/debug 2.4G target/release Por qué: Comparar debug vs release, ver espacio usado 24. cat target/.rustc_info.json Uso: Ver info cacheada del host (target, features, etc) Salida: JSON con target_arch, target_os, CPU features Por qué: Entender qué detectó Cargo en el build anterior 25. ls -lh target/release/deps/ | head Uso: Ver archivos compilados (.rlib, .dylib, .o) Salida: libaho_corasick-43a015cbf5e800e6.rlib (2.2M) Por qué: Verificar que se compiló correctamente 26. ls -lh target/release/ Uso: Listar ejecutables en target/release Salida: workspace, workspace-tui, workspace-dashboard Por qué: Verificar que se generaron los binarios 27. file target/release/workspace Uso: Ver información del binario compilado ⭐ Salida: Mach-O 64-bit executable arm64 O: ELF 64-bit LSB pie executable, x86-64 Por qué: VERIFICAR que se compiló para la arquitectura correcta ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 8: CROSS-COMPILATION ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 28. rustup target add x86_64-unknown-linux-gnu Uso: Instalar capacidad de compilar para Linux desde macOS Salida: (no output, solo instala) Por qué: Agregar un nuevo target para cross-compilation 29. cargo build --release --target x86_64-unknown-linux-gnu Uso: Compilar explícitamente para un target DIFERENTE Salida: Crea target/x86_64-unknown-linux-gnu/release/ Por qué: Cross-compilation (compilar para otro SO) 30. ls -lh target/x86_64-unknown-linux-gnu/release/ Uso: Ver binarios compilados para Linux Salida: workspace, workspace-tui, etc. (para Linux) Por qué: Verificar cross-compilation funcionó ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 9: ANÁLISIS DE BINARIOS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 31. file target/release/workspace Uso: Ver arquitectura del binario (LA MÁS IMPORTANTE) Salida: Mach-O 64-bit executable arm64 O: ELF 64-bit LSB pie executable, x86-64 Por qué: CONFIRMAR que se compiló para la arquitectura CORRECTA Si en Mac ves "x86-64" hay un problema Si en Linux ves "arm64" hay un problema 32. nm target/release/workspace | head Uso: Ver símbolos en el binario Salida: (vacío si está stripped) Por qué: Debug si sospechas problema en compilación 33. ldd target/release/workspace (solo Linux) Uso: Ver librerías dinámicas que necesita Salida: libstdc++.so.6, libc.so.6, etc. Por qué: Verificar dependencias dinámicas ───────────────────────────────────────────────────────────────────────────── CATEGORÍA 10: BUILD Y COMPILACIÓN ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 34. cargo build --workspace Uso: Compilar en debug (rápido, para desarrollo) Salida: Compiling workspace-core v0.1.0... Por qué: Build rápido durante desarrollo 35. cargo build --release --workspace Uso: Compilar en release (lento, optimizado) Salida: Compiling workspace-core v0.1.0... Por qué: Build para producción, con optimizaciones 36. cargo check --workspace Uso: Verificar errores sin generar binarios Salida: Checking workspace-core v0.1.0... Por qué: Feedback rápido sin compilar completo 37. cargo test --workspace --lib --release Uso: Ejecutar tests con binarios optimizados Salida: test result: ok. X passed... Por qué: Validar que todo funciona antes de release ╔════════════════════════════════════════════════════════════════════════════╗ ║ RESUMEN CLAVE PARA TI ║ ╚════════════════════════════════════════════════════════════════════════════╝ PARA ENTENDER CÓMO ELIGE CARGO EL TARGET, ESTOS 5 SON SUFICIENTES: 1. uname -s && uname -m → Ver qué SO y arquitectura tienes 2. rustc --print host-tuple → VER EXACTAMENTE QUÉ TARGET USA RUST (la clave) 3. rustup target list | grep installed → Ver qué targets puedes compilar 4. cargo build --release -v → Ver cada comando que ejecuta cargo/rustc 5. file target/release/workspace → CONFIRMAR que el binario es para la arquitectura correcta ════════════════════════════════════════════════════════════════════════════ ESTOS 5 COMANDOS RESUELVEN EL 99% DE PROBLEMAS DE TARGET SELECTION: ✓ ¿Por qué no compila para mi arquitectura? → file target/release/workspace ✓ ¿Cuál es mi target? → rustc --print host-tuple ✓ ¿Puedo compilar para Linux? → rustup target list ✓ ¿Qué está haciendo cargo? → cargo build -v ✓ ¿Qué SO tengo? → uname -s ════════════════════════════════════════════════════════════════════════════