输入标题apt一键下载所有依赖的包

输入标题apt一键下载所有依赖的包


2024年4月15日发(作者:)

输入标题apt一键下载所有依赖的包

apt一键下载所有依赖的包

无外网的局域网安装软件一个烦人的事件就是明明安装包下好了,

但有时候就是安装不上,因为缺少相应依赖的包。

那么如何将一个软件依赖的包、库之类的下载下来呢。

这里就用到apt的相关功能。

方法

首先,找包。找到依赖的包用apt-cache depends packname来

获取。

其次,下载。用apt-get install dependpackname –reinstall -d

来下载所依赖的包。 -d是表示只下载。

再次,批量安装。用shell命令组合来一键下载所有所依赖的包。

#有些包名中有<>符号,用tr将其删除

sudo apt-get install --reinstall -d `apt-cache depends

packname | grep depends | 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 Depends |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

有没有感觉挺方便的:)

————————————————

版权声明:本文为CSDN博主「WarmSword」的原创文章,遵

循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

/junbujianwpl/article/details/52811153


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713140796a2190916.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信