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

【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.txt

0 directories, 2 files
[root@localhost test_build_bin_do]#

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

其中文件内容如下:

[root@localhost echo_hello]# cat echo_hello.sh 
#!/bin/bash

author=linmengmeng

mp_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.txt


  msg ok "success....."

}

# print a mesage
msg() {
    case $1 in
    warn)
        local color=$yellow
        ;;
    err)
        local color=$red
        ;;
    ok)
        local color=$green
        ;;
    esac

    echo -e "${color}$(date +'%T')${none} ***************** ${2}${none}"
}

check_script_param() {

  # 检查是否传递了参数
  if [ -z "$1" ]; then
    echo "错误: 参数为空,请提供一个参数(1 或 2)。" >&2
  exit 1
  fi
  
  # 校验参数值
  case "$1" in
    1|2)
      echo "参数有效: $1"
      ;;
    *)
      echo "错误: 参数错误,必须为 1 或 2。" >&2
      exit 1
      ;;
  esac
  
}
  

# main
main() {

  check_script_param "$1"  # 传递参数给 check_script_param

  if [[ "$mp_model" == 1 ]];then
    msg warn "-----------------------------------------------"
    msg warn "|                 安装 模式1                   |"
    msg warn "-----------------------------------------------"
  elif [[ "$mp_model" == 2 ]];then
    msg warn "-----------------------------------------------"
    msg warn "|                 安装 模式2                   |"
    msg warn "-----------------------------------------------"
  fi

  print_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 long

About to compress 8 KB of data...
Adding files to archive named "echo_hello.bin"...
./echo_hello.sh
./hello.txt
CRC: 3901664695
MD5: c42268189c6f278fe6a4db90398a1730

Self-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.kler.cn/news/284639.html

相关文章:

  • 观察者模式(Observer Pattern)
  • 【鸿蒙开发从0到1-day03】
  • 什么是Java以及Java的发展历程
  • list类底层逻辑实现
  • Mysql的命令大全
  • 黑神话悟空带火了哪些三维建模技术
  • LeetCode全排列2(js简单快通法)
  • 深入探索:Windows Edge对CSS Grid布局Subgrid特性的支持与实践
  • 猫头虎分享:Python库 TensorFlow 的简介、安装、用法详解入门教程
  • 数据库中utf8mb4_unicode_520_ci较之utf8mb4_unicode_ci 具体增加了哪些特性
  • js插件-模糊搜索、自动补全下拉框
  • P2036 [COCI2008-2009 #2] PERKET
  • 关于一个早期对电子辐射的小讨论
  • Eureka
  • 图像去噪评论:从经典到最先进的方法
  • Java集合——list
  • 【数学建模学习手册】python基本入门使用
  • Altium Designer24使用
  • 开发团队如何应对突发的技术故障和危机
  • Nginx运维规范及安全配置
  • NoSQL数据库-Redis集群详解及案例实现
  • 【解决】sql中包含问号(?),导致mybatis解析错误
  • 使用 @Configuration 和 @Bean 注解替代 XML 配置文件
  • 使用pgdump、pgrestore迁移数据表到docker部署的postgis
  • Oracle数据库大小写问题注意点
  • 57基于SpringBoot+Vue+uniapp的洗衣店订单管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • Spring Boot 框架中配置文件 application.properties 当中的所有配置大全
  • React教案
  • 关于报错 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“ 的可能原因
  • 软件测试面试八股文