方法

首先,找包。找到依赖的包用apt-cache depends packname来获取。
其次,下载。用apt-get install dependpackname –reinstall -d来下载所依赖的包。 -d是表示只下载。
再次,批量安装。用shell命令组合来一键下载所有所依赖的包。

#有些包名中有<>符号,用tr将其删除
sudo apt-get install --reinstall -d `apt-cache depends packname | grep "依赖" | cut -d: -f2 |tr -d "<>"`

注意上面命令中反引号。 即 ` 。

示例

比如要找到fcitx所依赖的包。


 
这里写图片描述

apt-cache depends 会列出3类包。如果只想安装Depends的,用grep过滤下。如果想提取出包的名字,用cut做一个分割。

剩下的就是调用下载相应包的指令了。
是不是感觉很简单。
:)


进阶,下载所依赖的包所依赖的包。。。

比如A依赖B,B又依赖C,那如何递归呢。此时就需要一个脚本文件,用函数来实现了。
递归3次下载所依赖包的脚本如下:

#!/bin/bash

logfile=/home/perrin/Desktop/log
ret=""
function getDepends()
{
   echo "fileName is" $1>>$logfile
   # use tr to del < >
   ret=`apt-cache depends $1|grep "依赖" |cut -d: -f2 |tr -d "<>"`
   echo $ret|tee  -a $logfile
}
# 需要获取其所依赖包的包
libs="gnome-shell"                  # 或者用$1,从命令行输入库名字

# 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 install $added --reinstall -d -y
    done

    libs=$newlist
done


作者:夜游上河园
链接:https://www.jianshu.com/p/434a50c6c0ed
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on 2021-03-10 22:35  天外来客I  阅读(1274)  评论(0编辑  收藏  举报