我尝试使用 在服务器 (alecto) 上设置本地 repo reposync
。此部分似乎顺利完成,并且目标目录 (/repo) 已填充。
我这样做是为了能够更新运行 CentOS 的多个虚拟机,而无需影响我的互联网连接。
问题是,在虚拟机上使用“yum update”时,大多数(并非全部)软件包都会失败,显然是在寻找比 /repo 目录中安装的软件包更旧的版本。例如,zlib-1.2.7-17
当版本/repo
为时,它会尝试安装zlib-1.2.7-18
。我不知道它从哪里得到了应该使用 -17 版本的想法。
VM 中仅定义了一个 repo,/etc/yum.repos.d directory - alecto.repo
其中包含:
[alecto]
name=Local network repo on Alecto
baseurl=ftp://192.168.1.110/
enabled=1
gpgcheck=0
这不是 FTP 设置 - 一些安装有效(例如yum install pigz
),并且它们可能有效,因为它们的版本号不经常更改。
createrepo
我已经在所有重新同步的目录上运行,并且已经清除了yum
虚拟机上的所有缓存。
我的问题是:到底发生了什么?如果失败了,它从哪里yum
获取它认为需要安装的版本号?
我已经苦苦思索了两天了,真的需要一些帮助。
答案1
access.redhat.com 上有几个问答显示了以下设置:
对于虚拟机
$ cat /etc/yum.repos.d/local.repo
[RHEL7]
name=Red Hat Enterprise Linux $releasever - $basearch
baseurl=ftp://<ip_address>/<somedirectory>/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
然后运行以下命令:
$ sudo yum clean all
$ sudo yum repolist
[...]
RHEL7 | 1.5 kB 00:00
RHEL7/primary | 920 kB 00:00
RHEL7 3285/3285
repo id repo name status
RHEL7 Red Hat Enterprise Linux 6Server - x86_64 3,285
repolist: 3,285
然后您可以在虚拟机上运行:
$ sudo yum update
注1:这是 URL,但需要帐户才能查看 -https://access.redhat.com/solutions/3187892。
问答环节还引用了 YouTube 上的这个视频,任何人都可以观看,标题为:创建本地存储库并与离线系统共享。
笔记2:您没有展示reposync
下载 repo 的方法,但我怀疑您使用的方法是问题的根源。请观看视频,它显示了如何正确执行reposync
。
答案2
解决了!
我对发出 reposync 命令使用 alecto 自己的 yum.repos.d 来填充 /repo 的事实感到困惑。不知何故,我认为这同样适用于客户端 - 但事实并非如此,所以我不能只在客户端上指定 /repo 作为起点。这意味着 alecto.repo 从看起来像这样
[alecto]
name=Local network repo on Alecto
baseurl=ftp://192.168.1.110/
enabled=1
gpgcheck=0
对此
[base]
name=Local network repo on Alecto - base
baseurl=ftp://192.168.1.110/base/
enabled=1
gpgcheck=0
[epel]
name=Local network repo on Alecto - epel
baseurl=ftp://192.168.1.110/epel/
enabled=1
gpgcheck=0
etc...
我仍然不明白 -17 版本的 zlib 来自哪里,但我有更多时间时会研究一下。