说明 脚本自动递归下载给定包列表deb包及其依赖包,深度3层; 若指定参数则下载给定的包及其依赖包(目前仅支持指定1个包,不支持多包); 若无参数

说明

  • 脚本自动递归下载给定包列表deb包及其依赖包,深度3层;
  • 若指定参数则下载给定的包及其依赖包(目前仅支持指定1个包,不支持多包);
  • 若无参数则默认下载列表中给出的包机器依赖包;
  • 下载到当前目录;
  • 请提前配置好源。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash

logfile=./auto_deps_log
# 需要获取其所依赖包的包
# 或者用$1,从命令行输入库名字
libs="gdisk logrotate pciutils systemd lvm2 udev logrotate libfuse2 iptables libnetfilter-conntrack3 libnfnetlink0 libusb-1.0-0 cpio xfsprogs libprotobuf-c1 liblmdb0"
ret=""

function getDepends()
{
echo "fileName is" $1>>$logfile
# use tr to del < >
ret=`apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d "<>"`
echo $ret|tee -a $logfile
}

if [ ! -n "$*" ] ;then
echo "you have not input a word! get list: $libs"
else
echo "the list you input is $*"
libs=$1
fi
echo "get $libs"

# download libs dependen. deep in 3
i=0
while [ $i -lt 3 ] ;
do
let i++
echo $i
# download libs
newlist=" "
for j in $libs
do
added="$(getDepends $j)"
newlist="$newlist $added"
apt-get download $added $j
done

libs=$newlist
done

参考文献