Ubuntu(debian) 程序 dep 打包

Ubuntu(debian)上的dep和CentOS的rpm打包方式有相同之处,
  • 都是shell定义安装,安装之后,卸载之前,卸载之后的操作
  • 都需要定义软件包的包名,版本,维护者等等信息。
但定义的方式略有不同,
  • rpm包有一个spec文件,通过%build, %install, %post等等来定义对应执行操作
  • dep包需要定义一个DEBIAN文件夹,下面必须有文件control来定义包的信息,通过可执行文件(需设置shebang #!/bin/sh): postinst, prerm, postrm来定义安装,卸载等操作 。

分步指南

一、程序路径

deb包安装时会直接解压到根目录,所以在打包时,需要定义好相对于打包目录的路径,例如:
打包命令:
dpkg -b ~/rpmbuild/SOURCES/ubuntu/ ~/rpmbuild/RPMS/testdeb-kylinv10-desktop.deb
打包目录为~/rpmbuild/SOURCES/ubuntu/,我们希望程序app的安装到/home/admin/,
那么需要在~/rpmbuild/SOURCES/ubuntu/下新建home/admin/, 即~/rpmbuild/SOURCES/ubuntu/home/admin/,
再将程序app解压或者拷贝到~/rpmbuild/SOURCES/ubuntu/home/admin/,
所需的DEBIAN文件夹, 放到~/rpmbuild/SOURCES/ubuntu/目录下

二、安装卸载行为

安装卸载之前,之后需要做的操作,需要定义到DEBIAN目录中的shell脚本,preinst, postinst, prerm, postrm中,
比如需要在安装之后启动程序,并设置程序服务开机自启动,我们的服务名为testdeb的postinst文件:

#!/bin/sh
cp /home/admin/app/testdeb.service /lib/systemd/system/
systemctl enable testdeb
systemctl daemon-reload
systemctl start testdeb

其中,

  • 因为是shell脚本,shebang#!/bin/sh 必须定义,同时需要有可执行权限(chmod +x)
  • 如果需要执行某些脚本,直接./scriptname.sh执行可能会报Syntax error: “(” unexpected错误,这是因为sh和bash不兼容,通过bash ./scriptname.sh执行即可
  • Ubuntu中有多个放service服务文件的位置,/lib/systemd/system/, /etc/systemd/system/, 这些目录下都能通过service testdeb start启动,但是只有在/lib/systemd/system/下时,执行systemctl enable testdeb不会报错
三、deb包信息

包信息是定义在DEBIAN目录下的control文件中,例如:

Package: debtest
Version: 6.0
Section: free
Prioritt: optional
Architecture: arm64
Maintainer: Me
Description: debtest for Test

其中Architecture比较重要,如果与待安装系统的架构不同,会不能安装。

四、安装卸载

debtest 是包名,testdeb-kylinv10-desktop.deb是安装包文件名
通过命令dpkg -i testdeb-kylinv10-desktop.deb安装,对应DEBIAN下的脚本会被安装到/var/lib/dpkg/info/下,
分别对应debtest.postinst, debtest.postrm 等等。
dpkg -r debtest 可以卸载程序, dpkg --remove --force-remove-reinstreq debtest 强制卸载
dpkg -X testdeb-kylinv10-desktop.deb . 解压安装包到当前目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值