213 lines
5.4 KiB
Bash
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 |