Ubuntu 的综合开发平台 launchpad 提供了代码托管、邮件列表、Bug 反馈和翻译等服务。其中有一个很重要的功能就是 PPA,用于软件编译打包测试,同时也可以存放软件包。因此不少人都用来架设自己的个人软件仓库。
第一步是申请一个 launchpad 帐号,这个应该没有难度吧?就像注册网上服务帐号一样。
在本地创建一个 openPGP 密钥,可以用 GnuPG 生成:
gpg –gen-key
按照向导输入用户名、注释、邮件地址和密码即可。查看密钥可以用 gpg --fingerprint 命令,生成的密钥格式如下:
pub 1024D/12345678 2010-10-01
密钥指纹 = 5816 2575 2356 CEEA ADFE C3C5 1FE5 3F96 EE0A ECCE
uid Liang Suilong (liangsuilong) <liangsuilong@ymail.com>
sub 1024g/98765432 2010-10-01
然后上传到Ubuntu的服务器。
gpg --send-keys --keyserver keyserver.ubuntu.com 12345678
上传后,打开
https://launchpad.net/~userid/+editpgpkeys,导入密钥指纹(fingerprint)到 launchpad。userid 是对应的用户帐号。

稍后会在注册用的邮箱内收到来自 launchpad 的邮件。邮件内会带有经过加密一个确认链接,需要经过解密才可以得到链接地址。请使用 Evolution、KMail 或 Thunderbird 收取邮件解密。详情参考 launchpad 的帮助文档:
https://help.launchpad.net/ReadingOpenPgpMail。不建议使用直接在 Gmail 上看。因为 Firefox 的 FireGPG 插件已经停止了。
至此,openPGP 密钥的一切工作已经完成。使用PPA之前还要签署 Code of Conduct。在导入openPGP的页面上有一个 Code of Conduct 的链接。进入后下载 UbuntuCodeofConduct-1.1.txt 文件。然后使用 gpg 命令生成明文签名:
gpg --clearsign UbuntuCodeofConduct-1.1.txt
此时会生成 UbuntuCodeofConduct-1.1.txt.asc 文件,用编辑器打开,把里面的内容都贴到签署 Code of Conduct 输入框即可。
至此开设 PPA 的手续已经办妥了,创建一个 PPA 以后,就可以着手打包源代码。关于打包,
Debian新维护人员手册是最适合不过的指南了。在编辑好 debian/ 目录内的打包文件以后,就使用 debuild 命令构建源代码包。注意:在 debian/changelog 内指定发行版分支时,只能指定 Ubuntu 的分支。即 karmic、lucid、maverick 等几个,Debian 的分支并不支持。changelog 内的个人签名也要跟 gpg 密钥的 uid 一致。
若不想生成 orig.tar.gz,可以使用:
打包后会生成以下几个文件,*.dsc、*.changes、*.diff.gz 或 *.debian.tar.gz(取决于debsrc的版本)和 *.orig.tar.gz (如果你使用 debuild -S -sa)。上传前,确保安装了dput命令。同时在用户的主目录创建.dput.cf文件,用于设置dput参数。
[ppa-name]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~userid/ppa-name/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
ppa-nam e对应的是 PPA 的名称,userid 则是用户帐号。如果一个帐号同时使用多 个PPA,则需要在 .dput.cf 继续加入以上内容。使用 dpu t如下,以 mysql-workbench 为例:
dput ppa-name mysql-workbench_5.2.28-3_source.changes
当上传完成,launchpad会对源代码包进行校验。若不合规格,该软件包会被拒绝。接受了的软件包也不代表一定能够编译成功。这取决于debian/control内写的build-deps和deps是否足够。当编译完成以后,软件包会自动推送到PPA仓库。想使用PPA内的软件,使用如下命令,仅限于Ubuntu:
sudo add-apt-repository ppa:user/ppa-name
基于Debian的发行版都可以上传软件包到 launchpad 上编译,但上传时需要按照Ubuntu的相关设定,另外编译出来的软件包只能保证和 Ubuntu 兼容,包括 Debian 也需要根据其依赖的软件包名字和版本是否和 Ubuntu 而决定兼容性。
打包后会生成以下几个文件,*.dsc、*.changes、*.diff.gz 或 *.debian.tar.gz(取决于debsrc的版本)和*.orig.tar.gz (如果你使用 debuild -S -sa)。上传前,确保安装了dput命令。同时在用户的主目录创建.dput.cf文件,用于设置dput参数。