Actualización de cargo install: cómo actualizar crates binarios en Rust

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

«cargo install» existe, ¿pero «cargo update» no? El dolor familiar de todo desarrollador Rust

\n\n

Acabas de ejecutar cargo install ripgrep para obtener el binario rg más reciente. Pasó una semana. Escuchas que ha salido una nueva versión — 14.1.0 en lugar de 13.0.0. Y entonces surge una pregunta razonable: «Does cargo install have an equivalent update command?»

\n\n

Esta pregunta ha acumulado miles de visitas en Stack Overflow. Y con razón. Resulta que en cargo no hay un comando incorporado cargo install update. No, no te has quedado ciego. Realmente no existe. Pero esto no significa que estés condenado a descargar manualmente las nuevas versiones. Hay varios enfoques, y los analizaremos todos — desde los simples hasta los elegantes.

\n\n

En este artículo no solo traduciremos la respuesta de Stack Overflow. Compararemos enfoques, mostraremos código real y daremos consejos prácticos. ¡Allá vamos!

\n\n

¿Por qué Cargo no tiene un comando «update» para los crates instalados?

\n\n

Antes de lanzarnos a buscar errores, entendamos la filosofía. cargo install está diseñado para instalar crates binarios (aquellos que en Cargo.toml tienen una sección [[bin]]). No es un gestor de paquetes al estilo de apt o npm. Cargo es ante todo un compilador y gestor de dependencias para proyectos, no un instalador global de software.

\n\n

El comando cargo update existe, pero funciona dentro del proyecto — actualiza las dependencias en Cargo.lock. Para los binarios instalados globalmente se necesita otra solución.

\n\n

Método n.º 1: Reinstalación clásica (cargo install --force)

\n\n

El método más simple y obvio es reinstalar el crate con la bandera --force:

\n\n
# Instalaste la primera vez\ncargo install ripgrep\n\n# Una semana después — actualizas\ncargo install --force ripgrep\n
\n\n

¿Qué sucede bajo el capó? Cargo descarga la última versión del crate desde crates.io, lo recompila y reemplaza el binario. La bandera --force obliga a sobrescribir el archivo existente, incluso si la versión es la misma.

\n\n

Ventajas:

\n
    \n
  • No requiere instalar herramientas adicionales
  • \n
  • Funciona siempre y en todas partes
  • \n
  • Es intuitivo
  • \n
\n\n

Desventajas:

\n
    \n
  • Cada vez es una recompilación completa (lento si el crate es grande)
  • \n
  • No verifica si hay una nueva versión — simplemente reinstalas
  • \n
  • Incómodo si tienes instalados 10 o más crates
  • \n
\n\n

Es como reinstalar Windows para actualizar un controlador. ¿Funciona? Sí. ¿Es óptimo? No.

\n\n

Método n.º 2: cargo-outdated — un detector inteligente de crates obsoletos

\n\n

Si quieres saber con certeza que una actualización es necesaria, instala cargo-outdated:

\n\n
cargo install cargo-outdated\n
\n\n

Ahora verifica qué crates están desactualizados:

\n\n
cargo outdated --root ~/.cargo\n
\n\n

La salida mostrará algo como:

\n\n
Package    Current  Latest  Deps\nripgrep    13.0.0   14.1.0  -\nbat        0.22.1   0.23.0  -\n
\n\n

Luego puedes actualizar un crate específico con cargo install --force. Pero esto sigue siendo dos pasos. ¿Quieres automatización? Sigue leyendo.

\n\n

Ventajas:

\n
    \n
  • Muestra solo los crates que realmente están desactualizados
  • \n
  • Funciona también para las dependencias del proyecto
  • \n
  • Tiene opciones para filtrar
  • \n
\n\n

Desventajas:

\n
    \n
  • No actualiza por sí mismo — solo informa
  • \n
  • Requiere instalación por separado
  • \n
\n\n

Método n.º 3: cargo-update (¡sí, existe ese crate!)

\n\n

La respuesta más elegante a la pregunta «Does cargo install have an equivalent update command?» es

Blogs

Book Recommendations