web-dev-qa-db-fra.com

L'installation de fret a-t-elle une commande de mise à jour équivalente?

Je voudrais mettre à jour un package que j'ai utilisé cargo install pour installer globalement des packages, tels que rustfmt ou racer. Je ne trouve pas de moyen de mettre à jour un package installé sans le supprimer au préalable (via cargo uninstall), puis exécutez à nouveau la commande d'installation. Existe-t-il une commande de mise à jour?

55
w.brian

Depuis Cargo 1.36.0, vous pouvez désormais utiliser les commandes suivantes sur une chaîne d'outils nocturne au lieu d'utiliser le cargo-update crate pour mettre à jour les caisses à leur dernière version:

rustup install nightly
cargo +nightly install -Z install-upgrade <crate>

Cela venait de la demande de tirage # 6798 (Ajouter une installation-mise à niveau) .

Comment ça marche?

Au lieu d'échouer lorsque cargo install détecte qu'un paquet est déjà installé, il se mettra à niveau si les versions ne correspondent pas, ou ne fera rien (exit 0) s'il est considéré comme "à jour".

Forcer une mise à niveau/réinstallation

La commande suivante ( désinstallera, téléchargera et compilera toujours la dernière version de la caisse, même si aucune version plus récente n'est disponible. Dans des circonstances normales, le install-upgrade la fonctionnalité devrait être préférée car elle permet d'économiser du temps et de la bande passante s'il n'y a pas de nouvelle version de la caisse.

cargo install --force <crate>

Documentation

De plus amples informations peuvent être trouvées dans le problème GitHub Rust-lang/cargo # 6797 et dans le chapitre de la documentation officielle nstable Features -> install-upgrade .

4
Nicolai Fröhlich

Il n'y a pas une telle commande dans Vanilla cargo (enfin, il y a cargo install mais c'est pour les dépendances), mais puisque cargo supporte sous-commandes tierces il y a une réponse: le cargo-update caisse .

Installez comme d'habitude avec cargo install cargo-update, puis utilisez cargo install-update -a pour mettre à jour tous les packages installés, pour plus d'informations sur l'utilisation et des exemples, voir cargo install-update page de manuel .

Avertissement: suis l'auteur

71

Une solution que j'ai trouvée consiste à ajouter le --force drapeau à la commande d'installation. Par exemple cargo install --force clippy. Cela réinstalle efficacement la dernière version.

28
w.brian

Nan. Vous pouvez en discuter dans this issue.

9
Vladimir Matveev