Total Pageviews

Monday, 15 July 2013

如何从源代码自动制作Deb规则&推送至Launchpad;制作deb软件包的过程

本文环境
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步:

    获得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

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

    例如:
    dput ppa:mengzhuo1203/ibus-gjs ibus-gjs_1_source.changes
    好啦,现在就坐等LaunchPad给你排队编译这个东西了,大概1-2小时不等

总结

我们学了简单地从源代码制作debian规则和上传代码到LaunchPad,很简单吧,我可是摸索了……3天(业余时间),遥想当年手动写规则,简直是弱爆了.
---------------------------------

制作deb软件包的过程

1:安装打包软件包所需要的依赖:
    sudo apt-get install devscripts dh-make build-essential
2:下载软件包源代码:(这里我依然是用rime为例)

    wget https://rimeime.googlecode.com/files/librime-0.9.9.tar.gz
然后解压并修改目录格式为软件名-版本号
    mv librime librime-0.9.9
3:创建Debian规则
首先请各位看看代码目录下是否有makefile这个文件没有的话请生成此文件,生成方法应软件的管理软件不同不同。
有makefile文件的执行此命令
dh_make -e "admin@xzcblog.com" -n -s
大家可以把邮件地址改成你自己的,执行后最好修改一下Debian目录下文件,例如添加软件依赖呀什么的,修改好了之后在执行这个命令
dh_make --createorig -s
最后就是这个命令了:
debuild -b
如果一切成功那么就会在代码的上级目录出现一个deb包。

这个我把已经编译好的rime-0.9.9的deb放出,大家需要的话请下载:
 http://pan.baidu.com/share/link?shareid=517899&uk=3054437854