Files
CmiiDeploy/999-部署模板/nfs-offline/nfs-offline-packager.sh
zeaslity 437acbeb63 add
2024-10-30 16:30:51 +08:00

213 lines
5.4 KiB
Bash

#!/usr/bin/env bash
# env
LinuxReleaseVersion=""
CMD_INSTALL=""
CMD_UPDATE=""
CMD_REMOVE=""
CPU_ARCH="unknown"
OFFLINE_PACKAGE_NAME_SUFFIX=""
# env
####### 获取系统版本及64位或32位信息
check_sys() {
## 判定Linux的发行版本
if [ -f /etc/redhat-release ]; then
LinuxReleaseVersion="centos"
elif cat /etc/issue | grep -Eqi "debian"; then
LinuxReleaseVersion="debian"
elif cat /etc/issue | grep -Eqi "ubuntu"; then
LinuxReleaseVersion="ubuntu"
elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then
LinuxReleaseVersion="centos"
elif cat /proc/version | grep -Eqi "debian"; then
LinuxReleaseVersion="debian"
elif cat /proc/version | grep -Eqi "ubuntu"; then
LinuxReleaseVersion="ubuntu"
elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then
LinuxReleaseVersion="centos"
elif cat /etc/os-release | grep -Eqi "openEuler"; then
LinuxReleaseVersion="euler"
else
LinuxReleaseVersion=""
fi
cpu_arch=$(uname -m)
if [[ $cpu_arch == "x86_64" || $cpu_arch == "amd64" ]]; then
CPU_ARCH="amd64"
elif [[ $cpu_arch == "aarch64" || $cpu_arch == "arm64" ]]; then
CPU_ARCH="arm64"
fi
echo "CPU architecture is $CPU_ARCH"
# 判断系统的包管理工具 apt, yum, or zypper
getPackageManageTool() {
if [[ -n $(command -v apt-get) ]]; then
CMD_INSTALL="apt-get -y -qq --allow-downgrades install"
CMD_UPDATE="apt-get -qq update"
CMD_REMOVE="apt-get -y remove"
elif [[ -n $(command -v yum) ]]; then
CMD_INSTALL="yum -y -q install"
CMD_UPDATE="yum -q makecache"
CMD_REMOVE="yum -y remove"
elif [[ -n $(command -v zypper) ]]; then
CMD_INSTALL="zypper -y install"
CMD_UPDATE="zypper ref"
CMD_REMOVE="zypper -y remove"
else
return 1
fi
return 0
}
# 检查系统包管理方式,更新包
getPackageManageTool
if [[ $? -eq 1 ]]; then
echo "系统的包管理不是 APT or YUM, 请手动安装所需要的软件."
return 1
fi
### 更新程序引索
if [[ $SOFTWARE_UPDATED -eq 0 ]]; then
echo "正在更新软件包管理..."
$CMD_UPDATE
SOFTWARE_UPDATED=1
fi
return 0
}
build_for_package_name_suffix(){
# 从输出中提取PRETTY_NAME字段
pretty_name=$(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')
# 将提取的字段转换为 Ubuntu-20-04-06 的格式
formatted_name=$(echo $pretty_name | sed 's/ /-/g')
OFFLINE_PACKAGE_NAME_SUFFIX="$CPU_ARCH-$formatted_name"
}
package_nfs_client(){
echo ""
echo "[package_nfs_client] - start !"
echo ""
if [ "$LinuxReleaseVersion" = "ubuntu" ]; then
echo ""
$CMD_INSTALL "apt-rdepends"
$CMD_INSTALL "debconf"
rm -rf /tmp/nfs-client/
mkdir -p /tmp/nfs-client/
cd /tmp/nfs-client/
echo "[package_nfs_client] - change to folder /tmp/nfs-client/"
echo "[package_nfs_client] - start to download all needed nfs-client offline packages !"
apt-get download $(apt-rdepends nfs-common| grep -v "^ "| sed 's/debconf-2.0/debconf/g')
echo ""
echo "[package_nfs_client] - ls nfs client offline packages !"
ls /tmp/nfs-client/
echo ""
echo ""
rm -rf /tmp/nfs-client/nfs-client-$CPU_ARCH-$formatted_name.tar.gz
tar -czvf nfs-client-"$OFFLINE_PACKAGE_NAME_SUFFIX" /tmp/nfs-client/*
mv nfs-client-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz /root/
fi
}
package_nfs_server(){
echo ""
echo "[package_nfs_server] - start !"
echo ""
if [ "$LinuxReleaseVersion" = "ubuntu" ]; then
echo ""
$CMD_INSTALL "apt-rdepends"
$CMD_INSTALL "debconf"
rm -rf /tmp/nfs-server/
mkdir -p /tmp/nfs-server/
cd /tmp/nfs-server/
echo "[package_nfs_server] - change to folder /tmp/nfs-server/"
echo "[package_nfs_server] - start to download all needed nfs-server offline packages !"
apt-get download $(apt-rdepends nfs-kernel-server | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
echo ""
echo "[package_nfs_server] - ls nfs server offline packages !"
ls /tmp/nfs-server/
echo ""
echo ""
rm -rf /tmp/nfs-server/nfs-server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz
tar -czvf nfs-server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz /tmp/nfs-server/*
mv nfs-server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz /root/
fi
}
package_chrony_server(){
echo ""
echo "[package_chrony_server] - start !"
echo ""
if [ "$LinuxReleaseVersion" = "ubuntu" ]; then
echo ""
$CMD_INSTALL "apt-rdepends"
$CMD_INSTALL "debconf"
rm -rf /tmp/chrony_server/
mkdir -p /tmp/chrony_server/
cd /tmp/chrony_server/
echo "[package_chrony_server] - change to folder /tmp/chrony_server/"
echo "[package_chrony_server] - start to download all needed chrony_server offline packages !"
apt-get download $(apt-rdepends chrony | grep -v "^ "| sed 's/debconf-2.0/debconf/g')
echo ""
echo "[package_chrony_server] - ls nfs server offline packages !"
ls /tmp/chrony_server/
echo ""
echo ""
rm -rf /tmp/chrony_server/chrony_server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz
tar -czvf chrony_server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz /tmp/chrony_server/*
mv chrony_server-"$OFFLINE_PACKAGE_NAME_SUFFIX".tar.gz /root/
fi
}
main(){
check_sys
build_for_package_name_suffix
package_nfs_server
package_nfs_client
package_chrony_server
}
main