Linux安装包制作

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 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
目录
相关文章
|
5月前
|
Kubernetes Linux API
Linux导出已经安装好的RPM安装包
no matches for kind “Ingress“ in version “networking.k8s.io/v1“
63 1
|
Linux
Linux制作deb格式安装包教程
Linux制作deb格式安装包教程
754 0
|
8天前
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
|
5月前
|
Linux
Linux导出已经安装好的RPM安装包
Linux导出已经安装好的RPM安装包
603 1
|
5月前
|
分布式计算 关系型数据库 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驱动包资源)
200 1
|
2月前
|
Linux Python
解决Linux服务器中pip安装包后,能使用pip show packageName 却不能import
本文讨论了在Linux服务器中使用pip安装Python包后,通过pip show命令能查看包信息但无法import的问题,并提供了两种解决方法:一是解决因用户权限不一致导致的问题,二是解决因Python环境版本不匹配导致的问题。
36 0
|
4月前
|
前端开发 Linux Docker
Linux - 记录问题:怎么通过安装包的方式安装gRPC
Linux - 记录问题:怎么通过安装包的方式安装gRPC
36 1
|
5月前
|
Ubuntu 应用服务中间件 Linux
Linux下制作Nginx绿色免安装包
linux下安装nginx比较繁琐,遇到内网部署环境更是麻烦,所以研究了下nginx绿色免安装版的部署包制作,开箱即用,特此记录分享,一下操作在centos8环境下安装,如果需要其他内核系统的安装(Debian/Ubuntu等),请在对应环境虚拟机下安装制作
92 0
|
5月前
|
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资源)
113 1
|
5月前
|
安全 Linux 网络安全
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
99 2
下一篇
无影云桌面