Personal Package Archives(个人软件包档案)是Ubuntu Launchpad网站提供的一项服务,允许个人用户上传软件源代码,通过Launchpad进行编译并发布为2进制软件包,作为APT/新立得源供其他用户下载和更新。在Launchpad网站上的每一个用户和团队都可以拥有一个或多个PPA。
1.安装打包需要的软件环境
$ sudo apt-get install packaging-dev
1
$sudoapt-getinstallpackaging-dev
2.创建自己的GPG KEY
$ gpg --gen-key
1
$gpg--gen-key
接下来,一路回车,在要求确认信息的时候,点击y。最后一步是一通的键盘乱按。整个过程如下图所示:
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
pub 2048R/47EDFAD4 2016-01-23
密钥指纹 = 043D A507 281E D8F8 6D79 9806 34F5 C3F3 47ED FAD4
uid LongSky (LongSky)
sub 2048R/5A23BF98 2016-01-23
1
2
3
4
5
6
7
gpg:正在检查信任度数据库
gpg:需要3份勉强信任和1份完全信任,PGP信任模型
gpg:深度:0有效性:1已签名:0信任度:0-,0q,0n,0m,0f,1u
pub2048R/47EDFAD42016-01-23
密钥指纹=043DA507281ED8F86D79980634F5C3F347EDFAD4
uidLongSky(LongSky)
sub2048R/5A23BF982016-01-23
注意,我们需要的KEY ID为47EDFAD4.
将KEY的公共部分上传到KEY SERVER,这样全世界的开发者就可以根据你的KEY来识别你的信息和文件.
$ gpg --send-keys --keyserver keyserver.ubuntu.com
1
$gpg--send-keys--keyserverkeyserver.ubuntu.com
我们自己的Key发送就是
$ gpg --send-keys --keyserver keyserver.ubuntu.com 47EDFAD4
1
$gpg--send-keys--keyserverkeyserver.ubuntu.com47EDFAD4
3.创建你的SSH KEY
$ ssh-keygen -t rsa
1
$ssh-keygen-trsa
4.创建pbuilder(允许开发者在本地创建PPA包)
pbuilder-dist create
where is for example raring, saucy, trusty or in the case of Debian maybe sid.
This will take a while as it will download all the necessary packages for a “minimal installation”.
These will be cached though.
1
2
3
4
pbuilder-distcreate
whereisforexampleraring,saucy,trustyorinthecaseofDebianmaybesid.
Thiswilltakeawhileasitwilldownloadallthenecessarypackagesfora“minimalinstallation”.
Thesewillbecachedthough.
我的系统版本是Ubuntu 15.10 (Wily Werewolf),所以执行如下命令:
$ pbuilder-dist wily create
1
$pbuilder-distwilycreate
这部分的耗时比较长,会安装全部的编译工具,要耐心等待一下!
5.创建Launchpad账户
帐号可以去Launchpad 官网注册
上传GPG KEY到Launchpad,通过如下指令查看自己的GPG KEY:
$ gpg --fingerprint wangqiang1588@sina.com
1
$gpg--fingerprintwangqiang1588@sina.com
会得到如下结果:
pub 2048R/47EDFAD4 2016-01-23
密钥指纹 = 043D A507 281E D8F8 6D79 9806 34F5 C3F3 47ED FAD4
uid LongSky (LongSky)
sub 2048R/5A23BF98 2016-01-23
1
2
3
4
pub2048R/47EDFAD42016-01-23
密钥指纹=043DA507281ED8F86D79980634F5C3F347EDFAD4
uidLongSky(LongSky)
sub2048R/5A23BF982016-01-23
运行如下指令提交你的KEY到Ubuntu Key Server:
$ gpg --send-keys --keyserver keyserver.ubuntu.com 47EDFAD4
1
$gpg--send-keys--keyserverkeyserver.ubuntu.com47EDFAD4
将Key fingerprint拷贝到文本框,点击 “Import Key”.
如果导入成功,系统会发送一封邮件到你的邮箱,用来对导入的Key进行验证
其中邮件的内容为不可读的,需要编译,内容类似于:
BEGIN PGP MESSAGE
Version: GnuPG v1.4.3 (GNU/Linux)
hQIOA0THhKozD+K5EAf9F3PcOL2iU6onH2YsvB6IKDXNxbK0NBVy6ppxcNq8hoTe
cuHvzWLFfh1ehhSNe1V6xpuFnt5sJoeA4qEEOxez3HmY80tKIKMPLyhC/8JiSIW9
fwuxj4C0F6pdyrpvGbQAzfPEFk/P1AtIHXm4WLXduhBT7YEpmUk/I4A/KlSrKoiP
J5vBtbroUyp2jvIhDUmY7ToU+ifrDe3+VP1ZzSEJzOOXec9oPbcbvf5NptXA7Hbp
S0ElBAcLjKpAu7VKotCwFZIsVXDHT/mxf2qm88bGIrlXS5uTzvmyhQps1KmyNiCz
I0i5kSVvHZWyVZ+8FrROLqYAqqnEIMg9hUnbFAervgf/YiYs0xxWLYf9e14eoMZA
ranGT72q/JHmBNBYenOijaquFNi1TH5J8Udtt2RfdyRUlmGilxRvtIYL8gpnuNpS
+GHOoBWUN2f4nawaDeqgrf6Nt3qQWWLO4iJPgieejFP2FP6zkLme1t7dXo+z1ary
EZuxSLtKIWkOFEZ8Gcn02hBgOhJZucnkF6BmVW9dr1C4QEAmGM631uqfsp5PapAn
yjHbEU1L2R9i7vPtJNRr6ubFLWg1Yhfv63ByxSx/WQHMMqlrbL+moXBGED3L2hM8
7FP9eapBRgmS+Bda9ArcGMUElTOkWoUYIOPyLOYmo15LvbxHOVaXjn7+fDgr2S1J
R9LArwHycmdKKelRww+ZvylHIfq8xy10atRQIYawchh9A1myXD1TlWbrrIkodQJF
iEpO2i1LKvqwZHOx3szT4hF+44tNFzQIL1j+zF5Hrt2WOTnS5WXGgGRtfEd8F7fN
khQZOAdhwrnlY+yknruC8Y8Jm8vM57+KnPgBfvxuxzLX1XFTfTZCHXeUmwwu3mga
m+6WzckeBGBDHKK6GqwFoOAykTwjyqOZaty7DPHeoINc0tLMVr9Ks64DScf8bgh4
MkNonA0YhMQbkmwRc33APw441+/iLw5gqndQdX44kKqC71dG6LqanAOjD29Xj3JV
ZBsjg95Jrx7Sx+i/V0PUeaU9QjCT0Q1jEy1Bcs8NYtTJnpG+4oHYJ0pyiGxIquQH
V9E+hW6Qehx5DbsIXEvfeaBBHOfAHHOhUH14WK4bsJWm8wZ50XiYBZrNFOqzsm13
2STcY4VIoJp3Uw2qNyvZXQUhpndlfgQGO14CMSadzDn6Vts=
=hTe6
END PGP MESSAGE
将邮件中这些内容拷贝到一个文件中,例如:file.txt,然后执行如下命令:
gpg --decrypt file.txt
此时会提示你输入之前设置的key密码,验证成功后,会有如下提示:
Please go here to finish adding the key to your Launchpad account:
[[https://launchpad.net/token/bP56TDKg8HXQbBs6LsN0]]
点击该链接,选择continue , 完成GPG Key 上传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
将Keyfingerprint拷贝到文本框,点击“ImportKey”.
如果导入成功,系统会发送一封邮件到你的邮箱,用来对导入的Key进行验证
其中邮件的内容为不可读的,需要编译,内容类似于:
BEGINPGPMESSAGE
Version:GnuPGv1.4.3(GNU/Linux)
hQIOA0THhKozD+K5EAf9F3PcOL2iU6onH2YsvB6IKDXNxbK0NBVy6ppxcNq8hoTe
cuHvzWLFfh1ehhSNe1V6xpuFnt5sJoeA4qEEOxez3HmY80tKIKMPLyhC/8JiSIW9
fwuxj4C0F6pdyrpvGbQAzfPEFk/P1AtIHXm4WLXduhBT7YEpmUk/I4A/KlSrKoiP
J5vBtbroUyp2jvIhDUmY7ToU+ifrDe3+VP1ZzSEJzOOXec9oPbcbvf5NptXA7Hbp
S0ElBAcLjKpAu7VKotCwFZIsVXDHT/mxf2qm88bGIrlXS5uTzvmyhQps1KmyNiCz
I0i5kSVvHZWyVZ+8FrROLqYAqqnEIMg9hUnbFAervgf/YiYs0xxWLYf9e14eoMZA
ranGT72q/JHmBNBYenOijaquFNi1TH5J8Udtt2RfdyRUlmGilxRvtIYL8gpnuNpS
+GHOoBWUN2f4nawaDeqgrf6Nt3qQWWLO4iJPgieejFP2FP6zkLme1t7dXo+z1ary
EZuxSLtKIWkOFEZ8Gcn02hBgOhJZucnkF6BmVW9dr1C4QEAmGM631uqfsp5PapAn
yjHbEU1L2R9i7vPtJNRr6ubFLWg1Yhfv63ByxSx/WQHMMqlrbL+moXBGED3L2hM8
7FP9eapBRgmS+Bda9ArcGMUElTOkWoUYIOPyLOYmo15LvbxHOVaXjn7+fDgr2S1J
R9LArwHycmdKKelRww+ZvylHIfq8xy10atRQIYawchh9A1myXD1TlWbrrIkodQJF
iEpO2i1LKvqwZHOx3szT4hF+44tNFzQIL1j+zF5Hrt2WOTnS5WXGgGRtfEd8F7fN
khQZOAdhwrnlY+yknruC8Y8Jm8vM57+KnPgBfvxuxzLX1XFTfTZCHXeUmwwu3mga
m+6WzckeBGBDHKK6GqwFoOAykTwjyqOZaty7DPHeoINc0tLMVr9Ks64DScf8bgh4
MkNonA0YhMQbkmwRc33APw441+/iLw5gqndQdX44kKqC71dG6LqanAOjD29Xj3JV
ZBsjg95Jrx7Sx+i/V0PUeaU9QjCT0Q1jEy1Bcs8NYtTJnpG+4oHYJ0pyiGxIquQH
V9E+hW6Qehx5DbsIXEvfeaBBHOfAHHOhUH14WK4bsJWm8wZ50XiYBZrNFOqzsm13
2STcY4VIoJp3Uw2qNyvZXQUhpndlfgQGO14CMSadzDn6Vts=
=hTe6
ENDPGPMESSAGE
将邮件中这些内容拷贝到一个文件中,例如:file.txt,然后执行如下命令:
gpg--decryptfile.txt
此时会提示你输入之前设置的key密码,验证成功后,会有如下提示:
PleasegoheretofinishaddingthekeytoyourLaunchpadaccount:
[[https://launchpad.net/token/bP56TDKg8HXQbBs6LsN0]]
点击该链接,选择continue,完成GPGKey上传
6.上传SSH KEY
打开~/.ssh/id_rsa.pub文件,将其中的内容拷贝到帐号的add ssh key文本框中,选择导入后完成上传
7.配置 Bazzar
(一个版本控制软件,可以储存代码)之所以需要使用Bazzar,原因是Launchpad的默认BUG管理器,并且编译代码的时候,要求用bzr进行代码编译。
首先告诉Bazzar你是谁:
$ bzr whoami "LongSky "
$ bzr launchpad-login wangqiang1588(我的Launchpad账户id)
1
2
3
$bzrwhoami"LongSky "
$bzrlaunchpad-loginwangqiang1588(我的Launchpad账户id)
8.配置你的shell环境变量
打开~/.bashrc 文件,在文件开头加上如下内容:
$ export DEBFULLNAME="LongSky"
$ export DEBEMAIL="wangqiang1588@sina.com"
1
2
3
$exportDEBFULLNAME="LongSky"
$exportDEBEMAIL="wangqiang1588@sina.com"
然后执行:
$ source ~/.bashrc
1
$source~/.bashrc
9.安装编译工具
$ sudo apt-get install build-essential dh-make
1
$sudoapt-getinstallbuild-essentialdh-make
10.下载源代码,以Openyoudao为例
$ wget https://github.com/justzx2011/openyoudao/archive/beta0.2.tar.gz
1
$wgethttps://github.com/justzx2011/openyoudao/archive/beta0.2.tar.gz
11.开始打包
a.根据模板生成配置文件
$ bzr dh-make openyoudao 0.2 beta0.2.tar.gz
Fetching tarball
Looking for a way to retrieve the upstream tarball
Upstream tarball already exists in build directory, using that
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n] s
Maintainer name : LongSky
Email-Address : wangqiang1588@sina.com
Date : Sun, 24 Jan 2016 17:09:27 +0800
Package Name : openyoudao
Version : 0.2
License : blank
Type of Package : Single
Hit to confirm:
Skipping creating ../openyoudao_0.2.orig.tar.gz because it already exists
Currently there is no top level Makefile. This may require additional tuning.
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the openyoudao Makefiles install into $DESTDIR and not in / .
Package prepared in /home/longsky/openyoudao
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$bzrdh-makeopenyoudao0.2beta0.2.tar.gz
Fetchingtarball
Lookingforawaytoretrievetheupstreamtarball
Upstreamtarballalreadyexistsinbuilddirectory,usingthat
Typeofpackage:singlebinary,indepbinary,multiplebinary,library,kernelmodule,kernelpatch?
[s/i/m/l/k/n]s
Maintainername:LongSky
Email-Address:wangqiang1588@sina.com
Date:Sun,24Jan201617:09:27+0800
PackageName:openyoudao
Version:0.2
License:blank
TypeofPackage:Single
Hittoconfirm:
Skippingcreating../openyoudao_0.2.orig.tar.gzbecauseitalreadyexists
CurrentlythereisnotoplevelMakefile.Thismayrequireadditionaltuning.
Done.Pleaseeditthefilesinthedebian/subdirectorynow.Youshouldalso
checkthattheopenyoudaoMakefilesinstallinto$DESTDIRandnotin/.
Packagepreparedin/home/longsky/openyoudao
b.将修改提交到打包分支
$ cd /home/longsky/openyoudao
$ bzr commit -m "Initial commit of Debian packaging."
1
2
3
$cd/home/longsky/openyoudao
$bzrcommit-m"Initial commit of Debian packaging."
c.在当前环境中编译软件包
$ bzr builddeb -- -us -uc
1
$bzrbuilddeb---us-uc
d.检测软件包是否存在BUG
$ cd ..
$ lintian openyoudao_0.2-1.dsc
1
2
3
$cd..
$lintianopenyoudao_0.2-1.dsc
e.给软件包签名(需要输入之前设置的密码)
$ cd /home/longsky/openyoudao
$ debuild -S -k47EDFAD4
1
2
3
$cd/home/longsky/openyoudao
$debuild-S-k47EDFAD4
12.上传软件包
a.编辑~/.dput.cf
通过上面的一系列流程,我们生成了一组经过数字签名的文件,最后需要做的是将这些文件上传到PPA官方的FTP,此时会用到一个叫dput的软件,要使用dput,首先要编辑文件~/.dput.cf,没有就创建.在这个文件里面定义要上传的Launchpad账号。我的~/.dput.cf文件内容如下:
[youdao-beta0.2]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~wangqiang1588/openyoudao-v0.2/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
1
2
3
4
5
6
[youdao-beta0.2]
fqdn=ppa.launchpad.net
method=ftp
incoming=~wangqiang1588/openyoudao-v0.2/ubuntu/
login=anonymous
allow_unsigned_uploads=0
b.执行上传
$ dput my-ppa openyoudao_0.2-1ubuntu1_source.changes
1
$dputmy-ppaopenyoudao_0.2-1ubuntu1_source.changes
上传成功后会收到一封PPA发来的邮件,内容如下:
Accepted:
OK: openyoudao_0.2.orig.tar.gz
OK: openyoudao_0.2-1ubuntu1.debian.tar.gz
OK: openyoudao_0.2-1ubuntu1.dsc
-> Component: main Section: net
openyoudao (0.2-1ubuntu1) trusty; urgency=low
* fix issue#8, exception interrupt
https://launchpad.net/~wangqiang1588/+archive/openyoudao-v0.2
You are receiving this email because you are the uploader of the above
PPA package.
1
2
3
4
5
6
7
8
9
10
Accepted:
OK:openyoudao_0.2.orig.tar.gz
OK:openyoudao_0.2-1ubuntu1.debian.tar.gz
OK:openyoudao_0.2-1ubuntu1.dsc
->Component:mainSection:net
openyoudao(0.2-1ubuntu1)trusty;urgency=low
*fixissue#8, exception interrupt
https://launchpad.net/~wangqiang1588/+archive/openyoudao-v0.2
Youarereceivingthisemailbecauseyouaretheuploaderoftheabove
PPApackage.
接下来就静待官方编译吧~
编译完成后,就可以通过ppa源进行安装了
编译进度可查看:http://ppa.launchpad.net/wangqiang1588/
参考链接