【Centos】制作一键安装包.bin 文件

ops/2024/9/25 11:03:52/

【Centos】制作一键安装包.bin 文件

  • 1. 安装 Makeself
  • 2. 制作第一个Bin文件
  • 3. 执行 .bin 文件

在某些场景下,我们希望将一系列安装的动作打包在一个 .bin文件里面,在新的环境安装部署时,直接使用 .bin 文件来无脑部署。这时候就可以将安装所需要的步骤和文件打包成一个 .bin 文件,在新服务器上执行 ./xxx.bin 来进行无脑安装。

1. 安装 Makeself

我这里使用的是 Centos 7.9 ,使用 yum 安装时发现有问题,这里直接下载源码压缩包来安装。

cd /usr/local/bin
curl -L -o master.zip https://github.com/megastep/makeself/archive/refs/heads/master.zip
unzip master.zip
cd makeself-master
cp makeself.sh /usr/local/bin/makeself
chmod +x makeself
cp makeself-header.sh /usr/local/bin/

如果是 Ubuntu 系统,则下载可以使用:wget https://github.com/megastep/makeself/archive/refs/heads/master.zip
在使用过程中,如果没有执行这个cp makeself-header.sh /usr/local/bin/,则执行 Makeself 有可能报错:Unable to open header file: /usr/local/bin/makeself-header.sh

2. 制作第一个Bin文件

在当前路径下新建一个文件夹,比如 echo_hello 里面存放了需要打包的所有文件

[root@localhost test_build_bin_do]# tree echo_hello
echo_hello
├── echo_hello.sh
└── hello.txt0 directories, 2 files
[root@localhost test_build_bin_do]#

我这里简化安装包内容,只有一个安装脚本 echo_hell.shhello.txt 文件。

其中文件内容如下:

