Linux入门之软件包管理yum的使用

linux中的rpm管理机制虽然功能很多,但是对与包的依赖关系有时却很难解决,这时就需要基于rpm管理机制的前段工具yun工具,yum是基于rpm ,所以事先还是要有rpm

yum基于 C/S架构,意味着有Clinet客户端,也有Server服务端

yum repository

文件服务:ftp:// http:// file:///   

yum的配置文件:

/etc/yum.conf

同样一个yum仓库也会有XMLJSON:半结构化的数据存储格式,这里主仓库配置文件使用变量格式存储配置

 

yum仓库中的元数据文件:

primary.xml.gz

记录所有RPM包列表;

包之间的依赖关系;

每个RPM安装生成的文件列表;

filelists.xml.gz

当前仓库中所有RPM包的所有文件列表;

other.xml.gz

额外信息,RPM包中修改日志;

repomd.xml

记录的是上面三个文件的时间戳和校验和;

comps*.xml

RPM包分组信息

 

查看yum主配置文件

[root@mzf ~]# cat /etc/yum.conf
[main]                                               #表示为主配置
cachedir=/var/cache/yum/$basearch/$releasever        #显示yum仓库的缓存文件
keepcache=0                                          #是否禁用缓存
debuglevel=2                                         #调试等级
logfile=/var/log/yum.log                             #yum操作时的日志记录文件
exactarch=1
obsoletes=1
gpgcheck=1                                            #是否进行包来源合法性检查
plugins=1                                             #启用插件
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


 

 

默认情况下yum.conf下面会有一些注释信息提示yum仓库默认的存放路径,如

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

解释:这说明,如果要配置一个yum 源,需要在/etc/yum.repos.d 下创建为.repo的文件

 

定义配置一个 repo文件:

默认在/etc/yum.repos.d/

[Repo_ID]                           #仓库id名称,唯一
name=Description                          #仓库描述
baseurl=                              #仓库目录的存放路径,系统版本不同,存放识别有所不同
ftp://                                #这里支持这三种协议链接
http://
file://
mirrolist=                            #这里执行的是一个文本文件,里面记录了baseurl列表
enabled={1|0}                         #是否启用此yum源,1表示启用,0表示禁用
enablegroups={1|0}                 #是否启用软件组
gpgcheck={1|0}                        #是否校验包来源的合法性
gpgkey                                #如果要验证需要指明路径,路径执行协议和baseurl一样


注意:如果设置了mirrolist就可以使用在baseurl行首部加#来注释其信息两者读取有冲突

 

文件格式内容例子:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


 

 

yum命令的使用 :

命令格式:

yum  [options]  [command]  [package...]

1、查看仓库软件包列表

yum list  [command]    #默认为查看所有

          all:查询所有

          available:查询可用的,仓库中有但尚未安装的

          installed:查看已经安装的

          updates:可用的升级

2、清理缓存

yum clean [command]   #清理缓存

[ packages | headers | metadata | dbcache | expire-cache | rpmdb | plugins | all ]

     软件包缓存 头文件  元数据   库缓存       所有

3、列出yum

yum  repolist  [command] :显示repo列表及其简要信息

all:显示所有repo中的配置

enabled:默认,显示所有可用的

disabled:显示所有被禁用的

 

4、安装

yum  install  PACKAGE_NAME....  #指定安装包名文件,可以使用通配符

-y:自动回答为yes

--nogpgcheck:不检查包来源的合法性

yum   reinstall  PACKAGE_NAME:重新安装

 

5、升级

yum  update  [packages....]  #升级指定软件包

      update_to  #         #升级为指定版本

     downgrade package1 [pagckage2]  #降级

yum check-update   #检查可用的升级

 

4、卸载

yum  remove  packages..        

yum  erase   packages...

 

5、查询

yum  info  [package....]   #查询程序包的详细信息

 provides | whatprovides : 查看指定的文件或特性是由哪个包安装生成的

 

6、构建缓存

yum  makecache

 

7、根据关键字搜索包名

yum  search  keyword [keyword2....]    

 

