我想更新一个使用cargo install全局安装软件包的软件包,比如rustfmt或racer.我找不到一种方法来更新一个已安装的软件包,除非先删除它(通过cargo uninstall),然后再次运行install命令.有update命令吗?
cargo install
cargo uninstall
balp4ylt1#
在普通的cargo中没有这样的命令(当然,有cargo install,但那是用于依赖关系的),但是由于cargo支持third-party subcommands,所以有一个答案:即cargo-update crate。照常安装
cargo
cargo-update
cargo install cargo-update
则使用
cargo install-update -a
要更新所有已安装的软件包,请参阅cargo install-update manpage以获取更多用法信息和示例。免责声明:作者
cargo install-update
8e2ybdfx2#
从Rust 1.41.0开始,您可以使用以下命令将板条箱更新到其最新版本:
cargo install <crate>
这来自拉动请求#6798 (Add install-upgrade),并在#7560 (Stabilize install-upgrade)中稳定。
当cargo install检测到一个软件包已经安装时,它不会失败,而是在版本不匹配时升级,或者如果它被认为是"最新的",则什么也不做(退出0)。
以下命令总是卸载、下载和编译最新版本的机箱-即使没有更新的版本可用。在正常情况下,install-upgrade功能应该是首选,因为如果没有新版本的机箱,它确实节省了时间和带宽。
install-upgrade
cargo install --force <crate>
更多信息可以在GitHub发行版rust-lang/cargo#6797和官方文档章节中找到。
hyrbngr73#
我找到的一个解决方案是在install命令中添加--force标志,例如cargo install --force clippy,这样可以有效地重新安装最新版本。
--force
cargo install --force clippy
twh00eeo4#
下面是一个更新所有已安装的Cargo cartes的一行程序,从本地文件夹安装的除外:
cargo install $(cargo install --list | egrep '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')
说明:
4条答案
按热度按时间balp4ylt1#
在普通的
cargo
中没有这样的命令(当然,有cargo install
,但那是用于依赖关系的),但是由于cargo
支持third-party subcommands,所以有一个答案:即cargo-update
crate。照常安装
则使用
要更新所有已安装的软件包,请参阅
cargo install-update
manpage以获取更多用法信息和示例。免责声明:作者
8e2ybdfx2#
从Rust 1.41.0开始,您可以使用以下命令将板条箱更新到其最新版本:
这来自拉动请求#6798 (Add install-upgrade),并在#7560 (Stabilize install-upgrade)中稳定。
它是如何工作的?
当
cargo install
检测到一个软件包已经安装时,它不会失败,而是在版本不匹配时升级,或者如果它被认为是"最新的",则什么也不做(退出0)。强制升级/重新安装
以下命令总是卸载、下载和编译最新版本的机箱-即使没有更新的版本可用。在正常情况下,
install-upgrade
功能应该是首选,因为如果没有新版本的机箱,它确实节省了时间和带宽。文件
更多信息可以在GitHub发行版rust-lang/cargo#6797和官方文档章节中找到。
hyrbngr73#
我找到的一个解决方案是在install命令中添加
--force
标志,例如cargo install --force clippy
,这样可以有效地重新安装最新版本。twh00eeo4#
下面是一个更新所有已安装的Cargo cartes的一行程序,从本地文件夹安装的除外:
说明:
cargo install
以及生成的软件包名称