以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 软件,