Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Linux网站汇总
  • Shell使用详解
  • 自动化运维脚本集合
  • 模拟占用磁盘内存CPU
  • Linux释放缓存
  • Linux监控进程磁盘邮件预警
  • 《Nginx教程》笔记
  • Linxu服务器文件双向同步-rsync+sersync
  • Linux文件清空的几种方法
  • Linux日志自动清理方案
  • Linux执行脚本加密
  • Linux安装包制作
    • Cat命令制作.bin安装包
      • 基础使用
      • Shell文件
      • 使用方法
      • Java程序打包为.bin安装包样例
  • Crontab详解
  • Linux上传下载百度网盘文件
  • 内网穿透
  • 内网穿透-无需公网服务器
  • 一文搞定Jenkins自动化部署程序
  • Linux配置代理请求
  • Linux监控之夜莺
  • Proxmox安装
  • Proxmox创建CentOS虚拟机
  • Proxmox创建Windows虚拟机
  • Debian系统安装OpenVPN
  • Docker快速部署OpenVPN
  • 用户登录时执行检查脚本
  • 一键配置Linux镜像源
  • RustScan端口扫描
  • 前置机、堡垒机、跳板机区别
  • Linux添加回收站功能
  • Linux系统详细信息监控-Grafana+Prometheus
  • 再见XShell:轻量又高性能的SSH工具AI加持快人一步
  • Unbuntu安装deb文件
  • Ubuntu远程连接时分辨率问题
  • Ubuntu中Clash报错
  • Linux可视化监控
  • Vim复制自动缩进问题处理
  • 无所不能的BusyBox:如何用它打造极小的Linux环境
  • 运维
Jast-zsh
2023-10-08
目录

Linux安装包制作

[toc]

# Cat命令制作.bin安装包

.bin 将Shell脚本与压缩包合并成一个文件,直接在Linux上运行安装。

# 基础使用

# Shell文件

这里命名为install.sh,可以自定义

内容如下

#!/bin/bash  
# 程序名称
name=name
# 卸载脚本名称
unshname=uninstall${name}.sh
# 程序安装路径
installpath=/opt/${name}
# 安装前先卸载旧版本软件
if [ -f "/usr/bin/$unshname" ];then
    echo "=========== 卸载旧版本软件 ============="  
    /usr/bin/$unshname
    echo "====================================="  
    echo ""  
fi

# 分离出的压缩包名称
tmpfile_name=/tmp/${name}.tgz
echo -e "\t 准备安装软件..."  
#从bin中分离出${tmpfile_name}压缩包,'1,/^exit 0$/!p'代表从一行到以exit开头以0结尾的行即整个shell脚本,!代表取反,
#所以最后分离的是出了shell脚本的部分也即压缩包 $0代表脚本本身即从bin安装包中实现分离  
sed -n -e '1,/^exit 0$/!p' $0 > ${tmpfile_name} 2>/dev/null
#将分离出的脚本解压缩到/tmp文件夹下  
tar xzf ${tmpfile_name} -C /tmp
#解压完成后删除压缩包  
rm -rf ${tmpfile_name}
#转到解压文件的文件夹/tmp下  
cd /tmp
# 安装目录不存在则创建
if [ ! -d $installpath ] ;then
        mkdir -p $installpath
fi

#安装过程完成后,删除解压后的文件目录  
rm -rf ${name}
echo -e "\t 安装完成"  
exit 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# 使用方法

  1. 创建空文件
# 创建三个文件
touch 1 2 3 
1
2
  1. 将三个文件压缩成压缩包,模拟安装包
 tar -czf name.tgz 1 2 3
1
  1. 使用cat命令合并成.bin文件
 cat install.sh name.tgz > install.bin
1
  1. 赋予执行权限
chmod +x install.bin
1
  1. 执行
> ./install.bin 
         准备安装软件...
         安装完成
1
2
3

参考文档:

https://blog.csdn.net/xuleisdjn/article/details/78337419

https://www.hudh.cn/posts/40439.html

# Java程序打包为.bin安装包样例

