【问题标题】:yum --downloadonly ignores packages in local repoyum --downloadonly 忽略本地 repo 中的包
【发布时间】:2019-10-12 21:56:32
【问题描述】:

我配置了两个存储库,一个通过baseurl=http://... 访问,一个通过baseurl=file://...(本地存储库)访问。当我运行这个命令时:

sudo yum -y update --downloadonly --downloaddir=foo

该命令运行并列出许多包。然而foo 只包含来自远程仓库的包而不是本地的。我如何也“下载”本地文​​件?

我要做的是将包含比我需要的 RPM 多得多的本地 repo 配对到我需要运行更新的那些。这个想法是创建一个新的本地仓库,只包含我需要的东西。

【问题讨论】:

  • yum 通常不会区分两个存储库。他只会获取版本号最高的软件包。因此,要么本地存储库中的软件包较旧,要么本地存储库配置不当。您是否尝试使用 yum 搜索您的本地包?
  • @ChrisMaes 本地仓库中的包是更高版本。使用 yum list 搜索会显示远程和本地存储库中的版本。如果我 sudo yum install atop --downloadonly --downloaddir=./ 不在本地 repo 中,它会下载。如果我尝试使用本地存储库中的 curl,它不会下载。如果我不使用仅下载选项,则任何一个包都将实际安装而没有问题。 IE。本地 repo 很好,yum 必须编码为不使用 baseurl=file:// 下载 repos

标签: centos rpm yum


【解决方案1】:

我已通过阅读 yum 源代码确认这是有意但令人讨厌的行为。

我找到的解决方案是:

在 repo 文件中:

[local]
name=local
baseurl=http://localhost:9999

在 Python 中:

import http.server
import socketserver
import threading
os.chdir('/path to repo')
# We need the web server to run in its own thread
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
  pass
httpd = ThreadedTCPServer(("127.0.0.1", 9999), http.server.SimpleHTTPRequestHandler)
httpd_thread = threading.Thread(target=httpd.serve_forever)
httpd_thread.daemon = True
httpd_thread.start()

...
yum stuff
...

httpd.shutdown()
httpd.server_close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 2015-10-13
    • 1970-01-01
    • 2023-03-27
    • 2013-01-09
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多