目录

一. 文件目录介绍

1.DEBIAN 文件夹介绍

control

preinst

prerm

postinst

postrm

 2. usr 文件夹介绍

bin 目录

local 目录

share 目录

二、 如何打包

1.deploy.sh 脚本 

2. 如何调用打包脚本


一. 文件目录介绍

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

以上就可以完成打包了


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