目录
一. 文件目录介绍
Deb 的打包文件目录结构如下所示,其中DEBIAN 是跟打包相关的控制文件,usr 是安装文件,其它的按需添加即可
|----DEBIAN
|-------control
|-------postinst(postinstallation)
|-------postrm(postremove)
|-------preinst(preinstallation)
|-------prerm(preremove)
|-------copyright(版权)
|-------changlog(修订记录)
|-------conffiles
|----etc
|----usr
|----opt
|----tmp
|----boot
|-----initrd-vstools.img
1.DEBIAN 文件夹介绍
control
下面的&package_name, &version, &size 会通过脚本去修改,Architecture 根据实际填写(如 i386, amd64, m68k, sparc, alpha, powerpc)
Package: &package_name
Version: &version
Size: &size
Architecture: arm64
Maintainer: your company.com
Priority: optional
Description: &product_name is a software with very niubi de features.
preinst
一个脚本文件,用于备份(以便安装失败时回滚)
prerm
处理删除前操作的脚本文件,按需添加
postinst
处理安装后的事件的脚本文件,比如创建快捷方式,删除备份文件等操作,按需添加
postrm
处理删除后操作的脚本文件,按需添加
2. usr 文件夹介绍
bin 目录
bin 目录放运行文件(你的主程序可执行文件)
local 目录
local 目录下放程序依赖的所有文件,比如library, 配置文件等,都需要放在这个目录下
share 目录
share 下放快捷方式和桌面icon
二、 如何打包
1.deploy.sh 脚本
dirname=$(cd `dirname $0`; pwd)
echo $dirname
target=appName # 你的app 名字
builtdir=$dirname/deploy
ProductName=$2
echo "deb package..."
target_name=${ProductName}_arm64.deb
version=1.0.0
if [ -n "$1" ];then
target_name=${ProductName}_$1_arm64.deb
echo "target_name" $target_name
version=$1
fi
#设置信息
sed -i "s/&version/$1/" $dirname/debPackage/DEBIAN/control
sed -i "s/&version/$1/" $dirname/debPackage/DEBIAN/postinst
sed -i "s/&version/$1/" $dirname/deploy/${ProductName}/${ProductName}.desktop
sed -i "s/&project_name/$4/" $dirname/deploy/${ProductName}/${ProductName}.desktop
sed -i "s/&package_name/$3/" $dirname/debPackage/DEBIAN/control
sed -i "s/&product_name/$2/" $dirname/debPackage/DEBIAN/control
sed -i "s/&product_name/$2/" $dirname/deploy/${ProductName}/${ProductName}.desktop
sed -i "s/&product_name/$2/" $dirname/debPackage/DEBIAN/postinst
sed -i "s/&product_name/$2/" $dirname/debPackage/DEBIAN/preinst
sed -i "s/&product_name/$2/" $dirname/deploy/${ProductName}/${ProductName}.desktop
sed -i "s/&project_name/$4/" $dirname/debPackage/DEBIAN/postinst
#给下列文件增加执行权限
chmod +x $dirname/deploy/${ProductName}/$target $dirname/deploy/${ProductName}/runApp.sh $dirname/deploy/${ProductName}/${ProductName}.desktop $dirname/debPackage/usr/bin/$target
echo "calculate package size..."
deploySize=$(du -s $dirname/deploy/$ProductName)
packSize="`echo $deploySize | cut -d ' ' -f 1`"
sed -i "s/&size/$packSize/" $dirname/debPackage/DEBIAN/control
cd $dirname
dpkg -b debPackage $target_name
# clean temp folder
rm -rf $builtdir/${ProductName}/
2. 如何调用打包脚本
version=1.1.0
product_name=yourapp_name
project_name=yourproduct_name
package_name=yourpackage_name
export build_version=$version.$BUILD_NUMBER
export target_name=${product_name}_${build_version}_arm64.deb
export build_target=$WORKSPACE/${target_name}
cd $WORKSPACE
chmod +x deploy.sh
chmod +x debPackage/DEBIAN/postinst debPackage/DEBIAN/postrm debPackage/DEBIAN/prerm debPackage/DEBIAN/preinst
./deploy.sh $build_version $product_name $package_name $project_name
以上就可以完成打包了