客户端卡在 RHEL Satellite Server 5.5(方式 EOL)上并作为子通道运行 EPEL。好久没更新了。其他变量,Python 2.6,Redhat 6.9
但是,当尝试更新 EPEL 存储库 (spacewalk-repo-sync) 时,它最终失败并出现 gzip 错误(文件不是 gzip 压缩文件)。 epel 的清单是 bz2 (updateinfo.xml.bz2)。 (我编辑了 gzip.py 中的错误处理程序以转储文件名)。
在谷歌上查看对它的引用,但没有干净的解决方案或解决方法。 (除了升级卫星之外,目前还不能选择)。
有什么想法吗?也许是使用 gzip 的不同存储库?只是有点卡在这里,如果我目光短浅,也不会感到惊讶。
与 IUS 和 Redhats 标准通道配合良好。
谢谢。
答案1
EPEL 存储库包含一些压缩的 xml 文件。你们老化和疲惫的卫星版本无法理解如此现代的复杂性。
已知错误。看Bug 970315 - RFE:spacewalk-repo-sync 不支持包含 bz2 压缩 xml 文件的 yum 存储库
尝试像 bugzilla 中提到的同事那样将修复程序向后移植到您的 Satellite 实例吗?这是提交,从 4 年前开始,看起来很容易改造。
答案2
我在由约 700 个虚拟机组成的 RHEL6 环境中运行 spacewalk 2.2。我需要修改艾哈迈德萨吉德nightly_sync 用于我需要的存储库,包括 EPEL。我的版本可用这里。
我将所有存储库本地下载到我的 Spacewalk 服务器,并通过 Apache 将 Spacewalk 存储库指向公共目录。 reposync 完成后,我可以根据需要处理 EPEL 的 updateinfo.xml,以便 spacewalk 识别该格式:
set -o pipefail
if ls $REPO_DIR/$REPO/*updateinfo.xml.gz 2>/dev/null | tail -n 1 ; then
echo "updateinfo.xml.gz found"
gunzip -c $(ls -rt $REPO_DIR/$REPO/*updateinfo.xml.gz | tail -n 1) > $REPO_DIR/$REPO/updateinfo.xml
else
echo "updateinfo.xml.gz not found"
file=$(curl -s https://dl.fedoraproject.org/pub/epel/6Server/x86_64/repodata/ | grep "updateinfo.xml.bz2" | cut -d'"' -f6)
echo "Downloading EPEL $file"
wget -q -P $REPO_DIR/$REPO/ https://dl.fedoraproject.org/pub/epel/6Server/x86_64/repodata/$file
bunzip2 -c $(ls -rt $REPO_DIR/$REPO/*updateinfo.xml.bz2 | tail -n 1) > $REPO_DIR/$REPO/updateinfo.xml
fi
之后,我在我需要的通道上运行 spacewalk-repo-sync (我只有一个)。
它很脏(现在),但它有效。我在 crontab 中将其设置为每晚凌晨 1 点左右运行。如果您包含所有存储库,初始同步可能需要一段时间。如有必要,您可以将其缩减为仅处理 EPEL。