用户工具

站点工具


如何在ubuntu系统下制作自己的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.

我的系统版本是Ubuntu 13.04 (代号 Raring Ringtail),所以执行如下命令

  pbuilder-dist raring create

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

官方教程http://packaging.ubuntu.com/html/packaging-new-software.html
开源许可证http://opensource.org/licenses

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源进行安装了
  编译进度可查看:http://ppa.launchpad.net/justzx2011/
  

13 感谢

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

评论

请输入您的评论. 可以使用维基语法:
A L U J B
 
如何在ubuntu系统下制作自己的ppa安装包.txt · 最后更改: 2014/05/17 10:51 由 justzx