rpm和yum软件管理

Posted ajunyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpm和yum软件管理相关的知识,希望对你有一定的参考价值。

1. rpm

Redhat Package Manager,是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件

1.1  rpm可以完成的操作

  安装软件

  卸载软件

  查询软件信息

  升级、降级

  检验

  打包程序

注意:rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序。

1.2 程序的格式

  1)源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2)

  2)rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm)

 

2. 安装方式

安装方式

优点

缺点

编译安装

安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)

安装过程复杂,而且很慢

rpm安装(用rpm来安装rpm后缀的安装包)

安装和卸载过程非常方便

安装过程不可控(安装位置,安装那些功能模块)

rpm包的依赖关系非常复杂

yum安装

yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装

 

绿色安装

 

 

 

3.rpm操作

3.1 安装rpm包

格式:rpm -ivh 软件包名

选项

  -i:安装软件

  -v:显示安装过程

  -h:用#表示安装进度(# 2%)

  -vv:显示更详细的安装过程信息

  -vvv:显示更更详细的安装过程信息

 

3.2  卸载rpm包

  格式:rpm -e 软件名

 

3.3  查询已安装的rpm包

  格式: rpm -q 软件名

选项

  -q:查看一个已经安装的软件

  -a:查看所有已经安装的软件all

  -l:显示软件安装完成以后生成文件列表(所有文件)list

  -i:查看软件包的相关信息 info

  -d:显示该软件所生成的说明性质的文档列表docfiles

  -c:查看软件所生成的配置文件列表configfiles

  -scripts:查看软件相关的脚本

 

3.4 查看文件是哪个软件生成的

  rpm -qf  /path/to/file   (绝对路径)

 

3.5 升级选项

  -U:升级或安装软件

  -F:仅仅是升级操作

使用格式;

  rpm -Fvh 软件包名

  rpm -Uvh 软件包名

 

4. yum

4.1  yum工作原理

1)创建一个yum仓库(rpm包仓库、软件仓库)

  仓库其实就是一个目录;

  仓库中存放的是rpm包;

  仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息;

元数据信息包括:

  软件名

  软件版本

  软件是否已经安装

  软件的依赖关系

2)用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C, B依赖C D)

  1))yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装;

  2))如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C;

  3))yum会再次扫描元数据文件,检测B C 是否安装,如果都已经安装,那么会开始开始安装A;

  4))如果B C尚未安装,那么会检测 B C的依赖关系,会发现B依赖C D;

  5))yum会再次扫描元数据文件,检测C D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,,然后安装A。

 

4.2 yum仓库

本地:将本地的一个目录做成yum仓库,只有当前系统可以。

网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以用。

 

使用yum仓库的方式,就是修改yum的配置文件

