web-dev-qa-db-ja.com

貨物のインストールには同等の更新コマンドがありますか?

使用したパッケージを更新したいcargo install rustfmtやracerなどのパッケージをグローバルにインストールします。最初に削除することなくインストール済みパッケージを更新する方法が見つかりません(cargo uninstall)そして、インストールコマンドを再度実行します。更新コマンドはありますか?

55
w.brian

Cargo 1.36.0以降、cargo-updateクレートを使用してクレートを最新バージョンに更新する代わりに、夜間ツールチェーンで次のコマンドを使用できるようになりました。

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

これは、プルリクエスト #6798(インストールアップグレードの追加) から来ました。

どのように機能しますか?

cargo installがパッケージが既にインストールされていることを検出したときに失敗する代わりに、バージョンが一致しない場合はアップグレードし、「最新」と見なされる場合は何もしません(終了0)。

アップグレード/再インストールの強制

次のコマンドは、always新しいバージョンが利用できない場合でも、最新バージョンのクレートをアンインストール、ダウンロード、コンパイルします。通常の状況では、クレートの新しいバージョンがない場合、時間と帯域幅を節約するため、install-upgrade機能を優先する必要があります。

cargo install --force <crate>

ドキュメンテーション

詳細については、GitHubの問題 Rust-lang/cargo#6797 および公式ドキュメントの章 不安定な機能->インストールアップグレード を参照してください。

4

バニラにはそのようなコマンドはありませんcargo(まあ、cargo installがありますが、それは依存関係のためです)が、cargoサードパーティのサブコマンド をサポートするため答え: cargo-update crate

通常どおりcargo install cargo-updateでインストールし、cargo install-update -aを使用してインストール済みのすべてのパッケージを更新します。詳細な使用情報と例については、 cargo install-update manpage を参照してください。

免責事項:am author

私が見つけた解決策は、--forceフラグをインストールコマンドに。例えば ​​cargo install --force clippy。これにより、最新バージョンが事実上再インストールされます。

28
w.brian

いや。 this issueで議論できます。

9