下载RPM软件包以获取已安装的命令


12

我有一台CentOS机器,我已经在其中安装了openssl-devel

$ yum install openssl-devel 

它下载并安装了所有依赖包。现在,我需要所有这些RPM软件包。是否可以仅下载RPM软件包?当我这样做时:

 $ yum install  openssl-devel -y --downloadonly 

它说

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

因为它已经安装了。

有谁知道如何在同一系统上下载那些RPM软件包?

Answers:


13

可以下载已经使用--downloadonly交换机安装的RPM软件包。我不确定为什么yum在检查软件包是否已安装之前不检查此设置,但是我猜可能是由该工具的基础体系结构引起的。

无论如何,您需要做的就是告诉yum 重新安装该软件包:

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

当然,yum不会只为该软件包安装了哪些依赖项,因此,如果您使用RPM并尝试将它们安装在其他系统上,则可能会丢失某些依赖项。有多种方法可以探索整个依赖关系图,我敢肯定,这已经在SE的其他地方进行了描述。


7

yumdownloaderyum-utils将下载您通过任何包,或者选择性地生成的URL的包可以从以下网址下载。


它没有解决依赖关系,它只是下载openssl-devel.x86_64.rpm
abubacker 2013年

不,它不能解决依赖关系。但是,您希望该工具解决依赖关系有多远?glibcfilesystem
伊格纳西奥·巴斯克斯

1
我的要求很简单,我需要获取rpms列表,然后将其安装在离线的另一台计算机上
abubacker

您说的是“简单”,但实际上并不像您想象的那么简单。仅提供已安装软件包的列表,没有任何工具可以解决依赖关系。
伊格纳西奥·巴斯克斯

1
其实很简单,yum install openssl-devel -y --download仅当我在另一台机器上执行此命令时,它将解决所有依赖关系,但是我的问题是,是否有可能在我们安装该命令的机器上做同样的事情已经
abubacker

3

您可以使用yum-utils软件包中的repotrack命令。它将下载整个依赖关系树- 即使已经安装了它

例:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


样本输出:

[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do

[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm

1
我撤回了有关体系结构错误的说明,因为它实际上是预期的行为。(x86_64的是i686的一个超集,这也是为什么该命令还下载i686软件包)查看这个这个文章获取更多信息。
Sami Badra '18

2

从长远来看,一种可能性是将一台机器指定为要从Internet下载的机器,然后在其上运行NFS(或Web服务器)以将/ var / cache / yum暴露给内部主机。

然后,您需要更新您的yum配置,以添加:

[main]
keepcache = 1

根据https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html

启用缓存后,每个yum操作都可以从配置的存储库下载程序包数据。

用更实际的话说:

$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm

其他答案实际上将解决您的迫在眉睫的问题,仅当您运行yum reinstall已拥有的软件包并需要RPM时,这才有帮助。


0

这是我的工作:

sudo yum install --config =。/ yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ {cat软件包列表)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.