make your driver as a deb package

做完自己的开发之后,想要发布自己的代码,怎么办呢,比如如何给已有的系统打补丁,或者作为一个安装包在新部署的系统环境中存在呢?

其实要分情况,如果是社区兼容性的东西(符合社区blueprint),能够被社区admin review通过的,当然直接提交到社区比较合适;如果是自己特有的功能,仅仅是少数几个

文件的修改,使用diff/patch 将改动做成patch,之后apply 即可,如果涉及到文件的增删改,同时相对比较多的时候,且希望使用例如puppet之类的部署工具,作为

一个模块将自己的改动部署掉,则需要打包了,centos上就打rpm包,ubuntu则需要打deb的包,这两天打deb包的过程record一下,以后还可能用,rpm的遇到再说。

事实上deb的包里面内容还是挺多的,有很多种用法,一下是我经验证可以的方式,不一定最佳。

第一种方式. 从零开始制作自己的包:

1. sudo apt-get install packaging-dev dh-make 安装需要的包

2.设置环境变量,这些内容将在deb包中的control文件中出现

DEBEMAIL="your_email_address@domain.com"

DEBFULLNAME="Your Name"

export DEBEMAIL DEBFULLNAME

3.生成deb的架子,各个参数的意义可以使用dh_make --help查看

dh_make -i -n -p packagename_1.0.0 -c gpl2, 生成的目录中ex和EX结尾的文件可以删除

4. 修改control文件,在Depends字段添加该包的依赖,可以修改Section等,不过不修改也没关系,

5. 添加postinst, postrm, preinst三个script文件,实际上是三个脚本(#!/bin/sh),其中preinst是安装开始前做准备的工作,比较在/usr/share下生成一个目录,

删除某个目录,或者做一些检查之类的;postinst是安装之后做一些动作,同样可以增删改文件,重启服务等; postrm表示使用"dpkg -P" 卸载包时做的动作,

一般会将安装时做的修改回退,比如删除添加的文件和目录,使用patch -R,回退修改等。

6. 添加install文件,此文件中内容为“pathA pathB”, 中间以空格隔开的多行数据,表示将pathA下的内容拷贝到pathB下,安装过程会做很多的拷贝,就写在这里,

拷贝的时候pathA的路径是相对路径,比如packagename下面有debian目录和‘test’ 目录,要将test目录中的文件test.txt移到/etc/init.d下,则写为:

“test/test.txt /etc/init.d/”

7. 在packagename目录中运行“debuild -us -uc”, 则在和packagename同级目录生成所需的deb包, 其中us 和uc参数表示不使用GPG签名包。


第二种方式.修改现有的包:

找一个包,解压后修改然后重新打包,有时候更方便,同时如果用第一种方式做的包,结果发现有点儿问题,重新做太麻烦,就用第二种了。

1. 使用 “dpkg -X test.deb test”, 将test.deb解压到testmul

2. mkdir test/DEBIAN, 创建目录,这里DEBIAN是大写,使用小写的debian不识别,创建包的时候用命令生成的是debian的目录,可能跟第一种和第二种做包

的命令不同有关,没继续研究了。

3. 使用“dpkg -e test.deb test/DEBIAN” 将打包过程的信息解压到test/DEBIAN中

4. 在test/DEBIAN中有control,md5sums,postinst, postrm, preinst, 和做包时候的内容一致,做包时候的install文件中的内容在第一步生成的test目录下,

打开其对应的路径,发现其内容是install执行copy之后的实际文件位置

5. 修改control,postinst,postrm,preinst

6. 修改完成后在test同级目录执行“dpkg-deb -b test .”, 则在test同级目录生成test.deb


依赖冲突解决:

无论安装rpm还是deb的包经常遇到各种冲突,比如系统安装的包的版本和“control文件中Depends中定义的不匹配”等,

保险的情况下当然是升级系统的版本,但是各种依赖交叉,会让安装的过程变得很头疼,事实上,有些依赖并不是那么严格,

比如一些小版本等等,为了让安装变得顺利,我们可以将包解压,修改control中的Depends字段,重新打包之后安装。

当然了,除非你对版本之间的差异特别情况,否则请严格测试,否则这样的方式并不推荐。


mark link:

https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值