apt-get下载包及所有依赖

本文介绍了一种使用apt-get的--recurse选项递归获取并下载软件包及其所有依赖的方法。通过bash脚本实现自动化处理,过滤不必要的依赖类型,并使用apt-get download命令逐个下载所需的软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路就是利用apt-getdepend选项,这会列出所给包的依赖,但是只是直接依赖,间接依赖需要递归。

可以手动递归,也可以用--recurse选项来递归。

下面采用--recurse递归,并用awk来过滤出需要的包名 。
同时,通过--no-*系列选项关闭了所有不必要的。
最后,用apt-get download XXX或者apt download XXX来依次下载每个包。

脚本

#!/bin/bash

#$1     pkg
get_all_depends()
{
        apt-cache depends --no-pre-depends --no-suggests --no-recommends \
                --no-conflicts --no-breaks --no-enhances\
                --no-replaces --recurse $1 | awk '{print $2}'| tr -d '<>' | sort --unique
}


## 遍历命令行参数,参数应为包名。
for pkg in $*
do
        all_depends=$(get_all_depends $pkg)
        echo -e "所有依赖共计"$(echo $all_depends | wc -w)"个"
        echo $all_depends
        i=0
        for depend in $all_depends
        do
                i=$((i+1))
                echo -e "\033[1;32m正在下载第$i个依赖:"$depend "\033[0m"
                apt-get download $depend
        done
done

效果

请添加图片描述

漏洞

对于一些包,比如wine,依赖中有一些在下载时会提示无候选版本可下载(似乎是架构相关),暂时不知道什么意思,以后弄懂了再改它。

在使用Debian或Ubuntu这样的基于apt-getLinux发行版中,下载依赖包通常是通过`apt-get`工具来完成的。以下是基本步骤: 1. **打开终端**:首先,你需要打开终端(Terminal)。 2. **更新列表**:确保你的列表是最新的,输入以下命令: ``` sudo apt-get update ``` 这会获取最新的软件版本信息。 3. **安装特定**:如果你想安装某个具体的,例如`nginx`,就使用以下命令: ``` sudo apt-get install nginx ``` 如果第一次安装可能会有一些依赖包需要一起安装,`apt-get`会自动处理这些依赖。 4. **安装依赖包**:如果你想要安装一揽子的依赖包,可以在`install`命令后面指定它们,比如`sudo apt-get install package1 package2 package3`。 5. **安装特定版本的**:如果需要特定版本,可以使用`apt-cache policy`查看可用版本,然后指定版本名,例如: ``` sudo apt-get install package-name=version-number ``` 6. **安装并自动保持更新**:如果你想在安装完成后自动将该软件保持为最新状态,可以加上`-y`标志(假设已接受默认权限): ``` sudo apt-get install -y nginx ``` 7. **查看安装进度**:安装过程中如果太多,可以用`-qq`(quiet)模式来跟踪进度,如 `sudo apt-get install -qq nginx`。 在每个操作之前,都可能需要输入管理员密码(`sudo`)。记得在安装前确认你正在操作的及其依赖是否符合你的需求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

barbyQAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值