debian的源码包的使用

以grub为例

源码包的下载:
apt-get source grub2

源码一般包括一个orig的上游压缩包,和一个debian的压缩包,和一个grub2_*.dsc包

展开:
apt-get source grub2

 或者

dpkg-source -x grub2_xxxx.dsc

源码会被展开到 grub2-2.02

里面会有个debian的目录。这个目录下有3个最重要的文件, 当然其他文件也很重要,具体作用看debian的“开发者之路"文档

1.debian/changelog

debian包的版本号,来自这个文件, 用dch 进行修改

2.debian/control

具体生成的debian包, 以及编译依赖, 安装依赖都在这个文件。

3.debian/rules

具体的编译过程的定义。

4. debian/patches

补丁目录, 对上游原始发布文件的修改, 都在这里进行。 需要执行的补丁清单以及次序,在debian/patches/serial文件里

 

如果需要修改软件源码,都要用补丁来进行。

apt-get source grub2 或者 dpkg-source -x grub2_xxxx.dsc 后, 会自动把补丁都执行过,

如果要取消补丁的执行,用quilt pop -a , 如果要执行补丁,用quilt push -a

如果增加新的补丁, 应该在所有的补丁执行之后, 再进行。

如果要修改源码,先debian/rules clean, 清理一下,然后修改需要修改的文件, 修改完成后执行,dpkg-source --commit, 会自动比较出修改的差异, 生成一个补丁, 输入补丁文件名, 补丁就自动放到了debian/patches,

然后 dch -i 修改一下changelog的版本号,并输入修改说明。

至此,源码包的修改就完成了。

下面的步骤就是编译, 编译过程, 会生成新的源码包, 和目标deb包。

dpkg-buildpackage -frakeroot

如果是继续编译, 不做clean, 在命令行后面增加 -nc
dpkg-buildpackage -frakeroot -nc

后面如果需要把deb包,建立软件源,需要用到reprepro 软件,