rpm与yum及dnf

 

前言:关于rpm、yum及dnf

rpm:为了解决在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,rpm机制应运而生。但是rpm机制也只能帮助运维人员查询缺少的依赖关系,安装还是需要自己来进行。这是yum软件仓库就来了。

yum:底层为rpm包,搭建的一套基于rpm包的yum软件仓库。即Yum方式下载的包都是rpm包,而yum的好处在于在下载指定的rpm包时,会在自己的Yum软件仓库中自动寻找其所有依赖包,并进行统一安装,节省了运维人员的时间。且yum软件仓库,可以是基于官方的、也可以是基于第三方的,还可以是自己搭建的。

dnf:在yum机制如此优秀的情况下,仍然存在一些问题,如分析不准确,占用内存量大,不能多人同时安装软件等硬伤。因此在随着Fedora 22系统的发布,红帽又给了我们一个新的选择—DNF,即DNF实际上就是yum的升级版,也称为yum v4版本。且在使用上面,dnf也是和yum命令方式一样,都是同样的使用方式,只需把yum换为dnf即可。

 


 

包之间:可能存在依赖关系,甚至循环依赖
解决依赖包的管理工具:
  yum:rpm包管理器的前端工具
  apt-get:deb包管理器前端工具
  zypper:suse上的rpm前端管理工具
  dnf:Fedora 18+ rpm包管理器前端管理工具
管理程序包的方式:
  使用包管理器:rpm
  使用前端工具:yum,dnf
查看二进制程序所依赖的库文件
  #ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
  #ldconfig -v 加载正在使用的库文件
  /sbin/ldconfig -p :显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf(主配置文件),/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache

rpm命令使用
 
安装
-i(安装)
#rpm {-i | --install} [install-option]  PACKAGE_FILE....
如:
    #rpm -ivh  包.rpm(安装并显示详细过程,以#显示程序包管理执行进度)
    #rpm -ivh --force  包.rpm(强制安装包,忽略错误输出)

 

解压缩rpm包

#rpm2cpio   包名.rpm  |cpio  -tv   

 

升级

复制代码
#rpm  {-U | --upgrade} [install -options] PACKAGE_FILE...
   -U,upgrade:安装有旧版程序包,则“升级”
                        如果不存在旧版程序包,则“安装”

#rpm  {-F | --freshen} [install-options] PACKAG_FILE     
   -F,freshen:安装有旧版程序包,则“升级”
                      如果不存在旧版程序包,则不执行升级操作。

即#rpm  -Uvh  PACKAGE_FILE
   #rpm  -Fvh  PACKAGE_FILE
                 --oldpackage:降级
                 --force:强制安装        

