创建 debian 本地存储库,其中包含主存储库,非免费

创建 debian 本地存储库,其中包含主存储库,非免费

如何创建具有子存储库main, non-freekey.gpg为其生成的本地存储库?

我已经准备好了文件夹/srv/dists/buster

答案1

请查看这个相关的 Stack Exchange 帖子。如果您认为它适用,我们可以将此问题标记为重复。如果没有,你可以按照这个答案:

设置debmirror

通过使用该工具debmirror、一个 cronjob 和一个网络服务器,这个任务非常简单。

我将参考这个第三方维基对于这个答案。我建议你看看联机帮助页,以及您在此答案中不熟悉的工具的任何其他联机帮助页。

  1. 安装debmirrordebian-keyring

    apt install debmirror debian-keyring
    
  2. 为镜像创建一个目录。 (就你而言,/srv/dists/buster

  3. 创建镜像用户来运行同步脚本并维护镜像。

    groupadd mirror
    useradd -d /srv/dists/buster -c "Debmirror" -g mirror mirror
    chown -R mirror.mirror /srv/dists/buster
    
  4. 设置 gpg 密钥。请确保您了解,如果出现问题,那是因为官方密钥环已更新并且新密钥在本地丢失。当您遇到此类问题时,请采取必要的步骤来更新密钥。请在此处查看本指南,了解有关如何修复 gpg 密钥的更多信息。

    # Become the mirror user
    su - mirror
    # Import the keys
    gpg --no-default-keyring --keyring trustedkeys.gpg --import /usr/share/keyrings/debian-archive-keyring.gpg
    # Periodically you will update keys, just like this: (Hint: its the same as before.)
    gpg --no-default-keyring --keyring trustedkeys.gpg --import /usr/share/keyrings/debian-archive-keyring.gpg
    #Verify that you have the right keyrings for your system. (Hint: they should mention Buster. Information on the Debian keyrings can be found here: https://ftp-master.debian.org/keys.html)
    gpg --list-keys --keyring trustedkeys.gpg
    

如果您丢失了,~/.gnupg/trustedkeys.gpg可以用以下命令复制它:

    cp /usr/share/keyrings/debian-archive-keyring.gpg ~/.gnupg/trustedkeys.gpg
  1. 设置一个 cronjob 来同步镜像。

    #!/bin/bash
    
    # sourcehost: choose a mirror in your proximity!
    HOST=ftp.us.debian.org;
    
    # destination directory
    DEST=/srv/dists/buster/localmirror
    
    # Debian version(s) to mirror
    DIST=buster
    
    # architecture, use what is applicable here.
    ARCH=amd64
    
    # log timestamp
    logger -t mirror[$$] updating Debian mirror
    
    su mirror -c \
    "debmirror ${DEST} \
     --nosource \
     --host=${HOST} \
     --root=/localmirror \
     --dist=${DIST} \
     --section=main,non-free \
     --i18n \
     --arch=${ARCH} \
     --passive --cleanup \
     $VERBOSE"
    
    logger -t mirror[$$] finished updating Debian mirror
    

Cronjob 文件应如下所示:

    #Edit /etc/cron.d/local-debmirror:
    # debmirror
    38 04 * * 1-5 root /root/scripts/mirror
  1. 通过网络服务器使镜像可用。我会把你需要的或最有效的留给你。我喜欢 Nginx 和 Flask。我知道 python 有一个 oneliner 来启动网站,但如果您更熟悉 apache 或者已经有一些 Web 服务器的基础设施或策略,请使用它。无论您需要高可用性、安全性还是家庭实验室/简单网络的快速功能,请使用最适合您需求的解决方案。我链接的 wiki 提供了您可以使用的解决方案。

  2. 添加到您的sources.list镜子。对于要从​​镜像拉取的 Debian 客户端服务器,您需要编辑 Debian 客户端/etc/apt/sources.list文件以引用本地镜像。不要忘记运行apt update更新 apt。

    deb http://debmirror.example.com/localmirror/ buster main contrib non-free
    

请注意您引用的目录。它应该是正在同步镜像的根目录。根据您的情况/srv/dists/buster/localmirror,但最适合您的。它只需要保持一致。

综上所述

在执行此操作之前,请仔细阅读我提供的每个链接。请记住,这个用于一台 Debian 服务器同步镜像、运行 Web 服务器来提供内容并更新自身,但是此解决方案更适合运行其他 Debian 实例可以更新的本地镜像。

请查看Debian 官方维基有关镜像的信息。

如果您有任何疑问或我的帖子有任何错误,请发表评论,我可以编辑此答案。

祝你好运!

相关内容