Alpine 包管理器
发布您或您组织的 Alpine 包。
需求
要使用 Alpine 注册表,您需要使用像 curl
这样的 HTTP 客户端上传包,并使用像 apk
这样的包管理器来使用包。
以下示例使用 apk
。
配置包管理器
要注册 Alpine 注册表,请将 URL 添加到已知 apk 源列表中 (/etc/apk/repositories
)
https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
占位符 | 描述 |
---|---|
所有者 | 包的所有者。 |
分支 | 要使用的分支。 |
仓库 | 要使用的仓库。 |
如果注册表是私有的,请在 URL 中提供凭据。您可以使用密码或 个人访问令牌
https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
Alpine 注册表文件使用 RSA 密钥签名,apk 必须知道该密钥。下载公钥并将其存储在 /etc/apk/keys/
中
curl -JO https://gitea.example.com/api/packages/{owner}/alpine/key
之后更新本地包索引
apk update
发布包
要发布 Alpine 包 (*.apk
),请使用请求正文中的包内容执行 HTTP PUT
操作。
PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
参数 | 描述 |
---|---|
所有者 | 包的所有者。 |
分支 | 分支可能与操作系统的发行版本匹配,例如:v3.17 。 |
仓库 | 仓库可用于 对包进行分组 或仅使用 main 或类似名称。 |
使用 HTTP 基本身份验证的示例请求
curl --user your_username:your_password_or_token \
--upload-file path/to/file.apk \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main
如果您使用的是 2FA 或 OAuth,请使用 个人访问令牌 而不是密码。
您不能将同名的文件发布到同一个包中两次。您必须先删除现有的包文件。
服务器将返回以下 HTTP 状态代码。
HTTP 状态代码 | 含义 |
---|---|
201 已创建 | 包已发布。 |
400 错误请求 | 包名、版本、分支、仓库或架构无效。 |
409 冲突 | 包文件中已存在具有相同参数组合的包文件。 |
删除包
要删除 Alpine 包,请执行 HTTP DELETE
操作。如果不再有文件,这也会删除包版本。
DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename}
参数 | 描述 |
---|---|
所有者 | 包的所有者。 |
分支 | 要使用的分支。 |
仓库 | 要使用的仓库。 |
架构 | 包的架构。 |
文件名 | 要删除的文件。 |
使用 HTTP 基本身份验证的示例请求
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main/test-package-1.0.0.apk
服务器将返回以下 HTTP 状态代码。
HTTP 状态代码 | 含义 |
---|---|
204 无内容 | 成功 |
404 未找到 | 未找到包或文件。 |
安装包
要从 Alpine 注册表安装包,请执行以下命令
# use latest version
apk add {package_name}
# use specific version
apk add {package_name}={package_version}