8、查看指定包所依赖的包

yum  deplist  package1.....

 

9、查询yum事务(操作)历史:

yum  history  查看历史列表

yum  history  info  #:显示第几条

yum  history  undo  #:撤销第几条操作

 

注意:其日志文件保存/var/log/yum.log

 

 

 

 

案例:

切换到/etc/yum.repos.d目录下

[root@mzf yum.repos.d]# pwd
/etc/yum.repos.d
[root@mzf yum.repos.d]# ls
backup  base.repo

#配置一个本地yum

[root@mzf yum.repos.d]# cat base.repo 
[base]                                              #yum源id,必须唯一
name=base                                           #描述信息,可以不写
baseurl=http://10.1.0.1/cobbler/ks_mirror/6/        #仓库路径
enabled=1                                           #启用此路径
gpgcheck=1                                          #启动包来源合法性校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6  #指定校验公钥

#列出仓库中bind开头的包列表,已经显示库

[root@mzf yum.repos.d]# yum list | grep '^bind.*'
bind.x86_64                 32:9.8.2-0.47.rc1.el6             installed
bind-libs.x86_64       32:9.8.2-0.47.rc1.el6      @anaconda-CentOS-201605220104.x86_64/6.8
bind-utils.x86_64      32:9.8.2-0.47.rc1.el6      @anaconda-CentOS-201605220104.x86_64/6.8
bind-chroot.x86_64     2:9.8.2-0.47.rc1.el6                 base
bind-devel.i686       32:9.8.2-0.47.rc1.el6             base
bind-devel.x86_64      32:9.8.2-0.47.rc1.el6                base
bind-dyndb-ldap.x86_64   2.3-8.el6                        base
bind-libs.i686       32:9.8.2-0.47.rc1.el6             base
bind-sdb.x86_64      32:9.8.2-0.47.rc1.el6             base


#查到compress压缩工具

[root@mzf yum.repos.d]# yum list | grep 'compress\>'
ncompress.x86_64      4.2.4-54.el6_2.1                  base


注意:这里不能使用search,因为此命令会把所有列表中带关键字的内容全部显示出来,这时找软件,还是用list选项配合正则表达式更高效。

#安装此软件,注意这里是支持文件通配符的

[root@mzf yum.repos.d]# yum install ncomp* -y

#默认会出现安装信息和交互式提示,选y同意即可,这里我们使用-y选项,表示默认同一安装,到最后出现这3行信息说明已经安装成功!

Installed:
  ncompress.x86_64 0:4.2.4-54.el6_2.1                                                                                                            
 
Complete!


#使用list 配合 installed显示已经安装的软件

[root@mzf yum.repos.d]# yum list installed | grep 'compress\>'
ncompress.x86_64       4.2.4-54.el6_2.1 @base

#这里发现ncompress工具已经被安装上了

 

#现在卸载刚才的ncompress软件

[root@mzf yum.repos.d]# yum remove ncompress -y
#最后显示出以下三行信息表示卸载成功
Removed:
  ncompress.x86_64 0:4.2.4-54.el6_2.1                                                                                                            
 
Complete!


 

#我们再次安装上,并用info显示软件包的详细信息

[root@mzf yum.repos.d]# yum info ncompress
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Installed Packages                        
Name       : ncompress                 #软件包名 
Arch       : x86_64                   #处理器架构
Version     : 4.2.4                   #当前软件版本
Release     : 54.el6_2.1                 #发行版本
Size       : 31 k                    #软件包大小
Repo       : installed                 #表示已经安装过  
From repo     : base                    #从那个仓库安装的
Summary     : Fast compression and decompression utilities
URL       : http://ncompress.sourceforge.net/
License     : Public Domain
Description : The ncompress package contains the compress and uncompress file


 

#显示所有的仓库以及其来源哪个配置文件