[root@localhost echo_hello]# cat echo_hello.sh 
#!/bin/bashauthor=linmengmengmp_model=$1# Define color codes
yellow='\033[1;33m'
red='\033[1;31m'
green='\033[1;32m'
none='\033[0m'print_hello_info() {msg ok "i am echo_hello.sh content......."cat hello.txtmsg ok "success....."}# print a mesage
msg() {case $1 inwarn)local color=$yellow;;err)local color=$red;;ok)local color=$green;;esacecho -e "${color}$(date +'%T')${none} ***************** ${2}${none}"
}check_script_param() {# 检查是否传递了参数if [ -z "$1" ]; thenecho "错误: 参数为空,请提供一个参数(1 或 2)。" >&2exit 1fi# 校验参数值case "$1" in1|2)echo "参数有效: $1";;*)echo "错误: 参数错误,必须为 1 或 2。" >&2exit 1;;esac}# main
main() {check_script_param "$1"  # 传递参数给 check_script_paramif [[ "$mp_model" == 1 ]];thenmsg warn "-----------------------------------------------"msg warn "|                 安装 模式1                   |"msg warn "-----------------------------------------------"elif [[ "$mp_model" == 2 ]];thenmsg warn "-----------------------------------------------"msg warn "|                 安装 模式2                   |"msg warn "-----------------------------------------------"fiprint_hello_info}# start.
main $@
[root@localhost echo_hello]# cat hello.txt 
Hello World.......
[root@localhost echo_hello]# 

执行命令来制作 bin 安装包:makeself echo_hello/ echo_hello.bin "Echo Hello Installation" ./echo_hello.sh

  • echo_hello 为安装文件所在的目录;
  • echo_hello.bin 为将要生成的bin安装包的名称;
  • "Echo Hello Installation" 为安装包的说明;
  • ./echo_hello.sh 指定安装包中安装脚本的入口;
[root@localhost test_build_bin_do]# ll echo_hello
总用量 8
-rwxr--r--. 1 root root 1474 831 16:31 echo_hello.sh
-rw-r--r--. 1 root root   19 831 16:21 hello.txt
[root@localhost test_build_bin_do]# 
[root@localhost test_build_bin_do]# 
[root@localhost test_build_bin_do]# makeself echo_hello/ echo_hello.bin "Echo Hello Installation" ./echo_hello.sh      
Header is 758 lines longAbout to compress 8 KB of data...
Adding files to archive named "echo_hello.bin"...
./echo_hello.sh
./hello.txt
CRC: 3901664695
MD5: c42268189c6f278fe6a4db90398a1730Self-extractable archive "echo_hello.bin" successfully created.
[root@localhost test_build_bin_do]# 
[root@localhost test_build_bin_do]# ll
总用量 28
drwxr-xr-x. 2 root root    44 831 16:45 echo_hello
-rwxr-xr-x. 1 root root 20548 831 16:49 echo_hello.bin
[root@localhost test_build_bin_do]#

可以看到在当前文件夹下生成了名称为 echo_hello.bin 的安装包了。

3. 执行 .bin 文件

[root@localhost test_build_bin_do]# sh echo_hello.bin 1
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing Echo Hello Installation  100%  
参数有效: 1
16:53:59 ***************** -----------------------------------------------
16:53:59 ***************** |                 安装 模式1                   |
16:53:59 ***************** -----------------------------------------------
16:53:59 ***************** i am echo_hello.sh content.......
Hello World.......
16:53:59 ***************** success.....
[root@localhost test_build_bin_do]# 
[root@localhost test_build_bin_do]# 
[root@localhost test_build_bin_do]# sh echo_hello.bin 2
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing Echo Hello Installation  100%  
参数有效: 2
16:54:21 ***************** -----------------------------------------------
16:54:21 ***************** |                 安装 模式2                   |
16:54:21 ***************** -----------------------------------------------
16:54:21 ***************** i am echo_hello.sh content.......
Hello World.......
16:54:21 ***************** success.....
[root@localhost test_build_bin_do]#

OK,完事!

现在你应该会了 1 + 1 = 2 了,那么来计算下

6702044178269172854   * 2369375447796003236 

的结果吧。


http://www.ppmy.cn/ops/105518.html

相关文章

Java导出图片到excel

1、例如你有这样一个集合,具体结合你的业务场景 Data public class Student {/*** 姓名*/private String xh;/*** 学号*/private String xm;/*** 照片*/private byte[] zp; }2、相关代码 RequestMapping(value "/quereImgByPkid/{pkid}",method Requ…

通过组合Self-XSS + CSRF得到存储型XSS

在一次漏洞赏金挖掘中,我在更改用户名的功能点出发现了一个XSS,在修改用户名的地方添加了一个简单的XSS payload并且刷新页面: 用户设置面板 XSS证明 但是问题是这个功能配置并不是公共的,造成XSS漏洞的唯一方法是告诉受害者将其…

互联网算法备案必要性+攻略全流程详解【附件+流程】

一、算法备案的重要性 算法备案是指相关企业或组织向有关部门提交其使用的算法的相关信息,以接受监管和审查。这一举措有助于确保算法的公正性、透明性和合法性,保护用户的权益,促进数字经济的健康发展。 算法备案必要性强制性 例如&#x…

【PHP小课堂】学习PHP中的类相关函数

学习PHP中的类相关函数 今天我们学习的内容主要是和类、对象有关的一些数据函数。也就是以获取类、对象的信息属性为主的一些函数。这些函数本身比较简单,在日常的业务开发中,或者说很多框架的实现中都能见到它们的身影,但真正我们自己使用的…

火山引擎携手Keep,让线上健身更快更稳

今年年初,一部《热辣滚烫》又掀起了健身塑型风潮。作为健身领域的佼佼者,Keep 为用户提供全面的健身方案,以帮助用户实现健身目标。随着短视频运动的流行,Keep 覆盖的运动品类超过60类,同时不断尝试直播等新的内容承载…

科研绘图系列:R语言富集火山图和通路图(volcano plot pathway)

介绍 火山图是一种用于可视化基因表达差异的分析工具,它通过二维坐标系展示基因的表达量变化和统计显著性。该图谱的x轴表示基因表达的对数变化,而y轴表示其统计显著性。利用火山图,研究者能够快速识别出在不同条件下显著差异表达的基因。 随后,通过KEGG数据库提供的通路…

前端跨域问题详解与解决方案指南

什么是跨域问题 跨域问题通常是由浏览器的同源策略(Same-OriginPolicy,SOP)引起的访问问题 同源策略是浏览器的一个重要安全机制,它用于限制一个来源的文档或脚本如何能够与另一个来源的资源进行交互 同源策略的定义 同源策略要…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习进阶task2:自适应学习率,分类

1.自适应学习率 临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。很多时候训练网络,损失不再下降,不是因为到了临界点,而是可能在山谷之间不停震荡。 以下为不同学习率对训练的影响,下图中左右平缓,上下陡…