首页 > 其他分享 >随笔-开发-将安装脚本和安装文件打包成一个文件

随笔-开发-将安装脚本和安装文件打包成一个文件

时间:2023-12-23 12:11:24浏览次数:35  
标签:TMP 安装文件 INST pushgateway FILE PATH 随笔 ARCHIVE 打包

需要在服务器安装一些工具,除了安装脚本还需要安装文件,可以打包成一个文件方便管理

示例:

.
├── makefile
└── pushgateway
    ├── gtw_install.sh
    └── pushgateway-1.4.3.linux-amd64.tar.gz

makefile:

PRJ_ROOTDIR=$(shell pwd;)
UINST_FILE_NAME=pushgateway-install
PUSHGATEWAY_SRC=pushgateway-1.4.3.linux-amd64.tar.gz

$(info PRJ_ROOTDIR : ${PRJ_ROOTDIR})

all:
	# 新建output
	mkdir -p $(PRJ_ROOTDIR)/output
	# 拷贝文件
	cp -af -r $(PRJ_ROOTDIR)/pushgateway/* $(PRJ_ROOTDIR)/output/
	# 压缩成一个可执行文件
	cd $(PRJ_ROOTDIR)/output/ && cp gtw_install.sh $(UINST_FILE_NAME) && cat $(PUSHGATEWAY_SRC) >> $(UINST_FILE_NAME) && rm -rf gtw_install.sh $(PUSHGATEWAY_SRC)
	echo "usage: 拷贝可执行文件到MCU, 执行./$(UINST_FILE_NAME) "

安装脚本(key:先把安装文件提取出来):

#!/bin/bash

# 安装包安装参数
EXEC_FILE_PATH=$(dirname $(realpath $0))
EXEC_FILE_NAME=$(basename $0)
USER_CONF_FILE=$1

#提取文件参数
ENDLINE=$(sed -n '/'"^#ENDTAG"'/=' $EXEC_FILE_NAME)
ENDLINE=`expr ${ENDLINE} + 1`

#压缩文件名
ARCHIVE_FILE=pushgtw.tgz
#解压ARCHIVE_FILE后的文件夹名
ARCHIVE_DIR=pushgateway-1.4.3.linux-amd64

# 安装路径
INST_TMP_PATH="/home/app/pushgtw"

function aio_log () {
    local lvl="DEBUG"
    local c="31"
    local date=`date +%F\ %T.%N`

    case "$1" in
        "err"|"error"|0)
            lvl="ERR"
            c="31m"
            ;;
        "info"|1)
            lvl="INFO"
            c="32m"
            ;;
        "syslog")
            lvl="INFO"
            c="32m"
            ;;
        "debug"|3|*)
            lvl="DEBUG"
            c="33m"
            ;;
    esac

    # echo -e "\033[$c$date [$lvl] -- $2\033[0m"
    echo "$date [$lvl] -- $2"
}


function install_prepare() {
	#创建目录
	if [ ! -d ${INST_TMP_PATH} ]; then
		mkdir -p ${INST_TMP_PATH}
	fi

	#提取压缩文件
	tail -n +${ENDLINE} ${EXEC_FILE_PATH}/${EXEC_FILE_NAME} > ${INST_TMP_PATH}/${ARCHIVE_FILE}
	if [ ! -s "${INST_TMP_PATH}/${ARCHIVE_FILE}" ]; then
		aio_log error "dump ${ARCHIVE_FILE} filed! Terminating..."
		exit 1
	fi

	#解压压缩文件
	aio_log debug "extract install package to ${INST_TMP_PATH}/..."

	#先清除之前安装的旧文件
	# aio_log debug "clear previous install file($INST_TMP_PATH)..."
	# [ -d "${DOCKER_COMPOSE_REAL_DIR}.bak" ] && rm -rf ${DOCKER_COMPOSE_REAL_DIR}.bak

	aio_log debug "tar -zxvf ${ARCHIVE_FILE} -C ${INST_TMP_PATH}/..."
	tar -zxvf ${INST_TMP_PATH}/${ARCHIVE_FILE} -C ${INST_TMP_PATH}/
	if [ $? != 0 ]; then
		aio_log error "extract ${ARCHIVE_FILE} filed! Terminating..."
		exit 1
	fi
}

function install_pushgtw()
{
    [[ ! -e "${INST_TMP_PATH}/${ARCHIVE_DIR}/pushgateway" ]] && {
        aio_log error "pushgateway binary file no exist"
        exit 1
    }

    cp ${INST_TMP_PATH}/${ARCHIVE_DIR}/pushgateway /usr/local/bin/
    chmod +x /usr/local/bin/pushgateway

    cat <<- _EOF_ > /etc/systemd/system/pushgateway.service
	[Unit]
	Description=Pushgateway
	Wants=network-online.target
	After=network-online.target

	[Service]
	Type=simple
	ExecStart=/usr/local/bin/pushgateway
	Restart=always
	RestartSec=5
	StartLimitInterval=0

	[Install]
	WantedBy=multi-user.target
_EOF_

	systemctl daemon-reload
	systemctl start pushgateway
	systemctl status pushgateway
}

# 提取压缩文件并解压到INST_TMP_PATH
install_prepare

# 安装
install_pushgtw
exit 0

#ENDTAG

标签:TMP,安装文件,INST,pushgateway,FILE,PATH,随笔,ARCHIVE,打包
From: https://www.cnblogs.com/stellar-liyanbin/p/17922850.html

相关文章

  • linux tar打包压缩解压命令学习
    Linux系统中tar是最常用的打包工具,通过打包工具可以压缩/解压比如常见的压缩包格式如下:tar未压缩文件只是做了一个打包而已tar.gz使用gzip算法格式压缩的压缩包tar.bz2bz2格式压缩包tar.xzxz格式压缩参数介绍tar的参数很多列出几个比较......
  • 解决分层打包后,报Could not find or load main class org.springframework.boot.loade
    解决分层打包后,报Couldnotfindorloadmainclassorg.springframework.boot.loader.JarLauncher错误发现问题升级到springboot3.2后,之前的分层打包启动后会报一下错误Error:Couldnotfindorloadmainclassorg.springframework.boot.loader.JarLauncherCausedby:......
  • [VUE] WebPack 打包后自动修改 dist 中 package.json 版本号
    我们在开发npm包时,开发期的package.json通常并不一定是发布到npm仓库的package.json。这种情况下每次改版本号需要改两个地方,比较麻烦。我一般使用webpack进行打包,所以有了下面这个小插件。插件源码modify.version.plugin.js/**修改版本号webpack插件*/functi......
  • 如果你希望打包的Python脚本在运行时不显示命令行窗口,你可以在使用`auto-py-to-exe`进
    auto-py-to-exe是一个基于Eel和PyInstaller构建的工具,可以通过简单的UI界面将Python项目中的.py文件打包为.exe文件¹。以下是使用auto-py-to-exe的步骤:环境要求:Python环境需要大于或等于2.7¹。模块安装:在命令行中输入以下命令来安装auto-py-to-exe¹:pipinstallauto-py-to-exe或......
  • 【教程】使用ipagurd打包与混淆Cocos2d-x的Lua脚本
    【教程】使用ipagurd打包与混淆Cocos2d-x的Lua脚本文章目录摘要引言正文1.准备工作2.使用ipaguard处理Lua文件3.运行ipagurd进行混淆代码加密具体步骤测试和配置阶段IPA重签名操作步骤4.IPA重签名与发布总结 摘要本文将介绍如何使用ipagurd工具对Cocos2d-......
  • Windows环境中使用dotnet-sdk运行打包后的.NET6.0 项目WebApi程序
     去官网下载Windows平台下的SDK并安装,与开发环境对应的版本【我的程序为.NET6.0】:https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-6.0.417-windows-x64-installer在开发好的程序中,右键添加Dockerfile支持,添加后修改配置,FROMmcr.microsoft.com/d......
  • Spring Boot学习随笔- 拦截器实现和配置(HandlerInterceptor、addInterceptors)、jar包
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十三章、拦截器拦截器:Interceptor拦截中断类似于javaweb中的Filter,不过没有Filter那么强大作用SpringMVC的拦截器是一种用于在请求处理过程中进行预处理和后处理的机制。拦截器可以在请求到达控制器之前和......
  • Android安卓打包app应用程序编译shrinkResources true报错解决方案
    Hello各位同学们好,我是咕噜铁蛋!在Android开发中,当我们需要打包应用程序时,经常会遇到一些问题。其中一个常见的问题是在使用shrinkResources设置为true时出现的编译错误。这个选项是在AndroidGradle插件的build.gradle文件中设置的,用于减少最终APK文件的大小。然而,如果设置不正确,可......
  • WinForm/WPF 打包安装程序exe
     以下是关于WinForm/WPF打包安装程序exe的内容如果打包的exe文件,需要拥有管理员权限,则先配置下面的第三步,设置管理员权限(非必须) 一、安装扩展程序打包exe,需要安装:MicrosoftVisualStudioInstallerProjects2022安装的两种方式:1、手动下载文件安装,2、vs中扩展下载安装......
  • Spring Boot学习随笔- 文件上传和下载(在线打卡、附件下载、MultipartFile)
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十二章、文件上传、下载文件上传文件上传是指将文件从客户端计算机传输到服务器的过程。上传思路前端的上传页面:提交方式必须为post,enctype属性必须为multipart/form-data开发后端的Controller后端方法接收参数......