当前位置: 首页>>技术教程>>正文


如何创建Ubuntu存储库服务器

, , , , , , , ,

本指南将展示如何配置基于Ubuntu Bionic的本地存储库服务器,但是它可以适用于Ubuntu的早期版本,甚至可以使用Aptitude作为主要软件包管理系统(例如Debian或Mint)进行任何发行。您可能通常希望设置一个本地存储库以节省Internet带宽。

在本教程中,您将学习:

  • 如何在服务器上安装所需的软件
  • 如何选择要在服务器上镜像的存储库
  • 如何在服务器上本地镜像选择存储库
  • 如何配置Linux客户端以使用本地存储库服务器

如上所述,本教程并未考虑公共或国家/地区镜像,但如果要实施,请考虑:

  • 您的网络带宽变得非常重要
  • 您需要将存储库注册到Ubuntu的镜像列表中
  • 您必须每天至少同步镜子四次
  • 因为您必须镜像所有以前的版本,所以可能需要2 TB或更多的磁盘空间
Updating packages list from the local repos.

从本地存储库更新软件包列表。

使用的软件要求和约定

软件要求和Linux命令行约定
类别 使用的要求,约定或软件版本
系统 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存储库服务器

  1. 在服务器上安装所需的软件。

    第一步,我们需要安装Apache HTTP Server,该服务器位于名为的软件包下apache2,使用以下命令:

    $ sudo apt install apache2

    订阅新闻
    订阅Linux职业通讯并接收最新的Linux新闻,工作,职业建议和教程。


    Installing Apache HTTP

    安装Apache HTTP

    然后确保服务在启动时运行:

    
    $ 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,这主要是一个估计。如果需要镜像不同版本的软件包,则空间需求将大大增加。

  2. 允许我们创建本地存储库的主要工具是apt-mirror,要安装它,执行:
    
    $ sudo apt install apt-mirror
    

    如果找不到软件包,请确保首先使用以下命令刷新软件包列表:

    
    $ sudo apt update
    
  3. 选择要在服务器上镜像的存储库。

    安装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配置文件中。

    mirror.list config file

    mirror.list配置文件

    如果磁盘上没有足够的空间,则可以选择不镜像src软件包。因此,您将注释相关行:

    mirror.list config file

    mirror.list配置文件


    接下来,将重要脚本复制到/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/
    
  4. 在服务器上本地镜像选定的存储库。

    现在是创建本地镜像的时候了,请记住,初始镜像(来自archive.ubuntu.com仅适用于本教程)可能会花费大量时间并减慢您的连接速度,因此建议您晚上开始这项工作。要开始将远程存储库软件包镜像到本地服务器,只需执行以下命令:

    
    $ sudo apt-mirror
    

    如果需要,可以中断此过程(使用经典的CTRL + C组合键),然后稍后重新启动;它会从剩下的地方恢复。

    最终,我们将执行clean.sh和postmirror.sh脚本,这表明镜像过程已完成。

    End of mirroring process.

    镜像过程结束。
  5. 使用cron调度程序配置自动同步过程。

    第一次同步完成后,我们需要创建一个cron作业,以确保我们拥有一个自动更新的本地存储库;例如,我们希望此任务每天晚上2:00 AM运行,因此:

    
    $ sudo crontab -e
    

    然后,我们编辑crontab以添加以下行:

    
    00 	02 	*	 *	 *	/usr/bin/apt-mirror
    

    并保存并退出(使用vi,nano或设置的任何编辑器)。

配置Linux客户端以使用本地存储库服务器

  1. 配置本地存储库列表。

    在将要使用我们本地存储库的任何客户端中,我们都需要编辑配置文件/etc/apt/sources.list指定我们的本地存储库并禁用任何远程存储库。在我们的情况下,已下载以下存储库:

    Server local repositories

    服务器本地存储库


    注意

    建议在/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.com10.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文件。

  2. 更新本地存储库索引。
    现在,您需要确保端口80未被客户端防火墙阻止,然后可以运行:
    
    $ sudo apt update
    

    您就可以出发了。

    Updating packages list from the local repos.

    从本地存储库更新软件包列表。

结论

在Ubuntu中设置本地存储库并不困难,因为看起来似乎很容易,只要您有足够的本地网络和磁盘资源,它就可以派上用场。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7366.html,未经允许,请勿转载。