如何在ubuntu14.04下制作openyoudao的ppa安装包

    Openyoudao发布Alpha版本后,又集成了爱词霸的在线翻译功能。最初只有我跟吕大,还有少许的同学帮忙测试,多数情况下运行还算稳定。直到发布了AUR和PPA安装包,用户才逐渐多起来,大家反馈也越来越多:一方面,用户很认可这款软件,因为取词功能强大、翻译准确,也没有广告;另一方面,程序会时不时异常中断,这个bug后续越來越明显。当时很想能解决这个bug再发布Alpha,但是花了很长时间,还是没能解决。

    其实,在给软件打包之前,自己对linux很不熟悉,甚至都算不上一个初级菜鸟,之所以还要硬着头皮写这款软件就是想挑战一下自己,看到底能不能写好程序,能不能吃的了程序员这碗饭。由于当时没有特别称手的博客,所以前前后后做了几次发布都没能把过程记录下来,直到最近,终于解决了程序异常中断这个大bug,在打包方面也有了一定经验,所以写下这篇博客,方便大家用作参考。

1 安装打包需要的软件环境

(Ubuntu 11.10之前)

sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

Ubuntu 11.10之后,可以通过如下命令安装:

(Ubuntu 11.10之后)

sudo apt-get install packaging-dev

2 创建自己的GPG key

pub 2048R/AA08D2A8 2014-03-25

密钥指纹 = 5EAC 8E2F 5507 E388 E316 3AD9 F894 2D76 AA08 D2A8

uid zhangxin (openyoudao) <justzx2011@gmail.com>

sub 2048R/8A54FE05 2014-03-25

其中AA08D2A8是生成的key

将key的公共部分上传到key server,这样全世界的开发者就可以根据你的key来识别你的信息和文件:

gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>

3 创建你的ssh key


(ssh 代表安全的shell ,这里用来安全的把文件上传到PPA发布平台)

ssh-keygen -t rsa

4 创建pbuilder

(允许开发者在本地创建PPA包)

pbuilder-dist <release> create where <release> 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.

5 创建Launchpad账户

官网注册

上传GPG key到Launchpad,通过如下指令查看自己的GPG key:

gpg ­­fingerprint <email@address.com>

会得到如下结果:

pub 4096R/43CDE61D 2010-12-06

Key fingerprint = 5C28 0144 FB08 91C0 2CF3 37AC 6F0B F90F 43CD E61D

uid Daniel Holbach <dh@mailempfang.de>

sub 4096R/51FBE68C 2010-12-06

运行如下指令提交你的key到Ubuntu keyserver:

gpg --keyserver keyserver.ubuntu.com --send-keys 43CDE61D

登陆个人key管理面板

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

6 上传 ssh key


打开~/.ssh/id_rsa.pub文件,将其中的内容拷贝到帐号的add ssh key文本框中,选择导入后完成上传 

7 配置 Bazzar


(一个版本控制软件,可以储存代码)

首先告诉Bazzar你是谁:

bzr whoami "xin zhang <justzx2011@gmail.com>"

bzr launchpad-login justzx2011(我的Launchpad账户id)

Bazaar in five minutes

官方教程

开源许可证

8 配置你的shell环境变量


打开~/.bashrc 文件,在文件开头加上如下内容

export DEBFULLNAME="xin zhang"

export DEBEMAIL="justzx2011@gmail.com"

然后执行:$source ~/.bashrc

9 安装编译工具

sudo apt-get install build-essential dh-make

10 下载Openyoudao源码包


Openyoudao代码托管在Github上,下载源码包,首先感谢林纳斯·托瓦兹发明了Git,为世界创造了一个知识传递平台.

wget https://github.com/justzx2011/openyoudao/archive/beta0.2.tar.gz

11 开始打包

a 根据模板生成配置文件

bzr-builddeb includes a plugin to create a new package from a template. The plugin is a wrapper around the dh_make command, You should already have these if you installed packaging-dev. Run the command providing the package name, version number, and path to the upstream tarball:

$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 : xin zhang

Email-Address : justzx2011@gmail.com

Date : Mon, 31 Mar 2014 22:06:24 +0800

Package Name : openyoudao

Version : 0.2

License : blank

Type of Package : Single

Hit <enter> 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/justzx/workspace/package/openyoudao

b 修改配置文件

参照打好的包: https://github.com/justzx2011/openyoudao/tree/beta

c 将修改提交到打包分支

bzr commit -m "Initial commit of Debian packaging."

d 在当前环境中编译软件包

bzr builddeb -- -us -uc

e 检测软件包是否存在bug

lintian openyoudao_0.2-1ubuntu1.dsc

f 给软件包签名(需要输入之前设置的密码)

debuild -S -kAA08D2A8

12 上传软件包

a 编辑~/.dput.cf

通过上面的一系列流程,我们生成了一组经过数字签名的文件,最后需要做的是将这些文件上传到ppa官方的ftp,此时会用到一个叫dput的软件,要使用dput,首先要编辑文件~/.dput.cf,没有就创建.在这个文件里面定义要上传的Launchpad账号。我的~/.dput.cf文件内容如下:

[youdao-beta0.2]

fqdn = ppa.launchpad.net

method = ftp

incoming = ~justzx2011/openyoudao-v0.2/ubuntu/

login = anonymous

allow_unsigned_uploads = 0

b 执行上传

dput my-ppa openyoudao_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/~justzx2011/+archive/openyoudao-v0.2

You are receiving this email because you are the uploader of the above

PPA package.

接下来就静待官方编译吧~

编译完成后,就可以通过ppa源进行安装了

13 感谢

最后感谢师弟xdlailai,在第一次发布PPA时,咬紧压根啃了N多文档,终于为PPA软件包发布摸清了路子,完成了Alpha版本的发布,现在大家都已经工作了,开始为生活奔波,很怀念学校那段日子,虽然只是个菜鸟,但是仍然不分昼夜的支持开源,希望大家可以找到新的奋斗方向,坚持自己想做的.

初次尝试制作ppa软件包,如有不足之处还请大家指正.

mailto:justzx2011@gmail.com

主页:http://openyoudao.org

最新链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • RPM/DPKG 两大阵营简介在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG ...
    空语阅读 1,407评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 各大Linux发行版软件包管理参考(http://www.freeoa.net/osuport/botinstal...
    IRONYT阅读 7,253评论 0 12
  • 借我一个暮年, 借我碎片, 借我瞻前与顾后, 借我执拗如少年。 借我后天长成的先天, 借我变如不曾...
    诗语远方的温度阅读 292评论 3 1
  • 记忆里的黑窟窿总是不断的冒着冰凉的泉水,不慌不忙,就那样默默的涌出。 初次来到这里,好奇的眼眸必将投向不远处的...
    哒颜阅读 656评论 13 11