一 Linux安装文件
Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类,
第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件;
第二:对应的有管理工具的deb,rpm等,通常的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;
第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令行运行bin安装文件时,其实就是bin里面的sh来解压bin中的zip或安装rpm的过程;
.bin安装文件可以认为是sh文件和zip或rpm等其他安装文件的打包形式。如下图:
1、bin文件制作
shell脚本:
#!/bin/bash
path=`pwd`
#判断字符串是否相等
if [ "$path" = "/" ];then
path=''
fi
#提取压缩包
sed -n '1,/^exit 0$/!p' $0 >$path/install.tar.gz
#解压出安装包
tar -zxvf $path/install.tar.gz
echo "finish"
exit 0
脚本很简单,关键在于sed那一行,大概意思是匹配exit 0,如果匹配到了,把它后面的打印出来。
然后将安装包打包成 install.tar.gz,如:
tar zcvf install.tar.gz postgresql-9.4.0.tar postgre9.4.sh clouddoc_v20_demo.bak pg_hba.conf postgresql postgresql.conf
最终将上述两个文件打包成bin文件,并赋予执行权限
cat test.sh install.tar.gz > install.bin
chmod u+x install.bin
执行bin文件和执行shell脚本一样,直接运行
sh install.bin
Tip:提取文件也可以使用tail来分割文件的,这个有时候可能会失败(网上很多人都说tail方法可能有各种问题,我测试没碰见)。建议使用sed方式提取文件
#lines表示shell脚本行数+1
tail -n +$lines $0 > $path/install.tar.gz