【Linux】 rpm安装包保存到本地并批量安装


风晓
风晓 2024-01-07 10:44:41 64000 赞同 0 反对 0
分类: 资源
Linux系统的时候大家都有一个烦恼,用yum安装的软件包不知道去哪里了,不像windows那样直观可以将安装包放到一个地方保存起来,接下来为大家介绍yum安装后如果保存rpm包到本地。

 

一、开启rpm安装包缓存到本地仓库
1. 修改yum.conf文件
sed -i "s/keepcache=0/keepcache=1/g" /etc/yum.conf  修改配置文件中的keepcache参数
如果没有keepcache参数,需要手动加到配置文件yum.conf

2. 清理yum缓存
yum clean all
 3. yum命令安装软件包
yum install -y httpd
可以看到已经安装到BaseOS仓库和AppStream仓库

 

查看安装目录如下,根据提示可以在具体的仓库找到对应的rpm包: 

 

可以发现安装一个httpd相关依赖安装在不同的仓库:BaseOS仓库和AppStream仓库

如何可以指定所安装的rpm包保存到一个指定的文件下?下面是具体方法。

二、如何将rpm安装包保存到指定目录
方法一:yumdownloader
如果只想通过yum下载软件的软件包,但是不需要进行安装的话,可以使用yumdownloader命令;


1. 安装yum-utils 
yumdownloader命令在软件包【yum-utils】里面,需要安装yum-utils

# yum install -y yum-utils
2. yumdownloader命令参数说明
usage: dnf download [-c [config file]] [-q] [-v] [--version]

[--installroot [path]] [--nodocs] [--noplugins]

[--enableplugin [plugin]] [--disableplugin [plugin]]

[--releasever RELEASEVER] [--setopt SETOPTS]

[--skip-broken] [-h] [--allowerasing] [-b | --nobest] [-C]

[-R [minutes]] [-d [debug level]] [--debugsolver]

[--showduplicates] [-e ERRORLEVEL] [--obsoletes]

[--rpmverbosity [debug level name]] [-y] [--assumeno]

[--enablerepo [repo]] [--disablerepo [repo] | --repo

[repo]] [--enable | --disable] [-x [package]]

[--disableexcludes [repo]] [--repofrompath [repo,path]]

[--noautoremove] [--nogpgcheck] [--color COLOR]

[--refresh] [-4] [-6] [--destdir DESTDIR] [--downloadonly]

[--comment COMMENT] [--bugfix] [--enhancement]

[--newpackage] [--security] [--advisory ADVISORY]

[--bz BUGZILLA] [--cve CVES]

[--sec-severity {Critical,Important,Moderate,Low}]

[--forcearch ARCH] [--source] [--debuginfo]

[--debugsource] [--arch [arch]] [--resolve] [--alldeps]

[--url] [--urlprotocols {http,https,rsync,ftp}]

packages [packages ...]

General DNF options:

