mzh/blog

如何从源代码自动制作Deb规则&推送至Launchpad

本文环境

OS:Ubuntu 11.10 已安装:build-essential、dh-make、dput等必要的库和软件 对象:不会却又想打Debian包的小白

本文目标

  1. 没有debian规则情况下,大部分自动化地创建debian规则
  2. 文件符合LaunchPad.net标准,上传至PPA

准备工作

  1. 去申请launchpad.net帐号
  2. 创建个人Open PGP密钥
  3. launchpad帐号加入Open PGP密钥
  4. 在LaunchPad.net上建立个人PPA

创建Debian规则

Linux的世界是源代码构成的,时时刻刻会多出很多新的,好玩的软件,但这些软件的作者并没有时间去写debian规则,而各位又想用deb包来安装的话就没办法了。跳过”又臭又长”的Debian打包指南,其实我们只需要一个软件就够了 —-dh_make。 这个软件会自动地根据makefile写出Debian规则来,执行一下就好了,够简单吧。 下面就用没有debian化的ibus- gjs来做例子: git clone git@github.com:mengzhuo/ibus-gjs.git ibus-gjs-1 && cd ibus-gjs-1 && mv debian debian.backup 你会发现这时,ibus-gjs- 1里面没有debian规则(只剩个备份文件夹啦),还有就是在路径底下直接用dh_make是不行的,因为我们的作者用的是autogen.sh,所以需要用以下命令来做出makefile ./autogen.sh --prefix=/usr && ./configure 成功后(没有任何依赖不足或错误)执行 dh_make -e "mengzhuo1203@gmail.com" -n -s 当然,你可以把email换成你自己的,具体参数是什么意思请问man哦,这时屏幕上应该出现: 图片里大意是叫你去修改一下debian规则,毕竟很多地方还是要人来做的嘛~一般改debian/control和删除一些不需要的*.ex脚本文件,具体怎么改就要看Debian的文档啦,不过本例的最后成品可以参考debian.backup文件夹里的文件。

创建、测试Deb包

上面改好之后,在ibus-gjs-1底下执行dh_make --createorig -s,来创建debuild所需的orig文件,放心按回车吧,那个提示是吓唬你的,因为你已经创建了debian规则,所以它会略过的。 现在,你已经可以自己创建一个deb包了,下面的命令会创建一个deb包,并清除编译产生的缓存。 debuild -b && debuild clean 然后你会发现下面的错误: 这是因为你还没指定你的密钥,如果你不需要上传到LaunchPad的话就可以忽视它啦。现在,返回上层,你就会发现你打好的DEB包啦。

源码上传

就3步:

1. 获得Open PGP ID,例如我的ID是A0771E56,可以用下面的代码参看 `gpg --list-keys` 我的PGP 

pub 2048R/A0771E56 2011-11-21 uid Meng Zhuo (For Email and EncryptedFile) sub 2048R/DF9E11A0 2011-11-21

2. 在源代码目录执行 `debuild -S -sa -k[你的ID]` 例如: `debuild -S -sa -kA0771E56` 来构建launchpad承认的源代码格式
3. 返回上层目录,执行 `dput ppa:[你的PPA地址] source.changes结尾的文件`

例如:

dput ppa:mengzhuo1203/ibus-gjs ibus-gjs_1_source.changes

好啦,现在就坐等LaunchPad给你排队编译这个东西了,大概1-2小时不等

总结

我们学了简单地从源代码制作debian规则和上传代码到LaunchPad,很简单吧,我可是摸索了……3天(业余时间),遥想当年手动写规则,简直是弱爆了。 当然,非常欢迎指正错误,或者是说出更好的方法哈~