由于某种原因,我需要将 .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.sh
cpio
从文件中提取存档(可能是压缩的)的脚本.rpm
。 (如有必要,请使用 Cygwinsetup-x86_64.exe
安装任何脚本依赖项)。例子:
rpm2cpio.sh brave-browser-beta-0.67.99-1.x86_64.rpm > payload
安装cpio
和gunzip
、xz
或bunzip
使用 Cygwin,setup-x86_64.exe
具体取决于cpio
存档的打包方式。弄清楚有效负载的格式:
file payload
现在解压缩并提取cpio
存档(本例中为 XZ 压缩的 cpio 存档):
xz -d payload
cpio -id payload
编辑:外星人是比 rpm2cpio.sh 更通用的包格式转换器。它是用 Perl 编写的。另请注意,虽然这可以处理在 Windows 上下载和提取 RPM(使用 Cygwin),但它不处理依赖项管理。