前提
2020/04/19 時点での話です。
背景
$ cargo install HOGEHOGE
を実行しても、一度インストールされたパッケージはアップデートされません。
したがって $ cargo install --force HOGEHOGE
のように --force
オプションを付けて毎回上書きでインストールする必要がありますが、それはつまり毎回コンパイルするということで、とてつもなく時間がかかります。
結論
cargo-update
というパッケージを cargo
でインストールして、それ以降は $ cargo install-update --all
を実行します。
手順
1. cargo-update のインストール
$ cargo install cargo-update Updating crates.io index Downloaded cargo-update v3.0.0 Downloaded 1 crate (42.5 KB) in 2.30s Installing cargo-update v3.0.0 (省略) Finished release [optimized] target(s) in 2m 09s Installing /home/FOOBAR/.cargo/bin/cargo-install-update Installing /home/FOOBAR/.cargo/bin/cargo-install-update-config Installed package `cargo-update v3.0.0` (executables `cargo-install-update`, `cargo-install-update-config`)
2. 以降は、cargo install-update --all を毎回実行する
アップデートがあったパッケージのみを自動でインストールしてくれます。
$ cargo install-update --all Updating registry 'https://github.com/rust-lang/crates.io-index' Package Installed Latest Needs update fd-find v7.5.0 v8.0.0 Yes grex v1.0.0 v1.1.0 Yes ripgrep v12.0.0 v12.0.1 Yes ripgrep_all v0.9.2 v0.9.5 Yes bat v0.13.0 v0.13.0 No cargo-update v3.0.0 v3.0.0 No exa v0.9.0 v0.9.0 No kiro-editor v0.3.5 v0.3.5 No procs v0.9.20 v0.9.20 No silicon v0.3.0 v0.3.0 No Updating fd-find Updating crates.io index Downloaded fd-find v8.0.0 (省略)
効果
10個ほどのCLIのパッケージをインストールしている私の場合、CPUの違いにもよりますが、--force
でインストールするとだいたい1時間〜2時間かかっていました。
それが、更新がない場合は30秒ほどになりました。
注意点
crates.io
経由以外では、やはり毎回コンパイルする必要が出てきます。