使用 wget 手动从 ubuntu 存储库(apt)下载软件包

使用 wget 手动从 ubuntu 存储库(apt)下载软件包

我想了解 apt 如何工作以及如何从 中的镜像中获取对象sources.list。我如何手动浏览这些存储库、手动下载它们并手动构建它们(不使用源代码和 github 等...)?

答案1

当我想手动下载某个软件包的特定版本时wget,我会使用pkgs.org。该网站基本上包含所有主要存储库的索引,并提供了许多软件包详细信息。

它除了支持 Ubuntu 之外,还支持大量发行版(例如,您可以通过从 Debian 不稳定版本安装来找到较新的软件包)以及amd64arm64体系结构。

您可以在这里浏览或搜索任何包,并直接获得下载链接。

以这个例子为例适用于 Ubuntu 20.04 的 Nano

您将获得一个下载链接、依赖项列表、文件列表等。要手动下载此包,只需使用wget提供的链接即可:

wget http://archive.ubuntu.com/ubuntu/pool/main/n/nano/nano_4.8-1ubuntu1_amd64.deb

然后你就可以继续用这个包做任何你想做的事情了。

答案2

再次尝试手动下载包将会导致依赖地狱。

这就是为什么我根据个人需求创建了特殊的基于 Docker 的脚本。它位于https://github.com/N0rbert/deb-download
目前此脚本支持所有在 dockerhub 上有 docker 基础镜像的 Debian 和 Ubuntu 版本,因此支持从 12.04 LTS 开始的 Ubuntu、从 6 开始的 Debian 和从 18 开始的 Mint。脚本支持 EOL 和实际版本。

如何使用:

  1. 了解所需的 Debian衍生物名称(如 Debian 本身、Ubuntu 和 Mint),其代码名称包裹通过使用本地工具(如 )来命名apt-cache policyrmadison或者访问https://packages.debian.orghttps://packages.ubuntu.comhttp://packages.linuxmint.comhttps://repology.orghttps://pkgs.org, ETC 。

  2. 例如使用 docker.io 包在机器上安装 Docker(docker.com 的包也可以)

    sudo apt-get update
    sudo apt-get install docker.io git
    sudo usermod -a -G docker $USER
    

    并重启机器。

  3. 克隆存储库并运行脚本以获取包及其依赖项

    cd ~/Downloads
    git clone https://github.com/N0rbert/deb-download.git
    cd deb-download
    chmod +x deb-download.sh
    
    #             derivative codename package(s)
    #                    ↓     ↓        ↓
    ./deb-download.sh ubuntu bionic zenmap
    
  4. 从子文件夹中获取下载的 deb 包storage。也可以从中获取 URL 列表文件storage/urls.txt

  5. 仔细检查子文件夹的内容storage,然后尝试将主 deb 包安装到目标系统,然后逐一修复其依赖项。

    例如,可以使用以下命令在 Ubuntu 20.04 LTS 系统上安装 ZenMap:

    cd storage
    sudo apt-get install ./zenmap_7.60-1ubuntu5_all.deb ./python-gtk2_2.24.0-5.1ubuntu2_amd64.deb
    

更多详细信息请参阅自述文件.md以及deb-下载.sh脚本本身。

相关内容