本文环境
OS:Ubuntu 11.10 已安装:build-essential、dh-make、dput等必要的库和软件 对象:不会却又想打Debian包的小白
本文目标
- 没有debian规则情况下,大部分自动化地创建debian规则
- 文件符合LaunchPad.net标准,上传至PPA
准备工作
- 去申请launchpad.net帐号
- 创建个人Open PGP密钥
- launchpad帐号加入Open PGP密钥
- 在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天(业余时间),遥想当年手动写规则,简直是弱爆了。
当然,非常欢迎指正错误,或者是说出更好的方法哈~