Linux安装包制作

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: Linux安装包制作

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

参考文档:

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

start-bigdata-monitor

#!/bin/bash

cd /opt/bigdata-monitor

nohup java -jar bigdata-monitor.jar &

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月前
|
Kubernetes Linux API
Linux导出已经安装好的RPM安装包
no matches for kind “Ingress“ in version “networking.k8s.io/v1“
23 1
|
Linux
Linux制作deb格式安装包教程
Linux制作deb格式安装包教程
564 0
|
1月前
|
Linux
Linux导出已经安装好的RPM安装包
Linux导出已经安装好的RPM安装包
44 1
|
2月前
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
108 1
|
3月前
|
Java Linux 开发工具
Azkaban【部署 01】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
【2月更文挑战第4天】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
36 1
|
5月前
|
安全 Linux 网络安全
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
52 2
|
消息中间件 运维 NoSQL
Linux一键安装包,环境安装不用愁!!!
Linux一键安装包,环境安装不用愁!!!
|
关系型数据库 MySQL Linux
Linux安装Mysql(图文解说详细版,安装包tar包版)
Linux安装Mysql(图文解说详细版,安装包tar包版)
Linux安装Mysql(图文解说详细版,安装包tar包版)
|
Linux
linux qt安装包下载链接
linux qt安装包下载链接
159 0
|
NoSQL 安全 Linux
linux安装redis(保姆级-安装包方式安装-版本6.2.7-解决aof持久化问题)
linux安装redis(保姆级-安装包方式安装-版本6.2.7-解决aof持久化问题)
190 0
linux安装redis(保姆级-安装包方式安装-版本6.2.7-解决aof持久化问题)