[root@mzf yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repo id          repo name         status
base            base            6,696
repolist: 6,696

#清空所有缓存

[root@mzf yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, refresh-packagekit, security
Cleaning repos: base
Cleaning up Everything
Cleaning up list of fastest mirrors

#重新构建缓存

[root@mzf yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
base          | 4.0 kB     00:00     
base/group_gz    | 226 kB     00:00     
base/filelists_db  | 6.3 MB     00:00     
base/primary_db   | 4.7 MB     00:00     
base/other_db    | 2.8 MB     00:00     
Metadata Cache Created

#查询yum历史记录

[root@mzf yum.repos.d]# yum history
Loaded plugins: fastestmirror, refresh-packagekit, security
ID     | Login user               | Date and time    | Action(s)  
| Altered
-------------------------------------------------------------------------------
     6 | root <root>              | 2016-08-14 13:26 | Install        |    1   
     5 | root <root>              | 2016-08-14 13:24 | Erase          |    1   
     4 | root <root>              | 2016-08-14 13:14 | Install        |    1  <
     3 | root <root>              | 2016-08-14 05:26 | Install        |    1 > 
     2 | root <root>              | 2016-08-14 05:14 | Install        |    5   
     1 | System <unset>           | 2016-07-20 17:00 | Install        |  980   
history list


#撤销最后一条记录操作

[root@mzf yum.repos.d]# yum history undo 6 -y

说明:因为最后一条显示的是安装某个软件,刚刚是安装了ncompress,现在撤销刚才的操作,也就同等于是卸载掉此软件

#果然,最后还是显示这些
Removed:
  ncompress.x86_64 0:4.2.4-54.el6_2.1                                                                                                            
 
Complete!

#只是使用list证明ncompress是否已经不存在,软件已经卸载成功

[root@mzf yum.repos.d]# yum list installed | grep '^ncomp'
yum其它操作:
yum  search  keyword....        #根据关键词来查询yum仓库的软件信息,这里为模糊搜索
yum  list | grep ‘.*keyword’   #使用list查询所有软件包,并且用正则更精确匹配
yum  deplist  package...       #根据查询指定软件包名来查询其所依赖的其它包


 

yum日志文件:

/var/log/yum.log

 

yum 安装指定路径rpm

yum  localinstall   /path/to/package_file.....   #安装指定路径下的rpm文件

yum  localupdate  /path/to/package_file.....   #升级为指定路径下的新版本rpm文件

 

yum 软件包组管理

yum  grouplist    #查看所有软件组

             [hidden]        #查询隐藏的软件包组

             [groupwildcard]  #查询包编号

yum  groupinstall   group_name....  #软件包组安装

yum  groupremove  group_name...  #软件包组卸载

yum  groupinfo     group_name...  #查询指定软件包的详细信息

 

yum 过滤限制

ym  [command]  --nogpgcheck   #不启用软件包来源合法性检查

                -y            #自动回答为yesuodo或者安装、升级时

                --enabledrepo  repoId_glob    #临时启用匹配glob模式的repo

                --disabledrepo  repoId_glog    #临时禁用掉匹配glob模式的repo

                --nopuligins                  #不启用额外的yum插件

 

yum 内置变量的功能

yum的配置脚步文件中,定义了一些内置变量,可以用于动态baseurl的链接填写:

$releaserver  #当前使用中系统的主版本号

$relearch    #系统的处理器架构

$basearch    #基础支持的平台

用户自定义变量配置:$YUM0-$YUM9

变量引用例子:

wKioL1e9t8vBH1leAABX_wpn2HM324.jpg-wh_50

 

yum 自定义yum仓库

createrepo  /path/to/rpmlist_dir   #对指定目录创建rpm包关联信息以及yum仓库配置

注意:此目录一般存放很多rpm包安装文件

使用createrepo 命令创建自定路径yum:

wKiom1e9t-nh9LBhAADadWhq3p0409.jpg-wh_50

添加指定路径为yum仓库:

/etc/yum.repos.d/base.repo   #这里的base.repo为自己创建的配置文件

wKiom1e9uEPjhuqHAAAVOd-c5f4698.jpg-wh_50 

 

查看repo列表:

wKioL1e9uB6waL4YAAA7O-z_b6E723.jpg-wh_50

#发现repo id 下已经出现了刚才配置的tools