我的存储库服务器在 Centos7.4 上运行,并且我网络中的所有 centos 客户端都通过存储库服务器执行 yum 更新。
问题是,当有更新时,我是否需要手动下载到服务器,或者是否有任何工具能够从存储库镜像站点检查新更新并自动推送到存储库服务器的指定文件夹?
谢谢 :)
答案1
如果您已经有了一个可以运行的本地网络存储库镜像,那么您应该配置客户端来使用它,然后它们将从那里进行更新。
在您的客户中:
cd /etc/yum.repos.d
vim mylocal.repo
填写:
[mylocalrepo]
name=Local CentOS Repository
baseurl=http://my-repo-server/CentOS/7/4
gpgcheck=0
my-repo-server
您的 repo 服务器的 URL 或 IP 在哪里?
如果您不希望通过互联网进行更新,您可能还应该从客户端中删除/评论官方公共存储库 URL。
忘记了自动更新部分:
为了使自动更新/自动升级正常工作,您应该在客户端中做一些更改。
安装 yum-cron
sudo yum install yum-cron
配置 yum-cron
sudo vim /etc/yum/yum-cron.conf
您可以在 yum-cron 中选择要自动升级的软件包以及该文件中的其他自记录选项,以下是可供选择的升级选项:
# default = yum upgrade
# security = yum --security upgrade
# security-severity:Critical = yum --sec-severity=Critical upgrade
# minimal = yum --bugfix upgrade-minimal
# minimal-security = yum --security upgrade-minimal
# minimal-security-severity:Critical = --sec-severity=Critical upgrade-minimal
我可能不会建议放弃default
,而是使用security
。因为自动升级所有软件包可能会导致无法预料的问题。
启动并启用服务以便在开机时自动启动:
sudo systemctl start yum-cron
sudo systemctl enable yum-cron
ps. 升级和更新是两码事。前者执行软件包升级,而后者仅更新存储库索引(以查看哪些更改是上游的)。
答案2
CentOS repo 的结构非常简单,因此您可以使用rsync
本地 repo 服务器中的简单命令来更新它的本地镜像,如下所示:
rsync -vaSH rsync://mirror.facebook.net/centos/ /your/mirror/directory/
您可能希望跳过下载 ISO,在这种情况下您可以在 rsync 中排除这些 ISO:
rsync --exclude isos --exclude '*.iso' -vaSH rsync://mirror.facebook.net/centos/ /your/mirror/directory/
确保/
在 URL 和路径末尾有这些内容,因为rsync
如果没有它们,工作可能会有所不同。
rsync://mirror.facebook.net/centos/
用您选择的镜子替换。您可以看到此处有公共镜像列表。
您可以简单地在您的 cron 作业中包含这个命令 - 例如使用此命令创建一个文件/etc/cron.daily
- 然后您的本地 repo 就会定期更新。