如何手动下载rpm包(不用yum)?

如何手动下载rpm包(不用yum)?

由于某种原因,我需要将 .rpm 软件包下载到 Windows 中。所以我无法使用yum进行下载。虚拟机选项也不可用。

我可以手动下载 .rpm 包吗?如果是,我该怎么办?依赖问题也应该得到解决。

答案1

关于您的依赖关系问题您的使用yum deplist [package]。这将返回您在命令行中列出的包的列表。

如果您是最新的,一旦知道从哪个镜像获得这些 rpm,您就可以轻松下载它们。因为软件包会定期被新软件包覆盖。

如果您使用 CentOS,您可能会使用 EPEL 存储库(使用 确认yum repolist)。在这种情况下,您可以浏览:https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/或者https://dl.fedoraproject.org/pub/epel/7Server/x86_64/Packages/取决于您的版本。

如果它来自自定义存储库,您可以签入/etc/yum.repos.d/your_repo.conf并查找 baseurl 行。您可能会发现类似的内容: baseurl=http://custom.repo.example.com/pub/7/$basearch 在这种情况下,您很可能必须将 $basearch 更改为 x86_64。您可能还需要将 7 更改为其他值。您将能够从任何浏览器访问它(您应该进入 Packages 目录)。

Yum 存储库基本上仅由网络服务器提供服务,因此您可以轻松浏览它们并找到您需要的包。


如果您碰巧已经过时,则可能会发生变化,您在 yum 缓存中拥有安装的软件包的本地副本。运行find /var/cache/yum/ -name "your_package_name*.rpm"并祈祷它会返回一些有趣的东西。

您可以使用任何您喜欢的方式从那里复制它并将其传输到您的 Windows 计算机。

答案2

长话短说:这仅回答 Windows 上的下载/提取,而不是依赖管理。添加repodata/repomd.xml到存储库的基本 url,然后检查repomd.xml以查找并下载其primary.xml文件,其中列出了下载所需.rpm文件的 url。剧本rpm2cpio.sh可以提取(压缩的)cpio存档,cpio -id然后将其复制到文件系统中。

首先,找到存储库的基本 url;例如
https://brave-browser-rpm-beta.s3.brave.com/x86_64/

添加repodata/repomd.xml查找存储库元数据;例如
https://brave-browser-rpm-beta.s3.brave.com/x86_64/repodata/repomd.xml

检查repomd.xml以找到存储库的primary.xml文件;例如repodata/2635976bb02dab08a696dbaad778feea3f3351a3238fb6f77af52c651dd931cd-primary.xml.gz

下载primary.xml存储库;例如

curl --output primary.xml.gz https://brave-browser-rpm-beta.s3.brave.com/x86_64/repodata/2635976bb02dab08a696dbaad778feea3f3351a3238fb6f77af52c651dd931cd-primary.xml.gz
gunzip primary.xml.gz

或者使用其他下载工具。如果文件已压缩,请将其解压缩。

检查primary.xml以找到所需的存档.rpm

grep location primary.xml

也许

findstr "location" primary.xml

下载所需的.rpm文件;例如

curl -O https://brave-browser-rpm-beta.s3.brave.com/x86_64/brave-browser-beta-0.67.99-1.x86_64.rpm

要从文件中解压内容.rpm,请使用以下一些建议的实用程序。安装西格文运行rpm2cpio.shcpio从文件中提取存档(可能是压缩的)的脚本.rpm。 (如有必要,请使用 Cygwinsetup-x86_64.exe安装任何脚本依赖项)。例子:

rpm2cpio.sh brave-browser-beta-0.67.99-1.x86_64.rpm > payload

安装cpiogunzipxzbunzip使用 Cygwin,setup-x86_64.exe具体取决于cpio存档的打包方式。弄清楚有效负载的格式:

file payload

现在解压缩并提取cpio存档(本例中为 XZ 压缩的 cpio 存档):

xz -d payload
cpio -id payload

编辑:外星人是比 rpm2cpio.sh 更通用的包格式转换器。它是用 Perl 编写的。另请注意,虽然这可以处理在 Windows 上下载和提取 RPM(使用 Cygwin),但它不处理依赖项管理。

相关内容