前言
Ubuntu离线环境部署软件时,会需要很多依赖环境,然而内网环境没有网络,无法在线安装。所以用此脚本在有网络环境的电脑上,先将软件包下载完,再拷贝到目标主机上进行安装。
使用脚本
首先,需要赋予脚本执行权限
chmod 755 down.sh
下载软件包
./down.sh <软件包名称>
例如下载:make
./down.sh make
脚本全文
将安装脚本内容拷贝,并创建脚本文件,例如:down.sh
#!/bin/bash
# 已检查依赖的软件包
checked=()
# 定义下载软件包及其依赖函数
DownPKG(){
if [ "$#" -eq 0 ]; then
exit 1
fi
pkgName=$1
# 将软件包加入已检查列表
if ! printf '%s\n' "${checked[@]}" |grep -q -F "$pkgName"; then
checked+=("$pkgName")
fi
# 查询依赖 Depends|Recommends|Suggests|依赖|推荐|建议
echo "正在查询软件包(${pkgName})的依赖"
for row in $(apt-cache depends $pkgName | grep -E 'Depends|依赖'); do
# 获取每行中的依赖字符串
text=$(echo $row | cut -d ":" -f 2 | sed -e s/'<'/''/ -e s/'>'/''/)
if [[ "$text" == "$pkgName" ]]; then
continue
fi
if [ -n "$text" ]; then
# 以字符串创建数组
list=($text)
# 查询并下载依赖的依赖
for name in ${list[@]}; do
# 忽略已检查依赖的软件包,避免循环依赖
if printf '%s\n' "${checked[@]}" |grep -q -F "$name"; then
continue
fi
echo "正在下载依赖:${name}"
apt-get download $name 2>>errors.txt
DownPKG $name
done
fi
done
}
if [ "$#" -eq 0 ]; then
echo "请填写需要下载的软件包名称"
exit 1
fi
# 创建下载目录,用于存放所有下载的包
mkdir $1 && cd $1
echo "正在下载软件包: $1"
apt-get download $1 2>>errors.txt
DownPKG $1
文章作者:DOTATONG
发布日期:2024-05-28
评论