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 库