1 deb包简介
- deb是Debian软件包格式的文件扩展名。我们比较常用的ubuntu系统下的安装包就是deb格式。本篇文章就简单介绍下如何制作一个deb格式的安装包。
2 制作deb包
目录结构
debPackTemp/
├── DEBIAN
│ ├── control
│ ├── postinst
│ └── prerm
├── opt
│ └── xiaohuihui
│ └── bin
│ ├── libaudio.so.2
│ ├── libQtCore.so.4
│ ├── libQtGui.so.4
│ ├── loginUI
│ └── startLogin.sh
└── usr
└── share
├── applications
│ └── xiaohuihui.desktop
└── icons
└── xiaohuihui
└── xiaohuihui.ico
DEBIAN目录
- 首先创建一个DEBIAN目录,这个目录必须要有
- 然后在DEBIAN目录下创建一个control文件,该文件中主要记录软件包的一些信息,这个文件必须要有。control文件内容介绍:
- Package : 包名
- Version : 版本号
- Architecture : 该程序可运行的CPU架构
- Section : 你的软件属于的类别,utils表示实用工具。
- Priority : 声明这个包的优先级
- Maintainer : 提供者。可以写你的名字和邮箱地址
- Description : 描述信息
- eg
Package:xiaohuihui
Version:1.0.0
Architecture:amd64
Section:utils
Maintainer: xiaohuihui <xiaohuihui@qq.com>
Priority:optional
Description: csdn test codeopt/csdnPackTest/bin
- preinst : 安装包解包前运行的脚本
- postinst : 安装包解包后运行的脚本
#! /bin/sh
chmod -R 755 /opt/xiaohuihui/bin
processLogin=$(ps aux | grep 'loginUI' | grep -v grep)
if [ "$processLogin" != "" ]; then
pkill loginUI
fi
NAME_USER=`who | awk '{print $1}' | sort | uniq`
for name in $NAME_USER;
do
if [ "$name" != "root" ];then
CURRENT_HOME_DIR="/home/$name"
else
CURRENT_HOME_DIR="/$name"
fi
DESKTOP_DIR_CH=$CURRENT_HOME_DIR/Desktop
XIAOHUIHUIPATH="/opt/xiaohuihui/bin"
if [ -d $DESKTOP_DIR_CH ];
then
cp /usr/share/applications/xiaohuihui.desktop $DESKTOP_DIR_CH
chmod +w $DESKTOP_DIR_CH/xiaohuihui.desktop
chown $name:$name $DESKTOP_DIR_CH/xiaohuihui.desktop
chown $name:$name $XIAOHUIHUIPATH
fi
done
#! /bin/sh
processLogin=$(ps aux | grep 'loginUI' | grep -v grep)
if [ "$processLogin" != "" ]; then
pkill loginUI
fi
rm -rf /opt/xiaohuihui/*
NAME_USER=`who | awk '{print $1}' | sort | uniq`
for name in $NAME_USER
do
if [ "$name" != "root" ]; then
CURRENT_HOME_DIR="/home/$name"
else
CURRENT_HOME_DIR="/$name"
fi
DESKTOP_CH=$CURRENT_HOME_DIR/Desktop/xiaohuihui.desktop
echo $DESKTOP_CH
if [ -f $DESKTOP_CH ]; then
rm -rf $DESKTOP_CH
fi
done
- postrm:卸载时,删除文件之后运行的脚本
- 这四个文件都是shell脚本,不是必须的,我们可以只创建其中两个文件。
opt目录
- 这个目录主要存放你的程序
- 不一定要创建opt目录,也可以是usr目录或者其他目录。这里创建的是哪个目录,安装后,就会把你的程序拷贝到根目录下的对应目录中。opt目录下的目录结构也可以根据你的需求随意创建。
usr目录
- 存放桌面启动程序和桌面图标
- 如果我们不需要桌面图标的话,可以不添加这个目录
- xiaohuihui.desktop
[Desktop Entry]
Version=1.0.0
Name=xiaohuihui
Comment=xiaohuihui application
Name[zh_CN]=小灰灰
Comment[zh_CN]=小灰灰启动程序
Exec=/opt/xiaohuihui/bin/startLogin.sh
Icon=/usr/share/icons/xiaohuihui/xiaohuihui.ico
Terminal=false
Type=Application
Categories=Qt;desktop
StartupNotify=true
MimeType=application/x-desktop;
Keywords=CSDN;xiaohuihui;
3 打包
dpkg-deb -b debPackTemp/ xiaohuihui.deb
4 安装与卸载
dpkg -i xiaohuihui.deb
- 卸载(卸载的软件名就是control文件中Package对应的名字)
dpkg -r xiaohuihui
5 效果
- 安装完成后,就在/opt/xiaohuihui/bin目录下生成了对应的程序文件
root@ubuntu:/opt/xiaohuihui/bin# ls
libaudio.so.2 libQtCore.so.4 libQtGui.so.4 loginUI startLogin.sh
root@ubuntu:/opt/xiaohuihui/bin#
6 解包
- 如果我们有一个deb包,也可以解开查看其中内容
- 解出包中文件
dpkg -X xiaohuihui.deb debPackTemp/
dpkg -e xiaohuihui.deb debPackTemp/DEBIAN/