-c [config file], --config [config file]
配置文件位置
-q, --quiet 静默执行
-v, --verbose 详尽执行
--version 显示 DNF 的版本并退出
--installroot [path] 设置目标根目录
--nodocs 不要安装文档
--noplugins 禁用所有插件
--enableplugin [plugin]
启用指定名称的插件
--disableplugin [plugin]
禁用指定名称的插件
--releasever RELEASEVER
覆盖在配置文件和仓库文件中 $releasever 的值
--setopt SETOPTS 设置任意配置和仓库选项
--skip-broken 通过跳过软件包来解决依赖问题
-h, --help, --help-cmd
显示命令帮助
--allowerasing 允许解决依赖关系时删除已安装软件包
-b, --best 在事务中尝试最佳软件包版本。
--nobest 不将事务限制在最佳候选
-C, --cacheonly 完全从系统缓存运行,不升级缓存
-R [minutes], --randomwait [minutes]
最大命令等待时间
-d [debug level], --debuglevel [debug level]
调试输出级别
--debugsolver 转储详细解决结果至文件
--showduplicates 在 list/search 命令下,显示仓库里重复的条目
-e ERRORLEVEL, --errorlevel ERRORLEVEL
错误输出级别
--obsoletes 对 upgrade 启用 dnf 的过期处理逻辑,或对 info、list 和 repoquery
启用软件包过期的显示功能
--rpmverbosity [debug level name]
rpm调试输出等级
-y, --assumeyes 全部问题自动应答为是
--assumeno 全部问题自动应答为否
--enablerepo [repo] 启用附加仓库。列出选项。支持通配符,可以指定多次。
--disablerepo [repo] 停用仓库。列出选项。支持通配符,可指定多次。
--repo [repo], --repoid [repo]
启用指定 id 或 glob 的仓库,可以指定多次
--enable 使用 config-manager 命令启用 repos (自动保存)
--disable 使用 config-manager 命令禁用 repos (自动保存)
-x [package], --exclude [package], --excludepkgs [package]
用全名或通配符排除软件包
--disableexcludes [repo], --disableexcludepkgs [repo]
禁用 excludepkgs
--repofrompath [repo,path]
附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。
--noautoremove 禁用删除不再被使用的依赖软件包
--nogpgcheck 禁用 gpg 签名检查 (如果 RPM 策略允许)
--color COLOR 配置是否使用颜色
--refresh 在运行命令之前将元数据标记为过期
-4 仅解析 IPv4 地址
-6 仅解析 IPv6 地址
--destdir DESTDIR, --downloaddir DESTDIR
设置软件包要复制到的目录
--downloadonly 仅下载软件包
--comment COMMENT 为事务添加一个注释
--bugfix 在更新中包括与 bug 修复有关的软件包
--enhancement 在更新中包括与功能增强有关的软件包
--newpackage 在更新中包括与新软件包有关的软件包
--security 在更新中包括与安全有关的软件包
--advisory ADVISORY, --advisories ADVISORY
在更新中包括修复指定公告所必须的软件包
--bz BUGZILLA, --bzs BUGZILLA
在更新中包括修复给定 BZ 所必须的软件包
--cve CVES, --cves CVES
在更新中包括修复给定 CVE 所必须的软件包
--sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low}
在更新中包括匹配给定安全等级的安全相关的软件包
--forcearch ARCH 强制使用一个架构
Download command-specific options:
--source 取而代之下载源代码软件包 src.rpm
--debuginfo 取而代之下载 -debuginfo 软件包
--debugsource 取而代之下载 -debugsource 软件包
--arch [arch], --archlist [arch]
限定查询指定架构的软件包。
--resolve 解析并下载所需的依赖关系
--alldeps 当运行时使用 --resolve,下载所有依赖软件包 (不排除已安装的软件包)
--url, --urls 打印 rpm 可被下载的 url 列表而不是直接下载
--urlprotocols {http,https,rsync,ftp}
当执行时带有 --url 参数,则限制使用指定协议
3. yumdownloader安装示例
# yumdownloader --destdir=/tmp --resolve lrzsz
在tmp目录下可以看到下载的文件 

 

方法二:yum --downloadonly
 yum命令的参数有很多,其中就有只是下载而不需要安装的命令,并且也会自动解决依赖;通常和【–downloaddir】参数一起使用

# yum install --downloadonly --downloaddir=/tmp/ vsftpd(安装包)
# yum reinstall --downloadonly --downloaddir=/tmp/ vsftpd (安装包)
说明:如果该服务器已经安装了需要下载的软件包,那么使用【install】下载就不行,可以用【reinstall】下载。放心(不会真的安装或重新安装,因为后面加了【–downloadonly】,表明只是下载。)

如果提示没有【–downloadonly】选项则需要安装【yum-plugin-downloadonly】软件包

# yum install -y yum-plugin-downloadonly
方法三:reposync
该命令更为强大,可以将远端yum仓库里面的包全部下载到本地。这样构建自己的yum仓库,就不会遇到没有网络导致更新包无法下载的问题。该命令也是来自于【yum-utils】里面。

1. reposync命令参数说明
[root@master02 ~]# reposync --help

usage: dnf reposync [-c [config file]] [-q] [-v] [--version]