项目结构

image-20230406133246538

文件 说明
bigdata-monitor-install.sh 安装服务脚本
start-bigdata-monitor 启动服务脚本
mvn-package.sh 项目打包,生成安装.bin文件

bigdata-monitor-install.sh文件内容

#!/bin/bash
# 程序名称
name=bigdata-monitor
# 卸载脚本名称
install_mark=/usr/bin/.${name}.ok
# 程序安装路径
installpath=/opt/${name}
# 启动脚本名称
start_script_name=start-bigdata-monitor
# 安装前先卸载旧版本软件
if [ -f "$install_mark" ];then
    echo "=========== 卸载旧版本软件 ============="
    # 删除启动脚本
    echo -e "\t 删除启动脚本"
    rm -f /usr/bin/${start_script_name}
    # 删除已安装标记文件
    echo -e "\t 删除已安装标记文件"
    rm -f $install_mark
    # 删除已安装程序目录
    echo -e "\t 删除已安装程序目录"
    rm -rf ${installpath}
    echo "====================================="
fi

# 分离出的压缩包名称
tmpfile_name=/tmp/${name}.tgz
echo -e "\t 准备安装软件..."
#从bin中分离出${tmpfile_name}压缩包,'1,/^exit 0$/!p'代表从一行到以exit开头以0结尾的行即整个shell脚本,!代表取反,
#所以最后分离的是出了shell脚本的部分也即压缩包 $0代表脚本本身即从bin安装包中实现分离
sed -n -e '1,/^exit 0$/!p' $0 > ${tmpfile_name} 2>/dev/null
#将分离出的脚本解压缩到/tmp文件夹下
tar xzf ${tmpfile_name} -C /tmp
#解压完成后删除压缩包
rm -rf ${tmpfile_name}
#转到解压文件的文件夹/tmp下
cd /tmp
# 安装目录不存在则创建
if [ ! -d $installpath ] ;then
        mkdir -p $installpath
fi
# 配置程序安装步骤
cp -r /tmp/${name}/* ${installpath}
echo -e "\t 程序已安装完成"
# 启动脚本复制到bin目录
cp /tmp/${name}/${start_script_name} /usr/bin
rm -f $installpath/${start_script_name}
echo -e "\t 安装程序启动脚本已安装完成"
# 赋予执行权限
chmod +x /usr/bin/${start_script_name}
echo -e "\t 安装程序权限设置完成"

# 安装过程完成后,删除解压后的文件目录
rm -rf /tmp/${name}
echo -e "\t 生成已安装标记"
touch ${install_mark}
echo -e "\t 安装完成"

exit 0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

start-bigdata-monitor

#!/bin/bash

cd /opt/bigdata-monitor

nohup java -jar bigdata-monitor.jar &

1
2
3
4
5
6

mvn-package.sh

source /etc/profile

script_dir_name=bigdata-monitor

cd ..
pwd
mvn package -DskipTests=true
cd bin
if [ -d "target" ];then
    echo "=========== 删除历史打包 ============="
    rm -rf target/*
    echo "====================================="
fi
if [ ! -d "target/${script_dir_name}" ] ;then
        mkdir -p "target/${script_dir_name}"
fi
# 复制jar包到打包目录
cp ../bigdata-monitor-admin/target/bigdata-monitor-admin.jar target/${script_dir_name}/bigdata-monitor.jar

cp bigdata-monitor/start-bigdata-monitor target/${script_dir_name}

pwd
# 复制启动脚本到打包目录
cp bigdata-monitor/bigdata-monitor-install.sh target/

cd target

# 打压缩包
tar -czf bigdata-monitor.tgz ${script_dir_name}


cat bigdata-monitor-install.sh bigdata-monitor.tgz > install.bin

rm -rf ${script_dir_name}
rm -f bigdata-monitor-install.sh
rm -f bigdata-monitor.tgz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
上次更新: 2023/10/08, 09:37:38
Linux执行脚本加密
Crontab详解

← Linux执行脚本加密 Crontab详解→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式