在 Linux 系统开发与运维过程中,我们有时需要将脚本和二进制文件打包成一个可执行的 bin 包,方便程序的分发与安装。本文将详细介绍如何使用install.sh脚本实现这一功能,并完成 bin 包的合成。
1 #!/bin/sh
2 lines=10
3 tail -n +$lines $0 > /tmp/http-arm.tar.gz
4 tar zxvf /tmp/http-arm.tar.gz -C /tmp/
5 cp http-arm /usr/local/bin
6 chmod +x /usr/local/bin/http-arm
7 rm -rf /tmp/http-arm.tar.gz
8 rm -rf /tmp/http-arm
9 exit 0
- #!/bin/sh:指定了该脚本使用/bin/sh作为解释器来执行。
- lines=10:定义了一个变量lines,其值为10。这里的lines表示脚本的总行数加1,后续会用到这个变量来截取脚本后面的二进制文件部分。
- tail -n +$lines $0 > /tmp/http-arm.tar.gz:tail命令用于从文件中提取指定行之后的内容。-n +$lines表示从第$lines行开始提取,$0代表当前脚本文件本身。这行代码的作用是将脚本文件中从第10行开始的内容提取出来,并保存到/tmp/http-arm.tar.gz文件中。由于我们的 bin 包是将脚本和二进制文件拼接而成,所以这里实际是把二进制文件部分提取出来保存。
- tar zxvf /tmp/http-arm.tar.gz -C /tmp/:tar命令用于处理归档文件。zxvf参数分别表示:z通过 gzip 解压归档文件,x解压文件,v显示详细信息,f指定归档文件。-C /tmp/表示将解压后的文件放置到/tmp/目录下。这一步将刚才提取出来的http-arm.tar.gz归档文件解压到/tmp/目录。
- cp http-arm /usr/local/bin:cp命令用于复制文件。将解压后得到的http-arm二进制文件复制到/usr/local/bin目录下。
- chmod +x /usr/local/bin/http-arm:chmod命令用于修改文件权限。+x表示为文件添加可执行权限,确保复制到/usr/local/bin目录下的http-arm文件可以被执行。
- rm -rf /tmp/http-arm.tar.gz和rm -rf /tmp/http-arm:这两命令分别删除了临时目录/tmp下的http-arm.tar.gz文件和http-arm目录,清理安装过程中产生的临时文件。
- exit 0:脚本正常执行结束,返回状态码0,表示执行成功。需要注意的是,exit 0后面不要有空行。
二、bin 包合成
在完成install.sh脚本编写后,我们需要将脚本和二进制文件合并成一个可执行的 bin 包,具体命令如下:
cat install.sh http-arm.tar.gz > myinstall.bin
cat命令用于连接文件并输出,这里将install.sh脚本文件和http-arm.tar.gz二进制文件按顺序连接起来,并输出到myinstall.bin文件中,从而完成 bin 包的制作。
三、使用与注意事项
制作完成的myinstall.bin文件可以通过以下方式使用:
- 赋予myinstall.bin可执行权限:chmod +x myinstall.bin。
- 执行myinstall.bin文件:./myinstall.bin,即可按照install.sh脚本的逻辑自动完成二进制文件的安装。
注意事项:
- 确保lines变量的值设置正确,即脚本的总行数加1,否则可能无法正确提取二进制文件部分。
- 在运行myinstall.bin文件时,要确保当前用户具有足够的权限执行脚本中的操作,如复制文件到/usr/local/bin目录、删除临时文件等。
- 根据实际需求,可以对install.sh脚本中的安装路径、文件名称等进行调整。
通过以上步骤,我们可以轻松完成 Linux bin 包的制作与安装,这种方式极大地方便了程序的分发与部署。

被折叠的 条评论
为什么被折叠?



