--- date: "2023-01-20T00:00:00+00:00" slug: "chef" sidebar_position: 5 --- # Chef 套件註冊表 爲您的使用者或組織發佈 [Chef](https://chef.io/) cookbooks。 ## 要求 要使用 Chef 套件註冊表,您需要使用 [`knife`](https://docs.chef.io/workstation/knife/). ## 認證 Chef 套件註冊表不使用使用者名稱和密碼進行身份驗證,而是使用私鑰和公鑰對請求進行簽名。 請前往套件所有者設定頁面以建立必要的密鑰對。 只有公鑰儲存在Gitea中。如果您丟失了私鑰的存取權限,您必須重新生成密鑰對。 [設定 `knife`](https://docs.chef.io/workstation/knife_setup/),使用下載的私鑰,並將 Gitea 使用者名稱設定爲 `client_name`。 ## 設定套件註冊表 要將 [`knife` 設定](https://docs.chef.io/workstation/knife_setup/)爲使用 Gitea 套件註冊表,請將 URL 添加到 `~/.chef/config.rb` 文件中。 ``` knife[:supermarket_site] = 'https://gitea.example.com/api/packages/{owner}/chef' ``` | 參數 | 描述 | | ------- | -------------- | | `owner` | 套件的所有者 | ## 發佈套件 若要發佈 Chef 套件,請執行以下命令: ```shell knife supermarket share {package_name} ``` | 參數 | 描述 | | -------------- | ---------- | | `package_name` | 套件名稱 | 如果已經存在同名和版本的套件,則無法發佈新的套件。您必須先刪除現有的套件。 ## 安裝套件 要從套件註冊表中安裝套件,請執行以下命令: ```shell knife supermarket install {package_name} ``` 您可以指定套件的版本,這是可選的: ```shell knife supermarket install {package_name} {package_version} ``` | 參數 | 描述 | | ----------------- | ---------- | | `package_name` | 套件名稱 | | `package_version` | 套件版本 | ## 刪除套件 如果您想要從註冊表中刪除套件,請執行以下命令: ```shell knife supermarket unshare {package_name} ``` 可選地,您可以指定套件的版本: ```shell knife supermarket unshare {package_name}/versions/{package_version} ``` | 參數 | 描述 | | ----------------- | ---------- | | `package_name` | 套件名稱 | | `package_version` | 套件版本 |