zoukankan      html  css  js  c++  java
  • Linux系统bin文件打包方法

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

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

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

    一、 编写shell脚本;

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

    1、 使用sed命令

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

    2、 使用tail命令

    tail +$lines $0 >xxx.tgz

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

    好在第二种方法可以;

    下面是我的install.sh文件

    #!/bin/sh
    lines=12
    temptar=/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

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

    新建一个目录,把运行需要的所有文件拷贝进去,然后使用tar命令进行打包:

    tar -czvf qoe.tgz qoe/ 

    三、使用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

  • 相关阅读:
    JQuery常用函数方法全集
    从零开始学习jQuery (三) 管理jQuery包装集
    Jquery选择器总结
    oracle常用函数总结
    普通Java类获取Spring的Bean的方法
    AtCoder Beginner Contest 173 A
    HDU 5974 A Simple Math Problem
    Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math
    Codeforces Round #655 (Div. 2) A. Omkar and Completion
    SWPU信息学院团体程序设计竞赛题解
  • 原文地址:https://www.cnblogs.com/slz-coder150315/p/9415463.html
Copyright © 2011-2022 走看看