如何创建 Ubuntu 存储库服务器
本指南将展示如何配置基于 Ubuntu Bionic 的本地存储库服务器,但它可以适应以前版本的 Ubuntu,甚至可以适应任何使用 Aptitude 作为主要包管理系统的发行版,例如 Debian 或 Mint。您通常可能希望设置本地存储库以节省 Internet 带宽。
在本教程中您将学习:
如何在服务器上安装所需的软件
如何选择要在服务器上镜像的存储库
如何在服务器本地镜像选择存储库
如何配置Linux客户端使用本地存储库服务器
如上所述,我们不考虑本教程的公共或国家镜像,但如果您想实现它,请考虑:
您的网络带宽变得非常重要
您需要将存储库注册到 Ubuntu 镜像列表
您必须每天至少同步镜像四次
由于您必须镜像所有以前的版本,因此您可能需要 2 TB 或更多磁盘空间
从本地存储库更新包列表。
如何一步步创建 Ubuntu 存储库服务器
在服务器上安装所需的软件。
第一步,我们需要安装 Apache HTTP Server,它位于名为
apache2
的包下,命令如下:$ sudo apt install apache2
安装 Apache HTTP
然后确保服务在启动时运行:
$ sudo systemctl enable apache2
如果一切正常,我们将移动到默认的 DocumentRoot 目录(即 /var/www/html)。 然后,我们可以在其中创建子目录
/var/www/html/ubuntu
并将其分配给适当的所有者,在本例中是www-data
(其下的用户Apache HTTP 运行)。$ sudo mkdir -p /var/www/html/ubuntu $ sudo chown www-data:www-data /var/www/html/ubuntu
强烈建议 DocumentRoot 或至少 ubuntu 子文件夹位于属于逻辑卷的文件系统上;这样我们就可以在线放大它,无需停机。 在我测试时,如果还镜像 src 包,则 171.5 GiB 是所需的绝对最小空间;因此,为了规划未来,建议至少拥有 300 GiB 的磁盘空间。
这主要是选择一个Ubuntu版本的一个估计;如果需要镜像不同版本的软件包,则空间需求将大大增加。
$ sudo apt install apt-mirror
如果找不到包,请确保首先使用以下命令刷新包列表:
$ sudo apt update
选择要在服务器上镜像的存储库。
安装 apt-mirror 后,我们可以为其配置文件
/etc/apt/mirror.list
制作备份副本,之后确保包含选项set base_path
的行> 指向我们存储库的正确路径(默认为 /var/spool/apt-mirror )。$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.org
因此,您现在可以使用您最喜欢的编辑器(例如 vi 或 nano)将mirror.list 文件中的 base_path 选项更改为
/var/www/html/ubuntu
;您还需要指定您正在镜像 bionic 发行版(如果您有不同的 Ubuntu 版本,请相应更改)存储库,始终在mirror.list 配置文件中。镜像列表配置文件
如果您的磁盘空间不足,您可以选择不镜像 src 包;所以你将评论相关行:
镜像列表配置文件
接下来,将重要的脚本复制到
/var/www/html/ubuntu/var/
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
在服务器本地镜像所选存储库。
现在是时候创建本地镜像了,请记住,初始镜像(仅针对本教程来自
archive.ubuntu.com
)可能会花费大量时间并减慢您的连接速度,因此我建议你在晚上开始这项工作。 要开始将远程存储库包镜像到本地服务器,只需执行以下命令:$ sudo apt-mirror
如果需要,您可以中断此过程(使用经典的 CTRL+C 组合)并稍后重新启动;它将从剩下的地方恢复。
最终我们会看到 clean.sh 和 postmirror.sh 脚本被执行,这标志着镜像过程已经完成。
镜像过程结束。
使用 cron 调度程序配置自动同步过程。
第一次同步完成后,我们需要创建一个 cron 作业,以确保我们拥有自动更新的本地存储库;例如,我们希望此任务每晚凌晨 2:00 运行,因此:
$ sudo crontab -e
然后我们编辑 crontab 添加以下行:
00 02 * * * /usr/bin/apt-mirror
然后保存并退出(使用 vi、nano 或任何设置的编辑器)。
配置 Linux 客户端以使用本地存储库服务器
配置本地存储库列表。
在任何要使用本地存储库的客户端中,我们需要编辑配置文件
/etc/apt/sources.list
指定我们的本地存储库并禁用任何远程存储库。在我们的例子中,已下载以下存储库:
服务器本地存储库
注意
建议对
/etc/apt/sources.list
文件中引用未在我们的服务器中镜像的存储库的任何行进行注释,例如,在本例中,以deb- 开头的任何行src
和包含bionic-backports
已被注释。首先,我们将任意字符串 archive.ubuntu.com 替换为本地镜像 IP,在本例中为 10.0.0.42。当然,您的本地 IP 地址可能不同。
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\.\42/g" /etc/apt/sources.list
此命令将创建备份文件
/etc/apt/sources.list.bak0
并将任何archive.ubuntu.com
字符串替换为10.0.0.42
>。进一步的调整是这样再次运行 sed:
$ sudo sed -i.bak1 "s/ubuntu/ubuntu\/mirror\/archive\.ubuntu\.com\/ubuntu/g" \ /etc/apt/sources.list
这是必要的,因为 apt-mirror 将路径
mirror/archive.ubuntu.com/ubuntu
附加到我们的基本路径。此处将创建另一个备份文件/etc/apt/sources.list.bak1.
现在您需要确保端口 80 没有被客户端防火墙阻止,然后您可以运行:
$ sudo apt update
您已经准备好出发了。
从本地存储库更新包列表。
结论
在 Ubuntu 中设置本地存储库并不像看上去那么困难,而且只要您有足够的本地网络和磁盘资源,它就会派上用场。