创建 Ubuntu 远程存储库的本地副本

创建 Ubuntu 远程存储库的本地副本

大家好。我正在尝试创建官方 Ubuntu 存储库的本地副本(12.10 或 13.10 都行)。据我所知,我可以从镜像中递归下载所有软件包(http://mirror.yandex.ru/)但是还有其他方法可以完成这项工作吗?谢谢。

答案1

复制所有内容的最简单方法是使用 rsync:

 rsync -a --bwlimit=128 rsync://archive.ubuntu.com/ubuntu /media/mirror/ubuntu

以下是有关此事的更多信息:https://help.ubuntu.com/community/Rsyncmirror

Rsync 是一个很棒的工具。

编辑以将其添加为您的主机的默认存储库:

在 Apache 服务器上发布镜像 这是最简单的部分。假设您已将 Apache 配置为遵循符号链接,您需要做的就是向您的镜像添加一个符号链接!

 cd /var/www/
 ln /media/mirror/ubuntu -s

您可以使用 Web 浏览器访问该网站来测试是否成功。转到 ubuntumirror.mydomain/ubuntu

您应该会看到一些名为“dists”、“indices”、“pool”、“project”的目录,以及一个名为“ls-lR.gz”的文件。

更新您的客户端 现在您有了自己的 Ubuntu 镜像,您需要将所有工作站和服务器指向此镜像以进行更新。此镜像适用于主镜像、宇宙镜像、多元镜像和受限镜像。

将 Ubuntu 档案库的服务器名称替换为本地镜像。现有服务器可能类似于 us.ubuntu.com

如果你的服务器名为 ubuntumirror.mydomain,那么你的 /etc/apt/sources.list 文件应该如下所示

 deb http://ubuntumirror.mydomain/ubuntu/ feisty main restricted
 deb-src http://ubuntumirror.mydomain/ubuntu/ feisty main restricted

 deb http://ubuntumirror.mydomain/ubuntu/ feisty-updates main restricted
 deb-src http://ubuntumirror.mydomain/ubuntu/ feisty-updates main restricted

您可以通过运行来测试镜像

 # apt-get update

您应该会看到一些引用您的服务器的输出,类似于:

 Get:1 http://ubuntumirror.mydomain feisty Release.gpg [191B]
 Ign http://ubuntumirror.mydomain feisty/main Translation-en_US
 Ign http://ubuntumirror.mydomain feisty/restricted Translation-en_US
 Get:2 http://ubuntumirror.mydomain feisty-updates Release.gpg [191B]
 Ign http://ubuntumirror.mydomain feisty-updates/main Translation-en_US
 Ign http://ubuntumirror.mydomain feisty-updates/restricted Translation-en_US

答案2

由于这个问题已经很老了,所以如果您还不熟悉它,请允许我向您介绍 Debmirror。它是一个用于为基于 Debian 和 Ubuntu 的系统制作部分本地镜像的实用程序。正如 debmirror 的手册页所述:“它可以镜像任何架构、发行版和部分的组合。...使用 ftp、http 或 rsync 和包池支持。”请注意,debmirror 仅复制镜像。要将该副本提供给想要安装各种软件包的不同客户端,您需要 FTP 服务器、Web 服务器等。

使用 debmirror 构建镜像的步骤在以下位置有详细描述:https://help.ubuntu.com/community/Debmirror

我将总结以下步骤以方便您参考:

  1. 假设您有一台 ubuntu 服务器,具有足够的存储空间(大约 200GB 以保证安全)、sudo 访问权限和快速的互联网连接(大约 10 MB/s,可供一夜之间下载)。首先在其上安装 debmirror 和一些其他软件包:
$ sudo apt update
$ sudo apt install debmirror gnupg xz-utils
  1. 我们将在目录的子目录中制作镜像/opt/
$ sudo mkdir /opt/UbuntuMirror
  1. mirrorbuild.sh在目录中创建文件/opt/UbuntuMirror/并将以下内容复制到该脚本中。复制完成后,保存并使脚本可执行:
#### Start of script to automate building of Ubuntu mirror #####

#!/bin/bash
export GNUPGHOME=/opt/UbuntuMirror/mirrorkeyring
arch=amd64
section=main,restricted,universe,multiverse
release=focal,focal-security,focal-updates
server=archive.ubuntu.com
inPath=/ubuntu
proto=http
outPath=/opt/UbuntuMirror/ubuntu-mirror

debmirror       -a $arch \
                --no-source \
                -s $section \
                -h $server \
                -d $release \
                -r $inPath \
                --progress \
                --method=$proto \
                $outPath

#### End of script to automate building of Ubuntu mirror ####

上述脚本将使用 http 下载/opt/UbuntuMirror/ubuntu-mirror/目录中的软件包。软件包将来自所有部分(即 main、restricted、universe 和 multiverse),但仅适用于 amd64 架构。不会下载任何源软件包。还将处理密钥。根据您的需要修改上述脚本。

  1. 我们需要一些密钥。对于较新版本的 Ubuntu,请执行以下操作:
$ sudo mkdir /opt/UbuntuMirror/mirrorkeyring
$ gpg --no-default-keyring --keyring /opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
  1. 现在更改镜像上的权限和所有权。
$ sudo chown -R root:root /opt/UbuntuMirror/mirrorkeyring
$ sudo chmod -R 571 /opt/UbuntuMirror/mirrorkeyring
  1. 执行脚本:
/opt/UbuntuMirror/mirrorbuild.sh

由于需要下载大量数据,因此此步骤将需要很长时间才能完成。

  1. 下载完成后,您的镜像就准备好了。/opt/UbuntuMirror/如果该网络上需要镜像,您还可以将整个目录传输到其他网络上的另一台服务器(没有互联网访问权限)。

现在我将向您展示如何使用 nginx 为想要安装各种软件包的客户端提供镜像。如果您想要使用其他方法来提供镜像,则可以跳过此部分。

  1. 假设你将镜像复制到另一台安装了 Nginx 的服务器(或保留在同一台服务器上)。假设镜像位于路径/usr/share/nginx/html/UbuntuMirror/

  2. 在其中创建/etc/nginx/conf.d/repo.conf并复制以下内容。保存并关闭之前,请务必输入您的服务器的 IP。

server {
        listen   80;
        autoindex on;
        server_name  <insert your server's IP here>;
        root   /usr/share/nginx/html/UbuntuMirror;
        index index.html; 
        location / {
                autoindex on;
        }
}

您可以根据需要修改上述内容。

  1. 重启 Nginx
$ sudo systemctl restart nginx

要从上述服务器使用上述镜像:

  1. 首先备份客户端的原始sources.list文件
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.orig
  1. 现在创建一个新的/etc/apt/sources.list/,内容如下:
deb http://<insert your server's IP here>/ubuntu-mirror focal main restricted universe multiverse
deb http://<insert your server's IP here>/ubuntu-mirror focal-security main restricted universe multiverse
deb http://<insert your server's IP here>/ubuntu-mirror focal-updates main restricted universe multiverse
  1. 现在你就可以使用来自服务器的镜像了:
$ sudo apt update
$ sudo apt install <some_package>

相关内容