Debian API
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed
这是 Debian 的 API 文档。
有关如何从 GitLab 软件包仓库上传和安装 Debian 软件包的说明,请参阅 Debian registry 文档。
这些端点不遵循标准的 API 身份验证方法。有关支持的标头和令牌类型的详细信息,请参阅 Debian registry 文档。未记录的身份验证方法将来可能会被移除。
启用 Debian API
Debian API 默认处于功能标志之后且已禁用。可以访问 GitLab Rails 控制台的 GitLab 管理员可以选择启用它。要启用它,请按照启用 Debian API中的说明操作。
启用 Debian 组 API
Debian 组 API 默认处于功能标志之后且已禁用。可以访问 GitLab Rails 控制台的 GitLab 管理员可以选择启用它。要启用它,请按照启用 Debian 组 API中的说明操作。
向 Debian 软件包仓库进行身份验证
上传软件包文件
上传 Debian 软件包文件:
PUT projects/:id/packages/debian/:file_name| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | yes | 项目的 ID 或完整路径。 |
file_name |
string | yes | Debian 软件包文件的名称。 |
distribution |
string | no | 发行版的代号或套件名称。与 component 一起使用,用于明确指定发行版和组件的上传。 |
component |
string | no | 软件包文件的组件。与 distribution 一起使用,用于明确指定发行版和组件的上传。 |
curl --request PUT \
--user "<username>:<personal_access_token>" \
--upload-file path/to/mypkg.deb \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/mypkg.deb"使用明确的发行版和组件上传:
curl --request PUT \
--user "<username>:<personal_access_token>" \
--upload-file /path/to/myother.deb \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/myother.deb?distribution=sid&component=main"下载软件包
下载软件包文件。
GET projects/:id/packages/debian/pool/:distribution/:letter/:package_name/:package_version/:file_name| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
letter |
string | yes | Debian 分类(首字母或 lib-首字母)。 |
package_name |
string | yes | 源软件包名称。 |
package_version |
string | yes | 源软件包版本。 |
file_name |
string | yes | 文件名。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/pool/my-distro/a/my-pkg/1.0.0/example_1.0.0~alpha2_amd64.deb"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/pool/my-distro/a/my-pkg/1.0.0/example_1.0.0~alpha2_amd64.deb" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
路由前缀
下面描述的其余端点是两组相同的路由,每组在不同的范围内发出请求:
- 使用项目级前缀在单个项目范围内发出请求。
- 使用组级前缀在单个组范围内发出请求。
本文档中的示例都使用项目级前缀。
项目级
/projects/:id/packages/debian| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | yes | 项目 ID 或完整项目路径。 |
组级
/groups/:id/-/packages/debian| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
id |
string | yes | 组 ID 或完整组路径。 |
下载发行版 Release 文件
下载 Debian 发行版文件。
GET <route-prefix>/dists/*distribution/Release| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/Release"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/Release" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
下载已签名的发行版 Release 文件
下载已签名的 Debian 发行版文件。
GET <route-prefix>/dists/*distribution/InRelease| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/InRelease"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/InRelease" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
下载发行版文件签名
下载 Debian 发行版文件签名。
GET <route-prefix>/dists/*distribution/Release.gpg| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/Release.gpg"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/Release.gpg" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
下载软件包索引
下载软件包索引。
GET <route-prefix>/dists/*distribution/:component/binary-:architecture/Packages| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
architecture |
string | yes | 发行版架构类型。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/binary-amd64/Packages"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/binary-amd64/Packages" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
通过哈希下载软件包索引
通过哈希下载软件包索引。
GET <route-prefix>/dists/*distribution/:component/binary-:architecture/by-hash/SHA256/:file_sha256| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
architecture |
string | yes | 发行版架构类型。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/binary-amd64/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/binary-amd64/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
下载 Debian 安装程序软件包索引
下载 Debian 安装程序软件包索引。
GET <route-prefix>/dists/*distribution/:component/debian-installer/binary-:architecture/Packages| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
architecture |
string | yes | 发行版架构类型。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/debian-installer/binary-amd64/Packages"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/debian-installer/binary-amd64/Packages" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
通过哈希下载 Debian 安装程序软件包索引
通过哈希下载 Debian 安装程序软件包索引。
GET <route-prefix>/dists/*distribution/:component/debian-installer/binary-:architecture/by-hash/SHA256/:file_sha256| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
architecture |
string | yes | 发行版架构类型。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/debian-installer/binary-amd64/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/debian-installer/binary-amd64/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
下载源软件包索引
下载源软件包索引。
GET <route-prefix>/dists/*distribution/:component/source/Sources| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/source/Sources"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/source/Sources" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。
通过哈希下载源软件包索引
通过哈希下载源软件包索引。
GET <route-prefix>/dists/*distribution/:component/source/by-hash/SHA256/:file_sha256| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
distribution |
string | yes | Debian 发行版的代号或套件名称。 |
component |
string | yes | 发行版组件名称。 |
curl --header "Private-Token: <personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/source/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18"将输出写入文件:
curl --header "Private-Token: <personal_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/packages/debian/dists/my-distro/main/source/by-hash/SHA256/66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18" \
--remote-name这会将下载的文件使用远程文件名写入当前目录。