[--installroot [path]] [--nodocs] [--noplugins]

[--enableplugin [plugin]] [--disableplugin [plugin]]

[--releasever RELEASEVER] [--setopt SETOPTS]

[--skip-broken] [-h] [--allowerasing] [-b | --nobest] [-C]

[-R [minutes]] [-d [debug level]] [--debugsolver]

[--showduplicates] [-e ERRORLEVEL] [--obsoletes]

[--rpmverbosity [debug level name]] [-y] [--assumeno]

[--enablerepo [repo]] [--disablerepo [repo] | --repo

[repo]] [--enable | --disable] [-x [package]]

[--disableexcludes [repo]] [--repofrompath [repo,path]]

[--noautoremove] [--nogpgcheck] [--color COLOR]

[--refresh] [-4] [-6] [--destdir DESTDIR] [--downloadonly]

[--comment COMMENT] [--bugfix] [--enhancement]

[--newpackage] [--security] [--advisory ADVISORY]

[--bz BUGZILLA] [--cve CVES]

[--sec-severity {Critical,Important,Moderate,Low}]

[--forcearch ARCH] [-a [arch]] [--delete]

[--download-metadata] [-g] [-m]

[--metadata-path METADATA_PATH] [-n] [--norepopath]

[-p DOWNLOAD_PATH] [--remote-time] [--source] [-u]

下载远程仓库中的全部软件包

General DNF options:

-c [config file], --config [config file]
配置文件位置
-q, --quiet 静默执行
-v, --verbose 详尽执行
--version 显示 DNF 的版本并退出
--installroot [path] 设置目标根目录
--nodocs 不要安装文档
--noplugins 禁用所有插件
--enableplugin [plugin]
启用指定名称的插件
--disableplugin [plugin]
禁用指定名称的插件
--releasever RELEASEVER
覆盖在配置文件和仓库文件中 $releasever 的值
--setopt SETOPTS 设置任意配置和仓库选项
--skip-broken 通过跳过软件包来解决依赖问题
-h, --help, --help-cmd
显示命令帮助
--allowerasing 允许解决依赖关系时删除已安装软件包
-b, --best 在事务中尝试最佳软件包版本。
--nobest 不将事务限制在最佳候选
-C, --cacheonly 完全从系统缓存运行,不升级缓存
-R [minutes], --randomwait [minutes]
最大命令等待时间
-d [debug level], --debuglevel [debug level]
调试输出级别
--debugsolver 转储详细解决结果至文件
--showduplicates 在 list/search 命令下,显示仓库里重复的条目
-e ERRORLEVEL, --errorlevel ERRORLEVEL
错误输出级别
--obsoletes 对 upgrade 启用 dnf 的过期处理逻辑,或对 info、list 和 repoquery
启用软件包过期的显示功能
--rpmverbosity [debug level name]
rpm调试输出等级
-y, --assumeyes 全部问题自动应答为是
--assumeno 全部问题自动应答为否
--enablerepo [repo] 启用附加仓库。列出选项。支持通配符,可以指定多次。
--disablerepo [repo] 停用仓库。列出选项。支持通配符,可指定多次。
--repo [repo], --repoid [repo]
启用指定 id 或 glob 的仓库,可以指定多次
--enable 使用 config-manager 命令启用 repos (自动保存)
--disable 使用 config-manager 命令禁用 repos (自动保存)
-x [package], --exclude [package], --excludepkgs [package]
用全名或通配符排除软件包
--disableexcludes [repo], --disableexcludepkgs [repo]
禁用 excludepkgs
--repofrompath [repo,path]
附加仓库所要使用的标签和路径(与 baseurl 中的路径一致),可以指定多次。
--noautoremove 禁用删除不再被使用的依赖软件包
--nogpgcheck 禁用 gpg 签名检查 (如果 RPM 策略允许)
--color COLOR 配置是否使用颜色
--refresh 在运行命令之前将元数据标记为过期
-4 仅解析 IPv4 地址
-6 仅解析 IPv6 地址
--destdir DESTDIR, --downloaddir DESTDIR
设置软件包要复制到的目录
--downloadonly 仅下载软件包
--comment COMMENT 为事务添加一个注释
--bugfix 在更新中包括与 bug 修复有关的软件包
--enhancement 在更新中包括与功能增强有关的软件包
--newpackage 在更新中包括与新软件包有关的软件包
--security 在更新中包括与安全有关的软件包
--advisory ADVISORY, --advisories ADVISORY
在更新中包括修复指定公告所必须的软件包
--bz BUGZILLA, --bzs BUGZILLA
在更新中包括修复给定 BZ 所必须的软件包
--cve CVES, --cves CVES
在更新中包括修复给定 CVE 所必须的软件包
--sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low}
在更新中包括匹配给定安全等级的安全相关的软件包
--forcearch ARCH 强制使用一个架构
Reposync command-specific options:
-a [arch], --arch [arch]
只下载这个 ARCH 的软件包
--delete 删除已不在仓库中的本地软件包
--download-metadata 下载所有元数据。
-g, --gpgcheck 下载后删除无法通过 GPG 签名检查的软件包
-m, --downloadcomps 同时下载并解压 comps.xml
--metadata-path METADATA_PATH
存储下载的仓库元数据的位置。默认为 --download-path 的值。
-n, --newest-only 只下载最新的软件包 per-repo
--norepopath 不要在下载路径中添加仓库名(reponame)。
-p DOWNLOAD_PATH, --download-path DOWNLOAD_PATH
在何处存储已下载的仓库
--remote-time 根据服务器上的文件设置本地文件的本地时间戳
--source 只下载源软件包
-u, --urls 只列出要下载内容的 url,不实际下载
常用参数

