在Bintray Rocks上托管Debian软件包!
更新:自2021年5月1日起,Bintray服务将不再可用(ConanCenter和JCenter不受影响)中心弃用博客
想要发布Debian软件包?Bintray是为您准备的工具!
现在有了改进的支持,它甚至更好了,包括当前的Debian存储库格式(又名“自动”布局),除了已弃用的“琐碎”布局,以及使用GPG签名元数据。您所需要做的就是上传您的.deb文件,Bintray将自动为您计算并签署元数据(索引)。我们把Artifactory中出色的debian支持并将其重新应用于Bintray。
Debian存储库格式,你是什么意思?
Debian存储库包含元数据文件,其中包含有关其包含的包及其在存储库中的结构的信息。主要的是“Packages”和“Release”文件。Debian客户机,比如apt-get,会查找这些元数据文件。
有两种支持的存储库元数据布局:
- “简单”
这是已弃用的存储库布局,但它仍然被广泛使用。在这种布局中,所有元数据文件都存储在存储库的根目录中,因此,当您在存储库中只托管一堆没有良好定义结构的文件时,这种布局非常有用。
- “自动”
这是默认布局,它包含有关所包含的发行版的信息。每个发行版可以包含多个组件(例如“main”,“free”,…),每个组件可以包含多个架构(例如“amd64”,“i386”,…)。
签署一个Debian发行版
Debian有一个很好的特性来增加客户的信任——让他们确信他们下载的是你的软件包,而不是其他一些假冒的软件包。这是通过使用GPG来签署“发布”文件来完成的。每个“发布”文件包括发行版中所有相关“包”文件的散列值。“Packages”文件包含所有包含的.deb文件的哈希值。因此,通过签署“发布”文件,它实际上签署了整个发行版!
您可以让Bintray自动使用GPG为您签署元数据。您所需要做的就是为拥有存储库的用户或组织设置GPG密钥。您甚至可以让您的GPG密钥需要一个密码短语(请继续阅读)。不想设置GPG密钥?不用担心——您的元数据仍然在那里,只是没有签名。请记住,您的客户端需要批准使用未签名的存储库。
上传和发布Debian文件
您可以使用REST API或从Bintray的UI上传文件。如果您的存储库具有“自动”布局,Bintray需要知道每个发行版中包含哪个.deb文件,因此每个上传的.deb文件必须与它应该包含的发行版、组件和体系结构一起分配。
查看一下您的存储库的“给我介绍一下!链接获取一些关于如何配置它的快速提示:
例如,让我们考虑一个名为myorg这个分布叫做mydist这就维持了主要组件。现在假设我们为0.0.1版本开发了一个名为mypack为i386架构,但它也得到amd64。在Bintray中,我们将把这个包存储在一个名为mypack,为了保持一致性,我们称版本为0.0.1(虽然这不是严格要求的)。根据“Automatic”布局的惯例,我们将把.deb文件存储在以下路径中:
“池/主/ m / mypack”
使用REST API,上传.deb文件,指定目标文件路径,并设置与发行版相关的信息非常简单:
curl -X PUT -T libmypack_0.0.1 .1_i386.deb -umyuser:https://api.bintray.com/content/myorg/myrepo/mypack/0.0.1池/主/ m / mypack / libmypack_0.0.1_i386.deb; deb_distribution =mydist; deb_component =主要; deb_architecture =i386,amd64
为了发布您的工件,只需在上面的请求中添加“publish=1”HTTP矩阵参数,或者使用发布REST API:
curl -X POST -umyuser:https://api.bintray.com/content/myorg/ myrepo /mypack/0.0.1/出版
您的GPG密钥需要密码短语?没有问题-只需添加一个“X-GPG-PASSPHRASE”请求头与您的密码短语。这可以在上传API(带有" publish=1 ")和发布API中完成:
X-GPG-PASSPHRASE:密码
触发元数据计算
如果您的GPG密钥需要密码短语,但没有提供,那么您的元数据将被计算,但不会被签名(例如,当使用Bintray UI上传包时,当前无法指定密码短语)。为了解决这个问题,你应该使用REST API,在那里你可以指定密码短语并触发元数据计算:
curl -X POST -H " X-GPG-PASSPHRASE: passphrase " -umyuser:https://api.bintray.com/calc_metadata/myorg/ myrepo /
关于REST API的更多信息可以在Bintray文档中找到。
下载Debian软件包
如果您使用默认的“自动”布局,那么您的Debian存储库在Bintray中可以用作个人包归档(PPA)。用户要获得您的包,他们所需要做的就是将您的存储库添加到他们的源列表中。例如,在使用apt-get时,添加myrepo库的myorg,应将以下行添加到“sources”。列出“文件”(在“/etc/apt/sources.list”):
deb https://dl.bintray.com/v1/content/myorg/ myrepomydist主要
或者,你可以使用“软件资源”管理界面添加存储库URL:

曾经的“来源”。列表”设置后,您的用户就可以获取并安装您的mypack你的包裹mydist分布和主要组件使用:
$ apt-get installmypack
总结
所以,Debian和Bintray是携手并进的。你可以得到Debian发行版所需的一切——自动元数据计算、GPG签名、下载统计、新发布通知,以及一个全自动、超级可靠和快速的下载平台。这是除了所有其他伟大的功能Bintray。现在您可以专注于开发您的软件包- Bintray将负责分发!