内核:一般不建议随便换内核;除非遇到重大情况,出bug等。
建议用ivh安装新的内核版本,新版本和旧版本共存,使用新版本一段时间后,若机器稳定运行,再卸载旧版本rpm包即可(# rpm  -e ),这样安全。
若出问题,则换回旧版本的内核继续使用.(重启使用旧的内核版本)
复制代码

 

包查询、卸载
复制代码
-q(查询)
#rpm -qa  (列出所有包)
#rpm -qpi filename.rpm    查询软件描述信息
#rpm -qpl filename.rpm    列出软件文件信息(查看未安装的该rpm包内的文件(即预览包内文件))
#rpm -qf  filename    查询文件属于哪个RPM
#rpm  -q  --scripts  bash (查询安装后自带的所有脚本,都有)
#rpm  -qp --scripts bash(查询安装前自带的所有脚本,都有)

-e(卸载)
#rpm -e filename.rpm    卸载软件
#rpm2cpio  包文件|cpio  -itv  预览包内文件
#rpm2cpio  包文件|cpio  -id  "*.conf" 释放包内文件
复制代码

 


 yum命令使用

 

①yum:yellowdog Update Modifier ,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具。
②yum repository:yum repo,存储了众多rpm包, 以及包的相关元数据文件(放置于特定目录repodata下)。
③yum的配置文件:/etc/yum.conf,但是yum仓库配置文件需要在/etc/yum.repos.d/名字.repo;
④yum安装相同软件包的高级版本,会完成自动更新;
⑤当rpm或yum下载的程序包,文件后来丢失时,可用rpm -ivh ..rpm --replacepkgs 或 yum reinstall -y 程序包名,重新安装更新文件,解决。
⑥日志:/var/log/yum.log
 
yum配置文件解析
复制代码
其中配置文件
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置


yum软件仓库配置
#vim /etc/yum.repos.d/*.repo
[name]
name=关于repository的描述
baseurl=路径
     #baseurl=file:///mnt/cdrom(本地base源)
     #baseurl=http://mirrors.aliyun.com/epel/7/$basearch    
enbaled=1|0  开启或关闭
gpgcheck=1|0 是否开启检验
gpgkey=file://mnt/cdrom/RPM-GPG-KEY-EPEL-7(若开启检验,则该参数写上对应公钥的路径)

注意:在自己写的repo文件中,若不写gpgcheck参数,则默认按/etc/yum.conf配置文件中的gpgcheck参数执行;
复制代码

 

yum命令的用法

复制代码
yum命令的用法:
   #yum  [options]  [command] [package ...]

显示仓库列表:
    #yum  repolist  [all |enabled | disabled]

显示程序包:
    #yum  list
    #yum  list  [all |glob_exp1 ] [glob_exp2] [...]
    #yum  list  {available | installed | updates } [glob_exp1] [ ...]

安装程序包:
    #yum  install  package1  [package2] [...]
    #yum  reinstall  package1  [package2] [.... ] (重新安装)

yum-config-manager,生成172.16.0.1_cobbler_ks_mirror_centos-x-x86_64_.repo
    #yum-config-manager --add repo=http://172.16.0.1/cobbler/ks_mirror/7/(即baseurl的路况):自动在/etc/yum.repos.d/生成repo文件,缺点是没有gpg参数。

启用|禁用仓库
  #yum-config-manager --disable "仓库名"  :禁用仓库(enable=0)
  #yum-config-manager --enable  "仓库名"  :启用仓库(enable=1)

升级程序包:
    #yum  update [package1] [package2][...]   升级(不加参数,默认升级所有rpm包)
    #yum  downgrade  package1 [package2] [...]  降级

检查可用升级
    #yum  check-update

卸载程序包
    #yum  remove  | erase  package1 [package2] [...]

查看程序包information:
    #yum  info  [...]  信息没有#rpm  -qi  [...] 详细

查看指定的特性(可以是某文件)是由哪个程序包所提供:
    #yum  provides | whatprovides  feature1 [feature2] [...]

清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
    #yum  clean [packages | metadata| expire-cache | rpmdb | plugins | all ]

构建缓存:
    #yum makecache

搜索:以指定的关键字搜索程序包名及summary(说明)信息
    #yum search  string1 [string2] ..

查看指定包所依赖的capabilities:
  #yum  deplist  package1 [package2] [..]

查看yum事务历史:
    #yum  history [ info | list | packages-list | packages-info | summary | addon-info | redo | undo| rollback |  new | sync | stats ]
    #yum history
    #yum  history  info 6(即#yum history的ID,查看该ID步骤的详细信息)
    #yum history  undo 6(撤销ID步骤的动作 )
    #yum history  redo 6  (重做ID步骤的动作)
复制代码

 


 

yumdownloader命令

 

作用:利用yum命令只下载rpm包不安装(方便从外网机复制包到内网机)

 

yumdownloader命令下载

1.首先需要yum下载yum-utils(该包本地yum源即可,epel也有)
未下载前:

 

下载后:多出来的为yum系列命令的其它插件

 

 

2..yumdownloader使用方法

#yumdownloader --resolve(可选,意为下依赖包) --destdir=软件存放位置 (可选) +软件包名
例:
#yumdownloader --resolve --destdir=/homt/nethogs nethogs   下载nethogs命令包(yum仓库由许多rpm包组成,用来解决rpm包之间的依赖关系)

rpm包安装:

#rpm -ivh --force nethogs-0.8.5-1.el7.x86_64.rpm 忽略报错,强制直接安装
或可以直接使用yum安装该包,同时也方便查找并安装解决该rpm报的依赖问题。若内网没有,则肯定还需要再将依赖包一起下载。

 

 


 

 dnf命令使用

①在centos7中,默认还未安装dnf命令,使用的还是yum;使用dnf命令,还需下载。

②在centos8中,已自动安装了dnf命令,同时yum命令也可使用。

③dnf命令使用与yum命令使用方式一致,只需将yum改为dnf。

 

centos7中,dnf命令的下载

1.启动epel-release依赖

使用命令
  # yum install epel-release
 2.使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。在系统中执行以下命令:
下载dnf命令包
# yum install dnf

 >....关于dnf命令,我在自己的centos7环境下下载失败,包环境不够,之后还未测试,因此关于该dnf块的实验,可不看。

 >....后续了解到centos8后,再补充。

 
 
 
 
 
 
 

posted @   浮~生  阅读(1372)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示