大家好。我正在尝试创建官方 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
我将总结以下步骤以方便您参考:
- 假设您有一台 ubuntu 服务器,具有足够的存储空间(大约 200GB 以保证安全)、sudo 访问权限和快速的互联网连接(大约 10 MB/s,可供一夜之间下载)。首先在其上安装 debmirror 和一些其他软件包:
$ sudo apt update
$ sudo apt install debmirror gnupg xz-utils
- 我们将在目录的子目录中制作镜像
/opt/
:
$ sudo mkdir /opt/UbuntuMirror
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 架构。不会下载任何源软件包。还将处理密钥。根据您的需要修改上述脚本。
- 我们需要一些密钥。对于较新版本的 Ubuntu,请执行以下操作:
$ sudo mkdir /opt/UbuntuMirror/mirrorkeyring
$ gpg --no-default-keyring --keyring /opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
- 现在更改镜像上的权限和所有权。
$ sudo chown -R root:root /opt/UbuntuMirror/mirrorkeyring
$ sudo chmod -R 571 /opt/UbuntuMirror/mirrorkeyring
- 执行脚本:
/opt/UbuntuMirror/mirrorbuild.sh
由于需要下载大量数据,因此此步骤将需要很长时间才能完成。
- 下载完成后,您的镜像就准备好了。
/opt/UbuntuMirror/
如果该网络上需要镜像,您还可以将整个目录传输到其他网络上的另一台服务器(没有互联网访问权限)。
现在我将向您展示如何使用 nginx 为想要安装各种软件包的客户端提供镜像。如果您想要使用其他方法来提供镜像,则可以跳过此部分。
假设你将镜像复制到另一台安装了 Nginx 的服务器(或保留在同一台服务器上)。假设镜像位于路径
/usr/share/nginx/html/UbuntuMirror/
。在其中创建
/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;
}
}
您可以根据需要修改上述内容。
- 重启 Nginx
$ sudo systemctl restart nginx
要从上述服务器使用上述镜像:
- 首先备份客户端的原始
sources.list
文件
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.orig
- 现在创建一个新的
/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
- 现在你就可以使用来自服务器的镜像了:
$ sudo apt update
$ sudo apt install <some_package>