Help us learn about your current experience with the documentation. Take the survey.

Debian API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

这是 Debian 的 API 文档。

此 API 供 Debian 相关的软件包客户端(如 dputapt-get)使用,通常不建议手动调用。由于功能有限,此 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 软件包仓库进行身份验证

上传软件包文件

上传 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

这会将下载的文件使用远程文件名写入当前目录。