deb包制作 自动添加mime类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

由于项目需要在 Linux 系统中使用.deb文件进行安装,在这里简单记录deb制作过包程。包含自动添加mime类型,使用特定后缀文件启动软件。

一、Deb包结构

 

二、Deb包详细信息

1.DEBIAN

 安装信息包括目录中的内容,其中:

    文件中包括了安装包的基础信息,名称、版本、架构等;

Package: Client
Version: 8.0.0
Architecture: amd64
Section: utils
Priority: optional
Maintainer: MC
Description :KwClient

    postinst、prerm和postrm为脚本文件,当完成安装过程后会自动执行postinst脚本,卸载前会自动执行prerm脚本,完成卸载过程后会自动执行postrm脚本;

例如安装后更新桌面图标、MIME数据库,以及软件目录添加读写权限等。

#!/bin/sh
sudo update-desktop-database /usr/share/applications
sudo update-mime-database /usr/share/mime
sudo chmod -R 777 /opt/Client

2.opt

选择将软件安装在opt中,则将软件包放置在/opt/Client/,其中包含Client可执行文件;

3.usr

usr目录会添加设置软件桌面快捷方式、图标等信息

/usr/bin/Client

里面放置软件包文件,一般会选择将软件安装至/opt/目录下,所以/usr/bin/ 文件夹里面只需要放置一个Client脚本文件用来启动/opt/Client/下的可执行文件,脚本文件可以写带参数调用,如特定后缀下名文件启动软件,如下以‘pof’后缀启动:

#!/bin/bash

gTemplateExt=("pof")
gBinPath=$(dirname "$0")
if [ -d "${gBinPath}/Client" ]; then
	gInstallPath=${gBinPath}
else
	gInstallPath=/opt
fi
gApp=Client
gFilePath=

function parse_arg()
{
	if [ $# -eq 1 ] ; then
		gFilePath=$1
	fi	
}

function run()
{
	oldPwd="${PWD}"
	if [ -e "${gInstallPath}/Client/${gApp}" ] ; then
		{ ${gInstallPath}/Client/${gApp}  "$@"; } > /dev/null 2>&1
	else
		echo "${gApp} does not exist!"
	fi
}

function main()
{
	parse_arg "$@"
	run "$@"
	exit 0
}

main "$@"

/usr/share/application/Client.desktop 桌面快捷方式

文件头、显示名称、类型、执行的命令、mime类型、图标

其中Exec指向上面/usr/bin/中的脚本文件

Exec 常用的参数有:%f %F %u %U
%f:单个文件名;
%F:文件列表。用于程序可以同时打开多个本地文件。每个文件以分割段的方式传递给执行程序。
%u:单个URL。
%U:URL列表。每个URL以分割段的方式传递给执行程序。本地文件以文件URL或文件路径的方式传递。

[Desktop Entry]
Name=KwClient
Type=Application
Exec=/usr/bin/Client %f
MimeType=application/x-pof
Icon=/usr/share/icons/Client.png

/usr/share/icons/Client.png 软件图标

桌面快捷方式、开始菜单中都会应用该图标;

/usr/share/mime/packages/application-pof.xml mime自定义类型

其中包含mime类型描述、后缀类型、图标(文件打开方式及该后缀文件都会应用)等;

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
	<mime-type type="application/x-pof">
		<comment>POF</comment>
		<comment xml:lang="zh_CN">POF 文件</comment>
		<glob-deleteall/>
		<glob pattern="*.pof"/>
		<icon name="/usr/share/icons/Client.png"/>
	</mime-type>
</mime-info>

三、Deb打包

为了方便打包,制作打包脚本文件;由于cpu架构的不同,DEBIAN/control/中的架构信息需要改变,所以需要在脚本文件中动态生成,脚本代码如下:

#!/bin/bash

# 项目路径
Dir=$(cd "$(dirname "$0")";pwd)
Package=Client
Version=8.0.0
Architecture=
ARCH=$(uname -m)

if [ ${ARCH} = "x86_64" ] ; then
	Architecture=amd64
	ARCH=x86_64
elif [ ${ARCH} = "aarch64" ] ; then
	Architecture=arm64
	ARCH=arm64
elif [ ${ARCH} = "mips64" ] ; then
	Architecture=mips64e1
	ARCH=mips64
fi

echo "ARCH: ${ARCH}"
echo "Architecture: ${Architecture}"
#deb包名称构成为 软件名称-版本-系统-架构.deb
Deb_Dir=${Dir}/package/${Package}-${Version}-linux-${ARCH}
Deb_Name=${Dir}/package/${Package}-${Version}-linux-${ARCH}.deb

if [[ ! -f ${Dir}/build/bin/Client ]];then
	echo "make失败"
	exit 1
fi

make_deb()
{
	cd package
    #先将之前制作的包删除,拷贝新的deb包
	rm -rf ${Deb_Dir}
	cp -r Client-deb ${Deb_Dir}

	echo "Package: ${Package}
Version: ${Version}
Architecture: ${Architecture}
Section: utils
Priority: optional
Maintainer: MC
Description :Client" > ${Deb_Dir}/DEBIAN/control

	cp -r ../build/bin/* ${Deb_Dir}/opt/Client/
	chmod 755 ${Deb_Dir} -R
	dpkg -b ${Deb_Dir}  ${Deb_Name}
}
make_deb
echo "打包完成"


总结

以上就是整个deb包的制作过程,本文仅仅简单介绍了deb包的基本信息,其他信息等以后用到再补充。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值