离线环境下妙用bin安装包
背景
针对一些特殊的环境(不能访问外网),我们通常只能使用传入离线包到服务器上面。然而一、两个还好,但如果存在多个或者是其它的依赖包时,再一个个去执行就有些不够“懒”了。
此时,我们可以直接将这个rpm包制成一个可执行的bin文件,安装时直接执行bin文件即可。
环境
- 环境:RHEL-7.x
- 软件:MySQL-5.7.40
步骤
下载MySQL RPM包
# ls -hl
-rw-r--r-- 1 root root 29M 11月 31 09:45 mysql-community-client-5.7.40-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 312K 11月 31 09:45 mysql-community-common-5.7.40-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 2.7M 11月 31 09:45 mysql-community-libs-5.7.40-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 1.3M 11月 31 09:45 mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 179M 11月 31 09:45 mysql-community-server-5.7.40-1.el7.x86_64.rpm
打包
将下载好的rpm二进制打包成一个压缩包,以备后用。
tar acvf mysql-${VERSION}.tar.gz *.rpm
安装脚本
#!/usr/bin/env bash
TEMP_PATH=$(mktemp -d)
NAME=mysql
VERSION="5.7.40"
sed -n -e '1,/^exit 0$/!p' $0 > ${TEMP_PATH}/${NAME}-${VERSION}.tar.gz 2>/dev/null
cd ${TEMP_PATH}
tar axvf ${NAME}-${VERSION}.tar.gz
yum -y localinstall ./*.rpm
rm -rf ${TEMP_PATH}
exit 0
生成一键安装包
# cat install.sh mysql-5.7.40.tar.xz >mysql_5.7.40.bin
安装
此时,就可以把这个bin包拿去离线环境去自由安装MySQL-5.7了。
# chmod +x mysql_5.7.40.bin
# ./mysql_5.7.40.bin
相关脚本
#!/usr/bin/env bash
readonly prefix=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7
readonly version=5.7.42
readonly packages=(
mysql-community-client-${version}-1.el7.x86_64.rpm
mysql-community-common-${version}-1.el7.x86_64.rpm
mysql-community-libs-${version}-1.el7.x86_64.rpm
mysql-community-libs-compat-${version}-1.el7.x86_64.rpm
mysql-community-server-${version}-1.el7.x86_64.rpm
)
for pkg in ${packages[@]}
do
[[ -e ${pkg} ]] || wget --no-check-certificate ${prefix}/${pkg}
done
tar --use-compress-program=pigz -cf mysql-${version}.tar.gz *.rpm --remove-files
cat >install.sh<<EOF
#!/usr/bin/env bash
TEMP_PATH=\$(mktemp -d)
VERSION="$version"
sed -n -e '1,/^exit 0$/!p' \$0 > \${TEMP_PATH}/mysql-\${VERSION}.tar.gz 2>/dev/null
cd \${TEMP_PATH}
tar axvf mysql-\${VERSION}.tar.gz
yum -y localinstall ./*.rpm
rm -rf \${TEMP_PATH}
exit 0
EOF
cat install.sh mysql-${version}.tar.gz >mysql_${version}.bin
chmod +x mysql_${version}.bin
举一反三
- k8s 环境包
- 已编译安装好的二进制nginx