参考
https://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html
使用命令dpkg --help测试是否支持dpkg命令。centos7默认使用yum安装器,没有dkpg,需要安装dpkg安装器
yum -y install epel-release
yum repolist
yum install dpkg-devel dpkg-dev
假如deb包对应的目录是testdir
构建目录树
tree testdir
testdir
├── DEBIAN
│ ├── control
│ ├── postinst
│ ├── postrm
│ ├── preinst
│ └── prerm
└── usr
└── bin
└── hello.sh
DEBIAN中是包的信息control文件,和安装过程中执行的脚本文件。control文件要表明deb包信息,所以是必需的。其他几个文件是脚本(pre、post、inst、rm)表示安装前/安装后,卸载前/卸载后的脚本。这些脚本可以根据需要自行添加。
Package: testdir
Version: 1.0.0
Architecture: amd64
Maintainer: Helloworld
Secion: data
Priority: optional
Installed_Size: 20
Description: This is my test deb package
usr目录下的所有目录和文件会映射到 系统的 /usr 目录下。其他需要安装的目录可以和usr目录一样,由dpkg执行安装的时候复制到系统的目录。安装过程dpkg安装器会自行释放除DEBIAN以外的目录树。卸载的时候根据目录树删除文件。如果目录中有残留文件,目录会被保留。
目前安装的只有/usr/hello.sh
1.打包dpkg -b testdir
dpkg -b testdir
dpkg-deb: building package 'testdir' in 'testdir.deb'.
生成文件testdir.deb
2.命名deb文件dpkg-name testdir.deb
dpkg-name testdir.deb
dpkg-name: info: moved 'testdir.deb' to './testdir_1.0.0_amd64.deb'
源文件testdir.deb被重命名成testdir_1.0.0_amd64.deb
3.安装dpkg -i testdir_1.0.0_amd64.deb
问题:
dpkg-deb: error: package name has characters that aren't lowercase alphanums or '-+.'
因为control文件中的Package字段对应的名字里面使用了下划线,把下划线去掉或者换成减号。package名字中不能有空格和下划线
yum 安装失败,因为实体机ip换了。虚拟机中的ip没有改,
vim /etc/sysconfig/network-scripts/ifcfg-ens33
改完ip后重启网络服务
service network restart
dpkg执行安装的之后只要有preinst、postinst、prerm、postrm中任意一个脚本,就报错,即使脚本内容为空。原因不知道,换了一个系统就不报错了。
linux构建rpm包参考: