Cargo deny安裝指路

唯你Only發表於2024-11-12

本部落格所有文章除特別宣告外,均採用CC BY-NC-SA 4.0許可協議。轉載請註明來自 唯你

簡介

cargo deny 是一個 Rust 工具,用於檢查專案依賴項的許可證、安全性和其他合規性問題。在 Rust CI(持續整合)中,cargo deny 扮演著重要角色:

  • 許可證檢查:確保專案使用的所有依賴項的許可證都符合專案的許可政策。
  • 安全漏洞掃描:檢查依賴項是否存在已知的安全漏洞。
  • 依賴項合規性:驗證依賴項是否符合專案的其他要求,如版本限制或來源限制。
  • 禁用特定依賴項:允許明確禁止使用某些依賴項。

在 CI 流程中,cargo deny 通常作為一個檢查步驟執行,以確保專案在構建和部署之前滿足所有合規性要求。這有助於維護專案的質量、安全性和法律合規性。

一句話:cargo deny 讓你合法合規放心使用第三方依賴

使用

  • 地址:Cargo deny
  • 安裝命令:
cargo install --locked cargo-deny && cargo deny init && cargo deny check

常見錯誤

使用 cargo-deny 報錯 failed to open advisory database

   Installed package `cargo-deny v0.16.1` (executable `cargo-deny.exe`)
PS E:\Rust\easy-publish> cargo deny check
2024-11-11 02:07:34 [ERROR] failed to fetch advisory database https://github.com/RustSec/advisory-db: An IO error occurred when talking to the server: error sending request for url (https://github.com/RustSec/advisory-db/info/refs?service=git-upload-pack)

方案一: 可以嘗試:
1. 刪除 ~/.cargo/advisory-db/ 目錄,然後使用 cargo deny fetch / cargo deny check 重新下載它。多試幾次?
2. 在 deny.toml 配置中的 git 地址修改為 gitee 上的映象地址:https://gitee.com/tyr-rust-bootcamp-mirror/advisory-db.git
3. 刪掉 deny.toml,執行 cargo deny init 重新生成一個,然後按照你的需要修改。
4. 檢查你的網路,想辦法~

方案二:可以嘗試透過執行:cargo deny check advisories 解決

升級最新版本,大量 this key has been removed

image.png
解決辦法:

  1. 先刪除原專案下的 deny.toml 配置檔案
  2. 在專案根目錄下執行命令列cargo deny init 重新生成一份新版本 deny.toml 檔案
  3. 在 deny.toml 中找到 allow 然後將原來 allow 中許可證,類似如下程式碼,複製到新 deny.toml 中即可
allow = [
    "MIT",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",
    "Unicode-DFS-2016",
    "MPL-2.0",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "ISC",
    "CC0-1.0",
    "OpenSSL",
]
  1. 執行cargo deny check重新檢測一波,是否正常

相關文章