Linux打包两个bin文件,Linux系统bin文件打包方法

最近的项目须要客户端从服务器获取到文件后自动执行;因为可执行程序中有相关配置文件,而且运行前要进行环境变量的配置,因此不能直接下载可执行程序运行,上网搜了一下解决方法,发现能够打成bin包,下载时下载这个bin文件,而后运行,先进行解包安装,而后再脚本里配置环境变量,最后运行程序;shell

bin包的制做须要三步:一、 编写shell脚本文件; 二、 对可执行程序及相关文件进行打包压缩; 三、 使用cat命令把这两个文件封装成一个bin安装包;服务器

最后生成的bin文件是一个前半部分为shell脚本文件,后半部分为二进制压缩包文件的文件;咱们直接运行这个bin文件,会首先执行前半部分的脚本,因此咱们须要再脚本里编写程序把后半部分的压缩包分解出来,并进行解压和运行;app

1、 编写shell脚本;spa

脚本文件主要功能是把cat命令打包进bin文件中的二进制压缩包分离出bin文件,并进行解压;分离操做能够用两种方法来作:sed命令和tail命令;.net

一、 使用sed命令code

sed -n -e '1,/^exit 0$/!p' $0 >xxx.tgz 2>/dev/null

二、 使用tail命令blog

tail +$lines $0 >xxx.tgz

可是使用中发现第一种方法并不能成功分离出压缩文件,不知道什么缘由,研究了一下午也没解决,对比cat封装前的压缩包和分离出来的压缩包,发现文件大小是同样的,我用diff命令对比两个文件,发现两个文件并不同,最后用vi打开两个文件对比,发现分离后的压缩包里面多了不少换行;it

好在第二种方法能够;io

下面是个人install.sh文件class

#!/bin/sh

lines=12temptar=/tmp/qoe.tgz

workpath=/tmp/qoe

tail-n +$lines $0 >${temptar}

tar xzf ${temptar}-C /tmp

rm-rf ${temptar}

cd ${workpath}

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/upt/framework/saf/rootfs/usr/lib:/opt/upt/framework/saf/rootfs/lib

./testapp -daemon

exit 0

2、对可执行程序进行打包

新建一个目录,把运行须要的全部文件拷贝进去,而后使用tar命令进行打包:

tar -czvf qoe.tgz qoe/

3、使用cat命令封装为bin

cat install.sh qoe.tgz > qoe.bin

最后完成

chmod +x qoe.bin

./qoe.bin

成功运行

参考资料:

https://www.jianshu.com/p/9f2919484317

https://blog.csdn.net/jswawawa/article/details/72318024?locationNum=3&fps=1

https://blog.csdn.net/lien0906/article/details/52689185

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值