Linux 使用rpm和yum管理软件

rpm安装软件

rpm包名称含义

一般来说,软件的名字就是第一个字段,第二个字段表示版本号,版本号之前的全是软件包的名字

  • 版本号后的数字表示该软件的发行次数。
  • 发行次数后面的.el8表示该rpm包适用与哪个操作系统平台
  • 后面的i686/i386/x86_64 表示该软件包的位数。
    • i696/i386/X86表示是32位的软件
    • X86_64表示是64位的软件
    • noarch表示适用于任何CPU架构,基本上其他Linux发行版本也能安装

主包和辅助包

一般来说,名称中不带后缀的是主包,一定要安装。
带-devel后缀的是辅助包。辅助包是否需要安装取决于主包是否依赖与辅助包。

rpm的限制

rpm命令安装软件包不能解决软件包的依赖问题。

软件包依赖种类

  • 树状依赖 A-B-C 安装步骤 C-B-A
  • 环形依赖 A-B-C-A 需要一起安装
  • 模块依赖 A-B中的某个模块或函数或函数库

rpm命令

# 安装
`rpm -ivh xz-5.2.2-1.el7.x86_64.rpm`

#卸载
`rpm -evh xz-5.2.2-1.el7.x86_64.rpm`

# 查看
## 未安装的软件需要指定包全名
## 已安装的软件指定包名即可

# 查看软件是否安装
rpm -qa sl
# q 查询 a 所有

# 查看软件包的信息
rpm -qi sl
# -p查看未安装的软件
rpm -qpi python-ply-3.4-11.el7.noarch

# 查看软件包包括哪些内容
rpm -ql sl
# l 显示安装列表

# 查看已安装的命令在哪个软件包里
rpm -qf 文件绝对路径
rpm -qf /usr/bin/ssh
openssh-clients-7.4p1-16.el7.x86_64
rpm -qf `which ssh`

yum安装软件

yum (yellow dog update manager)
yum可以解决软件包的依赖问题,即通过yum安装软件时,可以自动安装相关的依赖包。
yum的底层仍然是rpm,如果没有rpm的功能,也不能使用Yum

yum的限制

yum是单线程的,如果一个终端没有执行完yum,另一个终端不能执行yum
在rhel8版本,yum实际是dnf命令,dnf命令可以多线程执行

yum仓库

概念

软件仓库包括软件包和软件包的元数据。元数据相当于所有软件包的名字和所有软件包的依赖关系。元数据文件远远小于整个仓库的大小
yum就是访问软件仓库的元数据,进而根据元数据里面的记录自动解决软件包的依赖关系

在Linux安装镜像中,packages存放软件包 repodata目录存放元数据文件

本地yum仓库搭建

yum配置文件 /etc/yum.conf
yum仓库文件目录: /etc/yum.repos.d/
该目录是存放仓库文件的,仓库文件就是指向repodata所在路径的文件,仓库文件必须以.repo结尾
可以在一个文件中包含多个yum仓库,也可以分开在多个文件。
yum仓库文件语法:

vi iso.repo
[name] #名称
name = iso repo #描述
enable = yes # 是否启用
gpgcheck =0 #是否进行gpg检查
baseurl = file:///iso/BaseOS/ 
# file:// 表示本地文件协议  /iso/BaseOS/ 表示repodata所在的绝对路径

网络yum仓库

网络yum仓库分类

  • base 仓库:经过验证和审核的软件
  • 扩展仓库: 新的软件,没有经过审核的 epel
    https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b11P08aHf

搭建网络仓库

使用yum-utils工具添加
#安装 yum工具
yum install yum-utils 
#添加软件仓库
yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
使用开源镜像站建议的方式添加

阿里云镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

yum安装排错流程

  1. 是否能否访问互联网
    访问互联网地址不通 网卡地址配置有问题
    访问互联网名称不通 DNS配置有问题
  2. 检查是否已经有下载的进程了
    报错:
Loaded plugins: fastestmirror
Existing lock /var/run/yum.pid: another copy is running as pid 8488.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  76 M RSS (822 MB VSZ)
    Started: Fri Aug 21 16:10:02 2020 - 00:10 ago
    State  : Sleeping, pid: 8488

yum命令

软件包组就是将一系列软件包打包成一个组,安装包组等于按照这个包组里面所有的软件

安装

# 安装软件包
yum install cowsay
# 重新安装某个软件包
# 部分命令丢失的时候可以重新安装软件包
yum -y reinstall coreutils
# 安装软件包组
yum group install "Server with GUI" #安装图形化界面

升级

升级软件

# 将所有的软件都升级到仓库里的最新版本
yum update
# 升级具体的软件到指定版本
yum update traceroute-2.1.10

操作系统升级

yum upgrade 一般不建议使用

删除

# 删除软件
yum erase cowsay -y  #不建议使用该方法,因为会将依赖软件同时删除
# 删除软件,不验证依赖关系
rpm -e 软件名称 --nodeps #不验证包的依赖 推荐使用
rpm -evh 软件名称 

查看

# 检查可用的yum源信息
yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                       repo name                                                    status
base/7/x86_64                 CentOS-7 - Base - mirrors.aliyun.com                         10,070
epel/x86_64                   Extra Packages for Enterprise Linux 7 - x86_64               13,426
extras/7/x86_64               CentOS-7 - Extras - mirrors.aliyun.com                          413
updates/7/x86_64              CentOS-7 - Updates - mirrors.aliyun.com                       1,112
repolist: 25,021

# 查看软件包中的软件
yum list
# 该语句列出当前所有仓库里的所有软件,并同时创建缓存
# 缓存的作用是在yum安装软件包的时候自动补全

# 查看所有软件包组信息
yum grouplist

生成和清空缓存

# 生成缓存
yum makecache
# 清空缓存
yum clean all 

搜索软件包

搜索带有core关键字的rpm 
yum search core 
搜索哪个rpm包提供rm命令
yum provides rm

历史记录

# 查看所有执行过的yum操作
yum history
# 查看某次yum操作的详细记录
yum history 37 
 
# 恢复某次之前执行的操作
yum history undo 37 
# 注意安装本地包不能直接通过undo恢复,要将本地包放在一个仓库中才能恢复

你可能感兴趣的:(Linux 使用rpm和yum管理软件)