cargo install 是否有等效的更新命令?
Does cargo install have an equivalent update command?
我想更新一个包,我用 cargo install
全局安装包,例如 rustfmt 或 racer。如果不先删除已安装的软件包(通过 cargo uninstall
)然后再次 运行 安装命令,我找不到更新已安装软件包的方法。有更新命令吗?
vanilla cargo
中没有这样的命令(好吧,有 cargo install
但那是为了依赖),但是因为 cargo
支持 third-party subcommands there is an answer: the cargo-update
crate.
像往常一样使用 cargo install cargo-update
安装,然后使用 cargo install-update -a
更新所有已安装的软件包,有关更多使用信息和示例,请参阅 cargo install-update
manpage.
免责声明:我是作者
我找到的一个解决方案是在安装命令中添加 --force
标志。例如 cargo install --force clippy
。这将有效地重新安装最新版本。
从 Rust 1.41.0 开始,您可以使用以下命令将 crates 更新到最新版本:
cargo install <crate>
这来自拉取请求 #6798 (Add install-upgrade) and was stabilized in #7560 (Stabilize install-upgrade)。
它是如何工作的?
当 cargo install
检测到软件包已安装时,它不会失败,如果版本不匹配,它将升级,或者如果被认为是“up-to-date”,则不执行任何操作(退出 0) .
强制升级/re-installation
以下命令将始终卸载、下载和编译最新版本的 crate - 即使没有可用的更新版本。在正常情况下,应该首选 install-upgrade
功能,因为如果没有新版本的箱子,它确实可以节省时间和带宽。
cargo install --force <crate>
文档
可以在 GitHub 问题 rust-lang/cargo#6797 and in the official documentation chapter 中找到更多信息。
这是更新所有已安装的 Cargo crate 的单行代码,除了从本地文件夹安装的那些:
cargo install $(cargo install --list | egrep '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')
解释:
- 列出已安装的软件包
- 过滤包含包名称和版本的行,并排除包含文件系统路径的行
- 删减这些行以仅包含包名称
cargo install
以及生成的包名称
我想更新一个包,我用 cargo install
全局安装包,例如 rustfmt 或 racer。如果不先删除已安装的软件包(通过 cargo uninstall
)然后再次 运行 安装命令,我找不到更新已安装软件包的方法。有更新命令吗?
vanilla cargo
中没有这样的命令(好吧,有 cargo install
但那是为了依赖),但是因为 cargo
支持 third-party subcommands there is an answer: the cargo-update
crate.
像往常一样使用 cargo install cargo-update
安装,然后使用 cargo install-update -a
更新所有已安装的软件包,有关更多使用信息和示例,请参阅 cargo install-update
manpage.
免责声明:我是作者
我找到的一个解决方案是在安装命令中添加 --force
标志。例如 cargo install --force clippy
。这将有效地重新安装最新版本。
从 Rust 1.41.0 开始,您可以使用以下命令将 crates 更新到最新版本:
cargo install <crate>
这来自拉取请求 #6798 (Add install-upgrade) and was stabilized in #7560 (Stabilize install-upgrade)。
它是如何工作的?
当 cargo install
检测到软件包已安装时,它不会失败,如果版本不匹配,它将升级,或者如果被认为是“up-to-date”,则不执行任何操作(退出 0) .
强制升级/re-installation
以下命令将始终卸载、下载和编译最新版本的 crate - 即使没有可用的更新版本。在正常情况下,应该首选 install-upgrade
功能,因为如果没有新版本的箱子,它确实可以节省时间和带宽。
cargo install --force <crate>
文档
可以在 GitHub 问题 rust-lang/cargo#6797 and in the official documentation chapter 中找到更多信息。
这是更新所有已安装的 Cargo crate 的单行代码,除了从本地文件夹安装的那些:
cargo install $(cargo install --list | egrep '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')
解释:
- 列出已安装的软件包
- 过滤包含包名称和版本的行,并排除包含文件系统路径的行
- 删减这些行以仅包含包名称
cargo install
以及生成的包名称