本指南将展示如何配置基于Ubuntu Bionic的本地存储库服务器,但是它可以适用于Ubuntu的早期版本,甚至可以使用Aptitude作为主要软件包管理系统(例如Debian或Mint)进行任何发行。您可能通常希望设置一个本地存储库以节省Internet带宽。
在本教程中,您将学习:
- 如何在服务器上安装所需的软件
- 如何选择要在服务器上镜像的存储库
- 如何在服务器上本地镜像选择存储库
- 如何配置Linux客户端以使用本地存储库服务器
如上所述,本教程并未考虑公共或国家/地区镜像,但如果要实施,请考虑:
- 您的网络带宽变得非常重要
- 您需要将存储库注册到Ubuntu的镜像列表中
- 您必须每天至少同步镜子四次
- 因为您必须镜像所有以前的版本,所以可能需要2 TB或更多的磁盘空间
使用的软件要求和约定
类别 | 使用的要求,约定或软件版本 |
---|---|
系统 | Ubuntu 18.04.2(Bionic Beaver)LTS |
软件 | Apache http 2.x,apt-mirror |
其他 | 以root身份或通过Linux特权访问Linux系统sudo 命令,存储库的最小200 GB磁盘空间 |
约定 | #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求linux命令以常规non-privileged用户身份执行 |
如何逐步创建Ubuntu存储库服务器
- 在服务器上安装所需的软件。
第一步,我们需要安装Apache HTTP Server,该服务器位于名为的软件包下
apache2
,使用以下命令:$ sudo apt install apache2
然后确保服务在启动时运行:
$ sudo systemctl enable apache2
如果一切正常,我们将移至默认的DocumentRoot目录(/var /www /html)。
在这里我们可以创建sub-directory/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,这主要是一个估计。如果需要镜像不同版本的软件包,则空间需求将大大增加。
- 允许我们创建本地存储库的主要工具是
apt-mirror
,要安装它,执行:$ sudo apt install apt-mirror
如果找不到软件包,请确保首先使用以下命令刷新软件包列表:
$ sudo apt update
- 选择要在服务器上镜像的存储库。
安装apt-mirror后,我们可以为其配置文件制作备份副本
/etc/apt/mirror.list
,然后确保包含选项的行set base_path
指向我们存储库的正确路径(默认为/var /spool /apt-mirror)。$ sudo cp /etc/atp/mirror.list /etc/apt/mirror.list.org
因此,您现在可以使用喜欢的编辑器(例如,vi或nano)将mirror.list文件中的base_path选项更改为
/var/www/html/ubuntu
;您还需要指定要镜像仿生发行版(如果您使用其他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 AM运行,因此:
$ 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
已被评论。如果不这样做,可能会得到错误
Release file has not been found
在客户端上运行命令apt update时。首先,我们用本地镜像IP(在本例中为10.0.0.42)替换任何字符串archive.ubuntu.com。当然,您的本地IP地址可能会有所不同。
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\./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.
在本教程中,我们仅镜像来自archive.ubuntu.com的软件包或存储库;当然,您可以在服务器的mirror.list文件中添加其他非官方存储库,但随后您必须在re-run apt-mirror那里,并在任何客户端上相应地编辑source.list文件。
- 更新本地存储库索引。
现在,您需要确保端口80未被客户端防火墙阻止,然后可以运行:$ sudo apt update
您就可以出发了。
结论
在Ubuntu中设置本地存储库并不困难,因为看起来似乎很容易,只要您有足够的本地网络和磁盘资源,它就可以派上用场。