您的位置:首页 > 运维架构 > Linux

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

2016-08-24 23:11 471 查看

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

linux中的rpm管理机制虽然功能很多,但是对与包的依赖关系有时却很难解决,这时就需要基于rpm管理机制的前段工具yun工具,yum是基于rpm ,所以事先还是要有rpm。
yum基于 C/S架构,意味着有Clinet客户端,也有Server服务端
yum repository
文件服务:ftp:// http:// file:/// yum的配置文件:
/etc/yum.conf
同样一个yum仓库也会有XML、JSON:半结构化的数据存储格式,这里主仓库配置文件使用变量格式存储配置

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 #自动回答为yes,uodo或者安装、升级时
--enabledrepo repoId_glob #临时启用匹配glob模式的repo库
--disabledrepo repoId_glog #临时禁用掉匹配glob模式的repo库
--nopuligins #不启用额外的yum插件

yum 内置变量的功能
在yum的配置脚步文件中,定义了一些内置变量,可以用于动态baseurl的链接填写:
$releaserver #当前使用中系统的主版本号
$relearch #系统的处理器架构
$basearch #基础支持的平台
用户自定义变量配置:$YUM0-$YUM9
变量引用例子:




yum 自定义yum仓库
createrepo /path/to/rpmlist_dir #对指定目录创建rpm包关联信息以及yum仓库配置
注意:此目录一般存放很多rpm包安装文件
使用createrepo 命令创建自定路径yum源:



添加指定路径为yum仓库:
在/etc/yum.repos.d/base.repo #这里的base.repo为自己创建的配置文件




查看repo列表:



#发现repo id 下已经出现了刚才配置的tools 库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息