有没有一种简单的方法来配置 apt-get 以使用可用的 LAN apt-mirror 来优化下载?

有没有一种简单的方法来配置 apt-get 以使用可用的 LAN apt-mirror 来优化下载?

我有一台笔记本电脑和几个存储库的本地副本,这些存储库位于连接到路由器的外部硬盘中。我的路由器以 Samba 共享和/或 FTP 服务器的形式提供对这些文件的访问(使用凭据)。

我想配置 apt-get 来在这些存储库可用时检查它们,并从中下载更新,以尽可能加快该过程。

更明确地说:当我的笔记本电脑连接到 WiFi 时,我希望 apt-get 检查互联网上的常规存储库和本地存储库。如果外部存储库中的文件比本地镜像中的文件新,或者镜像不可用,apt-get 应该从互联网上下载文件。

答案1

设置你自己的存储库有 4 个步骤

  1. 安装dpkg-dev
  2. 将包放在目录中
  3. 创建一个脚本来扫描包并创建一个apt-get update可以读取的 文件
  4. 添加一行sources.list指向你的存储库

安装dpkg-dev

打开终端:

sudo apt-get install dpkg-dev

目录

创建一个目录来保存您的软件包。在本例中,我们将使用/usr/local/lan-repo

sudo mkdir -p /usr/local/lan-repo

现在将所有包移动到该新目录中。

已下载的软件包通常存储在系统中的 中/var/cache/apt/archives。如果您已安装,apt-cacher则很可能会在目录中存储其他软件包apt-cacher/packages

创建名为update-lan-repo

这是一个非常简单的三行脚本:

#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

将上述内容复制并粘贴到您最喜欢的文本编辑器中,然后将其保存为update-lan-repo~/bin~表示主目录。如果~/bin不存在,则创建它。Ubuntu 会自动将该目录放入您的 PATH 中。这使其成为放置个人脚本的好地方。)

现在让我们使脚本可执行:

chmod u+x ~/bin/update-lan-repo

脚本的工作原理如下:

dpkg-scanpackages查看 中的所有软件包lan-repo,并将输出压缩并写入文件packages.gz,该文件apt-get update可以读取(请参阅下面的参考资料,其中详细介绍了这一点)。/dev/null是一个空文件 - 也就是说 - 它是一个临时的覆盖文件,其中包含有关软件包的一些附加信息,而这些信息在我们的例子中并不是真正需要的。请参阅deb-override(5)如果你想了解更多相关信息。

我们需要将您的本地存储库添加到您的 sources.list 文件中

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

就这样你就完成了。

CD/DVD 选项

您可以将包含 .deb 文件的目录存储到 CD/DVD 中,并将其用作存储库(适合在计算机之间共享)。要将 CD 用作存储库:

只需运行命令:

sudo apt-cdrom add

使用新的存储库。

然后,每当您在 lan-repo 目录中存储新的 debian 包时,运行:

sudo update-lan-repo
sudo apt-get update

现在,您可以使用 Synaptic、aptitude 和 apt 命令来操作您的本地软件包:apt-get、、apt-cache等。当您尝试 apt-get install 时,只要能够满足任何依赖关系,它都会为您解决。

答案2

我终于设法解决了这个问题,并且效果很好,所以我想与想要实现类似目标的人分享。

我遇到的第一个问题是,我的系统支持多架构,因此镜像存储库应同时包含 i386 和 amd64 软件包(我没有镜像源),以避免下载错误。这是在/etc/apt/mirror.list就像这个例子显示的那样:

deb-i386  http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

我的基本路径该文件中定义是/mnt/apt-mirrors,然后我运行一个脚本,将连接到路由器 USB 端口的外部硬盘驱动器作为 Samba 共享安装(您可以在此处看到该脚本: 如何使用 apt-mirror 将文件保存在连接到 LAN 路由器的硬盘中

我想从局域网中的其他计算机访问镜像存储库,因此解决方案的另一部分是添加 FTP 存储库定义一开始/etc/apt/sources.list.此设置使得apt-get下载文件时首先使用 FTP 存储库,然后使用/etc/apt/sources.list.d,前提是镜像是最新的。

本地存储库定义如下:

deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

你替换的地方用户使用已授予 FTP 服务器访问权限的用户名,:密码如果需要连接,则输入密码(否则删除),局域网资源使用 LAN 中的 FTP 服务器地址(我决定编辑/etc/hosts为了避免重复硬编码的 IP 地址,我将 192.168.0.1 定义为局域网FTP服务器在此领域使用)。

相关内容