第 9 章 上传软件包
现在你完成了对软件包的彻底测试,接下来将其释出到公共归档中分享它吧。
9.1. 上传到 Debian 仓库
当你成为正式的开发人员[83],你可以把软件包上传到 Debian 仓库[84]。你可以手工进行这项工作,但使用例如 dupload(1) 或 dput(1) 的自动化工具可以帮你更好地完成这项操作。在此我们将叙述如何使用 dupload 操作。[85]
首先需要设置 dupload 的配置文件。你既可以编辑系统级的 /etc/dupload.conf
文件,也可以使用自己的 ~/.dupload.conf
文件凌驾一些需要修改的设置。
你可以阅读 dupload.conf(5) man 手册页来了解各选项的含义。
$default_host
选项决定了默认使用哪个上传队列,anonymous-ftp-master
是最基本的一个,但你很可能希望改用其他的。[86]
连接到互联网后,可以使用以下命令上传你的软件包:
$ dupload gentoo_0.9.12-1_i386.changes
dupload 会检查文件的 SHA1/SHA256 校验和是否与 .changes
文件中的相匹配,如果不匹配它会做出警告。你应按照如 第 6.1 节 “完整的(重)构建” 所述来重构建软件包使得它可以被正常上传。
如果你在 ftp://ftp.upload.debian.org/pub/UploadQueue/ 遇到了上传问题,你可以通过 ftp 来手动上传 GPG 签署的 *.commands
文件。 [87] 比如说,使用 hello.commands
命令:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Uploader: Foo Bar <Foo.Bar@example.org>
Commands:
rm hello_1.0-1_i386.deb
mv hello_1.0-1.dsx hello_1.0-1.dsc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
[...]
-----END PGP SIGNATURE-----
9.2. 在上传时包含 orig.tar.gz
文件
第一次向仓库上传软件包时要包含 orig.tar.gz
源代码归档。如果这个软件包的修订号既不是 1
也不是 0
, 那你就必须给 dpkg-buildpackage 加上选项 -sa
。
对于 dpkg-buildpackage 命令:
$ dpkg-buildpackage -sa
对于 debuild 命令:
$ debuild -sa
对于 pdebuild 命令:
$ pdebuild --debbuildopts -sa
另一方面,请注意 -sd
选项会强制 排除原始的 orig.tar.gz
源代码。
9.3. 跳过的上传
如果你在 debian/changelog
创建了多个条目并跳过了上传,你必须创建一个相应的 *_.changes
文件,其中包含自上次上传以来的全部变更记录。这可以通过指定 dpkg-buildpackage 的 -v
并将版本传递给它来完成。比如, *`1.2`*
.
对于 dpkg-buildpackage 命令:
- $ dpkg-buildpackage -v
1.2
对于 debuild 命令:
- $ debuild -v
1.2
对于 pdebuild 命令:
- $ pdebuild --debbuildopts "-v
1.2
"
[83] 参见 第 1.1 节 “Debian 的社会驱动力”。
[84] 有许多公开的档案比如 http://mentors.debian.net/ ,它们的运作方式几乎与 Debian 档案一致,并提供了一个非开发者的上传区域。你可以自己建立一个等效档案,只要使用 http://wiki.debian.org/HowToSetupADebianRepository 里边列举出来的工具。 所以这一小节也对非开发者特别有用。
[85] dput
软件包提供了更多的特性,相比于 dupload
也越来越受欢迎。它使用 /etc/dput
文件作为全局配置文件、~/.dput.cf
作为用户配置文件。它也直接支持 ubuntu 相关的服务。
[86] 参见 Debian Developer’s Reference 5.6. “Uploading a package”.
[87] 参见 ftp://ftp.upload.debian.org/pub/UploadQueue/README。 或者是, 你可以使用 dcut 命令,它来自 dput
软件包。