yum的配置文件

  主:/etc/yum.conf

  子:/etc/yum.repos.d/*.repo

 

  /etc/yum.conf文件

  cachedir=/var/cache/yum/$basearch/$releasever:指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/  ;

  keepcache=0:指定是否保留缓存文件  。

 

用yum安装软件过程中会从yum仓库下载并缓存多个资源

  1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中

  2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中

 

4.3 yum配置文件的构成

  [localRpm]          :指定yum仓库的id,可以随便写,但是中间不能有空格

  name=xxx          :指定yum仓库的名称,可以随便写

  enabled=0|1      : 指定是否使用该yum仓库,0表示不使用;1表示使用

  gpgcheck=0|1   : 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证

  gpgkey=            : 指定公钥文件(如果gpgcheck=1,那么该项不能省略)

  baseurl=           :指定yum仓库的url

  cost=1              :优先级,数字越小优先级越高

 

 

4.4  yum仓库的url的表示方式

注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录

本地yum仓库: file:// ,比如我的yum仓库 /myrpm,此时yum仓库的表示方式就是file:///myrpm

网络yum仓库: http://

 

4.5  使用光盘中的rpm包作为yum仓库

1)挂载光盘

  # mount /dev/cdrom /media

2)备份yum自带的配置文件

  # cd /etc/yum.repos.d

  # mkdir bak

  # mv *.repo bak   mv  C*  ken

 

3)创建yum的配置文件,使用光盘作为yum仓库

  # vim 1.repo                 #名字无所谓,必须以 .repo 结尾

  [myrepo]

  name=my repo

  enabled=1

  gpgcheck=0

  baseurl=file:///media

 

4)执行yum命令检测结果

  # yum clean all    <<< 清空yum缓存的全部数据

  # yum repolist     <<< 检查yum仓库中有多少个可用的rpm包

[[email protected] ~]# mount /dev/cdrom /mnt               #挂载,挂载前应将虚拟机的CD勾选连接
mount: /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]# cd /etc/yum.repos.d/                #切换目录
[[email protected] yum.repos.d]# vim test.repo             #新建文件必须以,repo结尾
[test]                                                  #yum仓库的id
name=test                                               #yum仓库的名称
enable=1                                                #使用该yum仓库
gpgcheck=1                                              #验证完整性
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7                 #公钥文件
baseurl=file:///mnt                                     #yum仓库的url,url必须在repodata所对应的目录下
cost=1                                                  #优先使用本地源,cost越大,优先级越低        
:wq
[[email protected] ~]# ls /mnt
CentOS_BuildTag  GPl       liveOS    RPM-GPG-KEY-CentOS-7
EFi              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EUla             isolinux  repodata  TRaNS.TBl
[[email protected] yum.repos.d]# yum clean all             #清空yum缓存
loaded plugins: fastestmirror
Cleaning repos: base extras test updates
Cleaning up everything
Cleaning up list of fastest mirrors
[[email protected] yum.repos.d]# yum repolist              #查看仓库
repo id                 repo name                            status
base/7/x86_64           CentOS-7 - Base                      10,019
extras/7/x86_64          CentOS-7 - Extras                      85
test                     test                                 3,831
updates/7/x86_64         CentOS-7 - Updates                    1,511
repolist: 15,746

 

 

4.6  yum 的使用

1)安装软件

  yum -y install 软件1 软件2 软件3 ....(可以是多个软件)

2)卸载软件

  yum -y remove 软件1 软件2 软件3 .... (可以是多个软件)

3) 管理包组

        grouplist:查看系统中的全部的包组

        groupinfo 包组名:查看指定包组的信息(包组的作用、包含的软件)

        groupinstall 包组名:安装指定的包组

        groupremove 包组名:卸载指定的包组

 

CentOS7: 命令行界面升级为图形化界面

  yum groupinstall "X Window System"  -y

  yum groupinstall "GNOME Desktop" "Graphical administration Tools" - y

  这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot)

4)管理yum的缓存数据

     clean [ packages | metadata | all ]

     all:清除所有数据

     packages:仅仅清除rpm包

     metadata:仅仅清理缓存元数据

5)查看所有已经安装和尚未安装rpm包

      yum list all 或者yum list 可以列出所有的软件包     

6)yum list available:仅仅显示可以安装但是尚未安装的rpm包

7)yum list  installed:仅仅显示已经安装rpm包

     @:表示已经安装rpm

8)查看yum仓库的信息

      yum repolist

 

4.7  网络yum源的使用方式

1)国内主流的网络yum仓库地址

  mirrors.aliyun.com

  mirrors.163.com

  mirrors.sohu.com

 

rpm的yum源

  centos提供的

  epel提供的:

 

例子:

#使用aliyun提供的epel 和centos的yum源
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
vim new.repo
[centos]
name=centos repo
enabled=1
gpgcheck=0
baseurl=http://mirrors.163.com

[epel]
name=epel repo
enabled=1
enabled=1
baseurl=http://xxxx
[[email protected] yum.repos.d]# vim bendi.repo
[test]
name=test
enable=1
gpgcheck=1
geokey=file:///mnt/RPM-GPG-KEY-CentOS-7
baseurl=file:///mnt
cost=1

[net]
name=net 
enable=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/    #阿里云提供的网络云仓库, url必须在repodata所对应的目录下
:wq
[[email protected] yum.repos.d]# yum repolist
[[email protected] yum.repos.d]# yum clean all
repo id                     repo name                         status
test                        test                               3,831
base/7/x86_64             CentOS-7 - Base                      10,019
extras/7/x86_64           CentOS-7 - Extras                       385
net                          net                             13,051
updates/7/x86_64          CentOS-7 - Updates                    1,511
repolist: 28,797

以上是关于rpm和yum软件管理的主要内容,如果未能解决你的问题,请参考以下文章

软件管理 之 rpm 和 yum 安装软件

linux应用程序基础及安装方式(RPM,YUM和源代码编译)!

使用yum管理RPM软件包

软件包的管理(rpm和yum)

36.Linux软件管理--YUM工具

rpm包管理_yum在线管理