我不完全理解 wiki AptGet/Offline

我不完全理解 wiki AptGet/Offline

当我关注 wiki 页面 AptGet/Offline(许多帖子都引用了该页面)时,我从 ubuntu 存档中下载了相当多的东西,例如从 16.04

http://archive.ubuntu.com/ubuntu/dists/xenial/    

然而,完整下载的文件大小出奇地小,只有几 MB,而不是我预期的几 GB。我点击了该部分的内容,没有发现任何真正巨大的文件。

我可能只是看不清楚这个显而易见的东西,但是人们需要的所有 .deb 文件在哪里呢?

答案1

注意:实际答案在评论中穆鲁

在我看来,我看到的关于 Ubuntu 存储库的 wiki 描述有点误导。我无法在那里编辑,所以我只是在这个答案中概述了我所学到的东西。

我指的是页面“AptGet/离线/存储库”“什么是存储库?”

我现在明白了 Ubuntu 存储库有两个独立的部分

  1. 有关软件的元数据集合,相当小(几 MB)
  2. 软件本身相当大(超过 100GByte)

有一个文件服务器http://archive.ubuntu.com. 它有以下子目录

 http://archive.ubuntu.com/ubuntu
  dists/                [here is the meta data]
  pool/                 [here is the software binaries/sources]
  indicies/             [don't know]    
  project/              [don't know]

在发布这个问题时,我只知道 1)。大多数帖子直接链接到 dists/ 部分,所以我从未进入父文件夹并发现 2)。该部分在 wiki 页面中没有真正描述。

dists/ 部分包含有关软件包的元数据。它按发行版(xenial、yakkety 等)排序。有标准软件包、安全更新、标准更新、建议版本和反向移植软件包。所有这些将软件包分为主、受限、宇宙和多元宇宙,如帖子中详细说明的那样。其中一个子文件夹名为“源”,但它不包含实际来源。我所说的元数据是指 ubuntu 软件包管理器工作所需的所有信息。它包括向用户显示的文本、软件包包含哪些模块的信息、需要哪些版本、它具有哪些其他库依赖项等。它主要是列表。虽然有很多软件包,但完整下载相当小,例如 16.04 LTS“xenial”大约 100MB。这里没有任何实际软件。

实际的软件位于另一个分支:pool/。它的结构也包括 main、restricted、universe 和 multiverse。下面是按字母顺序排列的文件夹,每个软件包都有一个文件夹,其中包含各种文件,通常包括这些软件包所包含的不同版本。它没有标准、安全更新、更新、建议或反向移植等区域,因为似乎任何东西都放在这些文件夹中。

我(还)不知道指标和项目的部分。

概括

因此,为了使任何内容离线工作,需要 dists/ 文件夹的内容和 pool/ 文件夹的内容(或其部分)。

Apt 离线工具

不幸的是,维基页面“AptGet/Offline/Repository”没有告诉你还有比 apt-medium 更方便的命令行工具。它旨在创建一个完整的离线存储库。它被称为“apt-mirror”。不幸的是,它不是默认安装的。如果你只是安装并运行它而不做任何更改,它将下载并安装一个存储库到 /var/spool/apt-mirror,其中包含来自 dist/ 和 pool/ 的数据(可能还有其他位(?))。请注意,我们谈论的是 16.04 大约 100GB 的数据,可能需要数小时/数天/一周才能下载,具体取决于你的连接。它会告诉你要下载多少数据,所以你可以用 Ctrl-C 停止它并从配置文件中注释掉一些不需要的部分,然后重新开始。第一次我没有注意大小,第二天早上我很惊讶,它似乎什么也没做,直到我发现我的磁盘已满。我认为它没有填满到使整个系统停滞的程度,这很好,我可以删除所有内容并重新开始。完成后,可以将其复制并放在离线计算机或网络共享上。

这里有一个关于如何做到这一点的非常好的描述:

https://odzangba.wordpress.com/2007/12/24/use-apt-mirror-to-create-your-own-ubuntu-mirror/

编辑

我仍然在让它工作时遇到了很多麻烦(最终它确实工作了)。我不确定根本原因,但我知道许多人都在为离线问题而苦苦挣扎,所以我将在此过程中记录下我的注意事项。不过,并非所有的注意事项都是必要的

  • 复制离线存储库可能会引起麻烦,它可能会更改所有者和权限。当我将复制的文件夹递归设置为 chmod 777 时,事情突然发生了变化。结果是 usbdrive 上的所有文件和 apt-mirror 文件夹都具有以下权限

     drwxrwxrwx root root 123 Feb 15 00:00 apt-mirror
    
  • 检查离线存储库是否工作的最佳方法是将在线计算机的 /etc/apt/sources.list 文件设置为仍挂载的 usb 驱动器,然后在终端窗口中启动 aptitude。xterm 更简单,因为您当时可以使用鼠标。当您打开 aptitude 时,它​​尚未更新存储库,因此它显示在线计算机的当前状态。在文件菜单中选择更新,看看会发生什么。如果它询问 root,请选择确定。如果更新输出中出现单个警告或错误消息,则更新可能会失败(无论消息可能如何)。您可以立即验证这一点,因为 aptitude 将显示极少的未安装软件包(我的 usb 驱动器上有 5 或 10 个,大小为 80GB)。然后您就知道需要修复某些东西了。

  • 永远不要像 apt 那样使用 sudo apt-mirror 启动它,而是使用 apt mirror

  • Apt-mirror 可以下载更新,也就是说,您可以在一周后再次连接 USB,然后重新运行它以仅捕获更改的文件。确保安装点位于同一文件夹中,例如 /media/usbdrive,否则它将再次下载所有内容。最好手动安装

    sudo fdisk -l // 找出设备 ID,例如 sdc1 sudo mount /dev/sdc1 /media/usbdrive

    sudo umount /dev/sdc1 //完成后

  • 我使用的 /etc/apt/mirror-list 文件如下所示:

    # make sure that path never changes, also for updates
    set base_path    /media/usbdrive/apt-mirror
    set nthreads     20
    set _tilde 0
    # download both amd64 and i386. Even on 64bit computers,e.g.
    

    deb-amd64http://archive.ubuntu.com/ubuntuxenial 主受限宇宙多元宇宙 deb-i386 http://archive.ubuntu.com/ubuntuxenial 主要受限宇宙多元宇宙清洁http://archive.ubuntu.com/ubunutu

希望这对 CatMan 有用

相关内容