当前位置: 首页 > news >正文

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

【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 

的结果吧。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【论文阅读】:Mamba YOLO SSMs-Based YOLO For Object Detection
  • 学懂C++(四十四):C++ 自定义内存管理的深入解析:内存池与自定义分配器
  • milvus使用milvus migration工具迁移数据
  • Kubernetes 上安装 Jenkins
  • 滑动窗口系列(定长滑动窗口长度)8/31
  • CRMEB商城系统功能解读——渠道码
  • Ant Design vue 多层for循环form表单自定义校验
  • css中的伪类
  • 打卡第58天------图论
  • Stable Diffusion 必备插件推荐,菜鸟轻松成高手!(附插件整合包)
  • 基于爬山法MPPT和PI的直驱式永磁同步风力发电机控制系统simulink建模与仿真
  • string的模拟实现与深浅拷贝
  • 嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)
  • Trying to update a textarea with string from an OpenAI request
  • 使用Python+docx+openpyxl将Word表格转换为Excel表格
  • Google 是如何开发 Web 框架的
  • android 一些 utils
  • EOS是什么
  • git 常用命令
  • Less 日常用法
  • mysql常用命令汇总
  • v-if和v-for连用出现的问题
  • Vue 2.3、2.4 知识点小结
  • 大型网站性能监测、分析与优化常见问题QA
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​字​节​一​面​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • $.each()与$(selector).each()
  • (07)Hive——窗口函数详解
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (二十三)Flask之高频面试点
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (六)激光线扫描-三维重建
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (学习总结16)C++模版2
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)setTimeout 和 setInterval 的区别
  • (转)大道至简,职场上做人做事做管理
  • (转载)hibernate缓存
  • ./configure,make,make install的作用(转)
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net 生成二级域名
  • .net打印*三角形
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @font-face 用字体画图标
  • @javax.ws.rs Webservice注解
  • @Value获取值和@ConfigurationProperties获取值用法及比较(springboot)
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [1525]字符统计2 (哈希)SDUT
  • [22]. 括号生成
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • [Apio2012]dispatching 左偏树
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型