--repo 指定已经本地配置的yum仓库的repo源的名称
-p 指定下载的路径

2. 查看yum源对应的仓库
#yum repolist
仓库如下: 

 

3. 下载对应仓库下的rpm包到指定目录
以openresty为例

# reposync --downloadonly --repo openresty -p /tmp
下载后以仓库名称为文件目录,openresty所有的安装包保存到/tmp/openresty目录下,如下所示:

reposync强大的功能解决了局域网机房在无互联网环境下的软件安装问题,只需要将事先通过reposync下载好的rpm安装包拷贝到目标服务器下,一键安装即可。

4. reposync其他命令
#1. 同步整个源到指定目录
# reposync -p /tmp/repo/
 
# 2. 同步指定源到指定目录
# reposync  --repo=openresty -p /tmp/repo/ 
 
# 3. 更新同步过的源
# reposync -n --repo=openresty -p /tmp/repo/ 
对于每个仓库的yum源阶段性的都有版本更新,要保证通过reposync下载的yum源都是最新的,需要构建job,通过crontab构建一个任务,如下:

#每星期六晚上23 : 00 执行yum仓库openresty rpm包更新
0 23 * * 6 root reposync --downloadonly --repo openresty -p /tmp
三、rpm包批量安装
我们通过yum或者yumdownloader或者reposync下载后的rpm安装包到局域网的一台服务器上安装时发现安装包几十个,甚至上百个rpm包,总不能一个一个安装,需要批量安装。命令如下:

# cd /tmp/repo/ #保存rpm安装包的目录
# rpm -Uvh *.rpm --nodeps --force
参数说明: 

-U:升级软件,若未软件尚未安装,则安装软件。

-v:表示显示详细信息。

-h:以"#"号显示安装进度。

--force:强制安装

--nodeps:不考虑安装依赖的关系

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  94
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  90
分享几个在日常办公中可以用到的shell脚本  82
bat脚本生成查看电脑配置\硬件信息  80
以openkylin为例编译安装内核  79
常见系统问题及其解决方法  79
分享解决宏碁电脑关机时自动重启的方法  76
统信uosboot区分未挂载导致更新备份失败  71
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  70
loadrunner常见问题整理  67
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
bat脚本生成查看电脑配置\硬件信息 0
以openkylin为例编译安装内核 0
常见系统问题及其解决方法 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
loadrunner常见问题整理 0
作者收入月榜
1

prtyaa 收益401.13元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.75元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!