linux程序打包
qt程序打包与执行
-
将release版本生成的移动到新建文件夹中;
-
linux下qt打包的sh文件
例如,生成pack.sh#!/bin/sh exe="mytest" #需发布的程序名称 des="/home/test/mytest/install" #步骤一中新建目录的完整路径 deplist=$(ldd $exe|awk '{if (match($3,"/")){printf("%s "),$3}}') cp $deplist $des
在命令行输入 sh pack.sh 即可。
外部链接库需要自己放入 -
运行qt程序的sh文件
例如,生成mytest.sh#!/bin/sh appname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname $*
在命令行输入 sh mytest.sh 即可。
deb文件打包与解压
- 在任意目录下模拟出一个Linux的文件架构
-
创建DEVLAN文件夹
-
在DEBIAN下创建control、copyright、postinst等文件
-
创建control文本
Package: mysoftware Version: 2016-02-26 Section: free Priority: optional Depends: libssl.0.0.so, libstdc++2.10-glibc2.2 Suggests: Openssl Architecture: i386 Installed-Size: 66666 Maintainer: Simon @ newdivide7037#gmail.com Provides: mysoftware Description: just for test
Package:软件包的名称(mysoftware)
Version:版本号(2021-08-06)
Section:申明软件的类别(常见的有’utils’,‘net’,‘mail’,‘text’,'x11’等)
Priority:软件对于系统的重要程度(如’required’,‘standard’,‘optional’,‘extra’)
Essential:申明是否是系统最基本的软件包(yse或者no)
Architecture:软件包结构(如’i386’,‘amd64’,‘m68k’,‘sparc’,‘alpha’,‘powerpc’)
Source:软件包的源代码名称
Depends:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开
Pre-Depends:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求
Recommends:表明推荐的安装的其他软件包和库文件
Suggests:建议安装的其他软件包和库文件
Priority:声明这个包的优先级(大部分的时候使用optional(可选的))
Eseential:指该软件包是否是必须的(大部分的时候不是)
Maintainer:制作此打包文件的作者(zh[邮箱])
Conflicts:表示跟这个程序冲突的软件
Replaces:表明哪些软件包将被这个程序取代
Description:针对此软件的描述
Installed-Size: 安装后的大小
-
postinst.sh
处理安装后的事件的脚本文件,比如创建快捷方式,删除备份文件等操作,按需添加
-
prerm.sh
处理删除前操作的脚本文件,按需添加
-
preinst.sh
一个脚本文件,用于备份(以便安装失败时回滚)
-
postrm.sh
处理删除后操作的脚本文件,按需添加
-
-
opt文件夹
- 将可执行程序lzj.jar置于opt目录下(xxx.desktop文件配置Exec执行命令)
-
usr文件夹
- 在usr目录下建立share目录,在share目录下建立applications与icons目录
-
命令行输入
dpkg -b . xxx.deb
或者
dpkg -b . .
fakeroot dpkg - b . .
完成打包。
-
命令行输入,其中/xxx/指的是安装路径
sudo dpkg -x xxx.deb /xxx/
完成解包,密码默认123456。
dpkg相关命令
dpkg -b xxx1 xxx2.deb 第一个参数为将要打包的目录名,第二个参数为生成包的名称
dpkg -i xxx.deb 安装deb包
dpkg -r xxxx(包名) 卸载deb包
dpkg -s xxxx(包名) 查看deb包是否安装
dpkg -c xxx.deb 查看deb包文件内容
dpkg --info xxx.deb 查看当前目录某个deb包的信息
dpkg -X xxxx.deb xxx(目录名) 解压deb包中所要安装的文件(解压到后面的目录下)
dpkg -e xxx.deb xxx/DEBIAN 解压deb包中DEBIAN目录下的文件(至少包含control文件)
sudo apt-get install ./xxx.deb 先安装依赖包,再安装deb包(注意,在包名前必须要指定相对路径或者绝对路径)