linux下bin安装升级包制作
linux下安装三种方式
第一:打包或压缩文件tar,zip,gz等,通常解压后便可,或者解压后运行sh文件;app
第二:对应的有管理工具的deb,rpm等,一般的这类安装文件能够经过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;工具
第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令行运行bin安装文件时,其实就是bin里面的sh来解压bin中的zip或安装rpm的过程;
bin安装文件ui
.bin安装文件能够认为是sh文件和zip或rpm等其余安装文件的打包形式。以下图

.bin安装文件的优势:spa
1)只有一个包即.bin文件;.net
2)能够直接运行在Linux上,由于他是sh(他的前半部分是sh);命令行
3)在sh中能够包含须要用户接收的协议信息,并且提示用户接收,若是用户不接收,安装退出;
.bin安装文件执行
1)超级简单: sh xxxx.bin 或直接xxxx.bin。
2)过程以下:

bin安装包制作举例
当前目录

安装脚本install.sh
#!/bin/bash
#安装路径
dir=/tmp
mkdir $dir
app=vdi
pkg=$app+.zip
# 安装前动作
# 可以写一些 协议信息提示用户接收,如果用户不接收,安装退出;
# 还有写检测环境,版本之类的,卸载旧版本软件
echo -e "\t 准备安装软件..."
#----------
# 为打印除从第一行到所在exit 0的行的所有行到${dir}/vdi.tar.gz,如果过程中有错误则输出到/dev/null
# $0 代表脚本本身即从bin安装包中实现分离
# '1,/^exit 0$/!p' 代表从一行到以exit开头以0结尾的行(即shell脚本部分)
# !代表取反,所以最后分离的是出了shell脚本的部分也即压缩包
#sed -n -e '1,/^exit 0$/!p' $0 > ${dir}/$pkg 2>/dev/null
sed -n '1,/^exit 0$/!p' $0 > ${dir}/$pkg
cd $dir
#将分离出的脚本解压缩到$dir文件夹下
unzip $pkg
# 解压后操作
echo -e "\t 安装中..."
mv $app/test_online /usr/local/bin
mv $app/test.ini /usr/local/etc
# 安装后动作
# 如解压完成后删除压缩包
rm -rf $pkg
echo -e "\t 安装完成"
exit 0
打包命令
rm -rf vdi.zip
zip -r vdi.zip ./vdi/*
cat install.sh vdi.zip > vdi.bin && chmod a+x vdi.bin
执行
上传.bin文件至目标服务器执行
./vdi.bin
参考:
http://www.javashuo.com/article/p-ssfkvckd-m.html