code.gitea.io/gitea@v1.22.3/docs/content/usage/packages/alpine.zh-cn.md (about) 1 --- 2 date: "2023-03-25T00:00:00+00:00" 3 title: "Alpine 软件包注册表" 4 slug: "alpine" 5 draft: false 6 toc: false 7 menu: 8 sidebar: 9 parent: "packages" 10 name: "Alpine" 11 sidebar_position: 4 12 identifier: "alpine" 13 --- 14 15 # Alpine 软件包注册表 16 17 在您的用户或组织中发布 [Alpine](https://pkgs.alpinelinux.org/) 软件包。 18 19 ## 要求 20 21 要使用 Alpine 注册表,您需要使用像 curl 这样的 HTTP 客户端来上传包,并使用像 apk 这样的包管理器来消费包。 22 23 以下示例使用 `apk`。 24 25 ## 配置软件包注册表 26 27 要注册 Alpine 注册表,请将 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`): 28 29 ``` 30 https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository> 31 ``` 32 33 | 占位符 | 描述 | 34 | ------------ | -------------- | 35 | `owner` | 软件包所有者 | 36 | `branch` | 要使用的分支名 | 37 | `repository` | 要使用的仓库名 | 38 39 如果注册表是私有的,请在 URL 中提供凭据。您可以使用密码或[个人访问令牌](development/api-usage.md#通过-api-认证): 40 41 ``` 42 https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository> 43 ``` 44 45 Alpine 注册表文件使用 RSA 密钥进行签名,apk 必须知道该密钥。下载公钥并将其存储在 `/etc/apk/keys/` 目录中: 46 47 ```shell 48 curl -JO https://gitea.example.com/api/packages/{owner}/alpine/key 49 ``` 50 51 之后,更新本地软件包索引: 52 53 ```shell 54 apk update 55 ``` 56 57 ## 发布软件包 58 59 要发布一个 Alpine 包(`*.apk`),请执行带有包内容的 HTTP `PUT` 操作,将其放在请求体中。 60 61 ``` 62 PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository} 63 ``` 64 65 | 参数 | 描述 | 66 | ------------ | --------------------------------------------------------------------------------------------------- | 67 | `owner` | 包的所有者。 | 68 | `branch` | 分支可以与操作系统的发行版本匹配,例如:v3.17。 | 69 | `repository` | 仓库可以用于[分组包](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或类似的名称。 | 70 71 使用 HTTP 基本身份验证的示例请求: 72 73 ```shell 74 curl --user your_username:your_password_or_token \ 75 --upload-file path/to/file.apk \ 76 https://gitea.example.com/api/packages/testuser/alpine/v3.17/main 77 ``` 78 79 如果您使用的是双重身份验证或 OAuth,请使用[个人访问令牌](development/api-usage.md#authentication)代替密码。 80 您不能将具有相同名称的文件两次发布到一个包中。您必须首先删除现有的包文件。 81 82 服务器将以以下的 HTTP 状态码响应: 83 84 | HTTP 状态码 | 含义 | 85 | ----------------- | ------------------------------------------ | 86 | `201 Created` | 软件包已发布。 | 87 | `400 Bad Request` | 软件包的名称、版本、分支、仓库或架构无效。 | 88 | `409 Conflict` | 具有相同参数组合的包文件已存在于软件包中。 | 89 90 ## 删除软件包 91 92 要删除 Alpine 包,执行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。 93 94 ``` 95 DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename} 96 ``` 97 98 | 参数 | 描述 | 99 | -------------- | -------------- | 100 | `owner` | 软件包的所有者 | 101 | `branch` | 要使用的分支名 | 102 | `repository` | 要使用的仓库名 | 103 | `architecture` | 软件包的架构 | 104 | `filename` | 要删除的文件名 | 105 106 使用 HTTP 基本身份验证的示例请求: 107 108 ```shell 109 curl --user your_username:your_token_or_password -X DELETE \ 110 https://gitea.example.com/api/packages/testuser/alpine/v3.17/main/test-package-1.0.0.apk 111 ``` 112 113 服务器将以以下的 HTTP 状态码响应: 114 115 | HTTP 状态码 | 含义 | 116 | ---------------- | ------------------ | 117 | `204 No Content` | 成功 | 118 | `404 Not Found` | 未找到软件包或文件 | 119 120 ## 安装软件包 121 122 要从 Alpine 注册表安装软件包,请执行以下命令: 123 124 ```shell 125 # use latest version 126 apk add {package_name} 127 # use specific version 128 apk add {package_name}={package_version} 129 ```