yum工具的使用

yum工具的使用

文章目录

      • yum工具的使用
        • 挂载光盘
        • yum的元数据
        • yum的配置文件
        • 仓库管理
          • yum本地仓库
          • yum网络仓库
        • 软件的官方仓库
        • redhat7使用centos7的yum源
        • yum管理软件
        • 具体实例
          • 搜索软件包
          • 安装软件包
          • 删除软件包
          • 与仓库相关的命令
          • 与缓存相关的命令
          • 与包组相关的命令
        • 实例

挂载光盘

  • 插入光盘
  • 挂载光盘
[root@localhost ~]# mount /dev/cdrom  /mnt
mount: /dev/sr0 写保护,将以只读方式挂载

yum的元数据

  • 存放位置(/mnt/repodata目录)
  • 包含的文件及其对应的功能
    • primary.xml.gz
      • 当前仓库所有rpm包的列表;
      • 依赖关系;
      • 每个rpm包安装生成的文件列表
    • filelists.xml.gz
      • 当前仓库所有rpm包的所有文件列表
    • other.xml.gz
      • 额外信息,rpm包的修改日志
    • repomd.xml
      • 记录的是primary.xml.gz、filelists.xml.gz、other.xml.gz这三个文件的时间戳和校验和
    • comps*.xml
      • rpm包分组信息

yum的配置文件

  • 配置文件有哪些:
    • /etc/yum.conf 作用:为所有仓库提供公共配置
    • /etc/yum.repos.d/*.repo 作用:为仓库的指向提供配置
  • yum的repo配置文件中可用的变量:
    • $releaseversion:当前OS的发行版的主版本号
    • $arch:平台类型
    • $basearch:基础平台

为yum定义repo文件

[Repo_Name]:仓库名称
name:描述信息
baseurl:仓库的具体路径,接受以下三种类型
 ftp://
 http://
 file:///
enabled:可选值{1|0},1为启用此仓库,0为禁用此仓库
gpgcheck:可选值{1|0},1为检查软件包来源合法性,0为不检查来源
   如果gpgcheck设为1,则必须用gpgkey定义密钥文件的具体路径
   gpgkey=/PATH/TO/KEY

[root@localhost ~]# vi /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever       缓存目录
keepcache=0    缓存软件包, 1启动 0 关闭
debuglevel=2      调试级别
logfile=/var/log/yum.log      日志记录位置
exactarch=1      检查平台是否兼容
obsoletes=1      检查包是否废弃
gpgcheck=1       检查来源是否合法,需要有制作者的公钥信息     
plugins=1        是否启用插件
tolerant={1|0}   容错功能,1为开启,0为关闭,当设为0时,如果用yum安装多个软件包且其中某个软件包已经安装过就会报错;当设为1时,当要安装的软件已经安装时自动忽略
installonly_limit=3
# metadata_expire=90m   每90分钟手动检查元数据
# in /etc/yum.repos.d   包含repos.d目录 

仓库管理

yum本地仓库
  1. 挂载光盘
  2. 复制光盘内容到yum服务器
[root@localhost ~]# mkdir /opt/myrepo
[root@localhost ~]# cp -r /mnt/*  /opt/myrepo/
[root@localhost myrepo]# ls
addons            GPL       media.repo               RPM-GPG-KEY-redhat-release
EFI               images    Packages                 TRANS.TBL
EULA              isolinux  repodata
  1. 配置repo文件
[root@localhost ~]# ls /etc/yum.repos.d/
redhat.repo
[root@localhost ~]# vi /etc/yum.repos.d/myrepo.repo
[root@localhost ~]# cat  /etc/yum.repos.d/myrepo.repo
[myrepo]
name=myrepo
baseurl=file:///opt/myrepo
gpgcheck=0
enabled=1
  1. 清空yum本地
[root@localhost ~]# yum clean all
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在清理软件源: myrepo
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
  1. 检验yum本地仓库
[root@localhost ~]# yum list all
...
yum-langpacks.noarch                   0.4.2-7.el7                        myrepo       
yum-plugin-aliases.noarch              1.1.31-42.el7                       myrepo       
yum-plugin-changelog.noarch            1.1.31-42.el7                       myrepo       
yum-plugin-ovl.noarch                  1.1.31-42.el7                       myrepo       
yum-plugin-tmprepo.noarch              1.1.31-42.el7                       myrepo       
yum-plugin-verify.noarch               1.1.31-42.el7                       myrepo       
yum-plugin-versionlock.noarch          1.1.31-42.el7                       myrepo       
yum-utils.noarch                       1.1.31-42.el7                       myrepo       
zenity.x86_64                          3.22.0-1.el7                        myrepo       
zip.x86_64                             3.0-11.el7                          myrepo       
zlib.i686                              1.2.7-17.el7                        myrepo       
zlib-devel.i686                        1.2.7-17.el7                        myrepo       
zlib-devel.x86_64                      1.2.7-17.el7                        myrepo       
zsh.x86_64                             5.0.2-28.el7                        myrepo       
zziplib.i686                           0.13.62-5.el7                       myrepo       
zziplib.x86_64                         0.13.62-5.el7                       myrepo       
yum网络仓库
  • 官方网络yum仓库(国外)
  • 阿里云yum仓库
  • 163yum仓库
Base/Extras/Updates: 默认国外官方源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

国外epel源
[root@localhost ~]# yum -y install epel-release

阿里云epel源
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo

软件的官方仓库

源查找方式基本一致,zabbix,mysql,saltstack,openstack等等,上官网找
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1

redhat7使用centos7的yum源

1.卸载红帽yum源

[root@localhost ~]# rpm -e $(rpm -qa|grep yum) --nodeps

2.删除所有repo相关文件

[root@localhost ~]# rm -f /etc/yum.conf
[root@localhost ~]# rm -rf /etc/yum.repos.d/
[root@localhost ~]# rm -rf /var/cache/yum

3.下载centos相关yum组件

[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm

如果没有wget命令则使用curl命令
[root@localhost ~]# curl -o yum-utils-1.1.31-50.el7.noarch.rpm  http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# curl -o yum-3.4.3-161.el7.centos.noarch.rpm  http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm
[root@localhost ~]# curl -o yum-metadata-parser-1.1.4-10.el7.x86_64.rpm  http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
[root@localhost ~]# curl -o yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm   http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
[root@localhost ~]# curl -o yum-updateonboot-1.1.31-50.el7.noarch.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-50.el7.noarch.rpm

3.安装所有相关组件

[root@localhost ~]# rpm -ivh yum-* --nodeps

4.下载base和epel仓库

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo

[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum管理软件

语法:yum [options] [command] [package …]
常用options:

–nogpgcheck    如果从网上下载包有时会检查gpgkey,此时可以使用此命令跳过gpgkey的检查
-y    自动回答为"yes"
-q    静默模式,安装时不输出信息至标准输出
–disablerepo=repoidglob   临时禁用此处指定的repo
–enablerepo=repoidglob    临时启用此处指定的repo
–noplugins    禁用所有插件

常用的command

list  列表
 all  默认项
 available  列出仓库中有的,但尚未安装的所有可用的包
 installed  列出已经安装的包
 updates  可用的升级

clean  清理缓存
 all  清理所有

makecache  创建缓存
(网路卡的时候建议做这一步)

repolist  显示仓库
 all
 enabled   默认项
 disabled   

install    安装
 yum install packages …

update   升级
 yum update packages […]
 update_to  升级为指定版本

downgrade package1 [package2 …] 降级

remove | erase  卸载

info  显示rpm -qi package的结果

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

search string1 [string2 …]  以指定的关键字搜索程序包名及summary信息

deplist package [package2 …]  显示指定包的依赖关系

history  查看yum的历史事务信息

localinstall  安装本地rpm包,自动解决依赖关系

grouplist  列出可用的组

groups install “group name”  安装一组软件
yum groups mark install “group name”(标记安装)

createrepo命令  创建yum仓库的元数据信息

具体实例

搜索软件包

列出软件仓库中可用的软件

[root@localhost ~]# yum list all
...
zulucrypt-libs.x86_64                      5.0.1-1.el7                     epel         
zvbi.x86_64                                0.2.35-1.el7                    epel         
zvbi-devel.x86_64                          0.2.35-1.el7                    epel         
zvbi-fonts.noarch                          0.2.35-1.el7                    epel         
zziplib.i686                               0.13.62-5.el7                   myrepo       
zziplib.x86_64                             0.13.62-5.el7                   myrepo       

列出软件包详情

[root@localhost ~]# yum info ftp
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
可安装的软件包
名称    :ftp
架构    :x86_64
版本    :0.17
发布    :67.el7
大小    :61 k
源    :myrepo
简介    : The standard UNIX FTP (File Transfer Protocol) client
安装软件包

安装软件只需要给出软件名称(自动解决依赖关系)

[root@localhost ~]# yum install vim
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 vim-enhanced.x86_64.2.7.4.160-2.el7 将被 安装
--> 正在处理依赖关系 vim-common = 2:7.4.160-2.el7,它被软件包 2:vim-enhanced-7.4.160-2.el7.x86_64 需要
--> 正在处理依赖关系 perl(:MODULE_COMPAT_5.16.3),它被软件包 2:vim-enhanced-7.4.160-2.el7.x86_64 需要
--> 正在处理依赖关系 libgpm.so.2()(64bit),它被软件包 2:vim-enhanced-7.4.160-2.el7.x86_64 需要
--> 正在处理依赖关系 libperl.so()(64bit),它被软件包 2:vim-enhanced-7.4.160-2.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gpm-libs.x86_64.0.1.20.7-5.el7 将被 安装
---> 软件包 perl.x86_64.4.5.16.3-292.el7 将被 安装
删除软件包
[root@localhost ~]# yum -y remove samba
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.6.2-8.el7 将被 删除
--> 解决依赖关系完成
...
与仓库相关的命令

列出yum源可用的软件仓库

[root@localhost ~]# yum repolist 
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
源标识                 源名称                                                     状态
epel/x86_64            Extra Packages for Enterprise Linux 7 - x86_64             13,415
myrepo                 myrepo                                                      4,986
repolist: 18,401

列出全部yum源可用和禁用的仓库

[root@localhost ~]# yum repolist all
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
源标识                源名称                                                状态
epel/x86_64           Extra Packages for Enterprise Linux 7 - x86_64        启用: 13,415
epel-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Debu 禁用
epel-source           Extra Packages for Enterprise Linux 7 - x86_64 - Sour 禁用
myrepo                myrepo                                                启用:  4,986
repolist: 18,401

查看这个文件或命令属于哪个包

[root@localhost ~]# yum provides /etc/my.cnf
[root@localhost ~]# yum provides cd
[root@localhost ~]# yum provides *bin/pstree
与缓存相关的命令

查看缓存的xml文件

[root@localhost ~]# ls /var/cache/yum/x86_64/7/base/

查看缓存软件包路径

[root@localhost ~]# ls /var/cache/yum/x86_64/7/
与包组相关的命令

列出已经安装和所有可使用的软件组

[root@localhost ~]# yum group list
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
可用的环境分组:
   最小安装
   基础设施服务器
   文件及打印服务器
   Cinnamon 桌面环境
   MATE 桌面环境
   基本网页服务器
   虚拟化主机
   带 GUI 的服务器

安装一整个组的软件

[root@localhost ~]# yum groupsinstall '输入法'
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
没有该命令:groupsinstall。请使用 /usr/bin/yum --help
[root@localhost ~]# yum groups install '输入法'
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
正在解决依赖关系
--> 正在检查事务
---> 软件包 ibus-chewing.x86_64.0.1.4.4-14.el7 将被 安装
--> 正在处理依赖关系 ibus >= 1.3,它被软件包 ibus-chewing-1.4.4-14.el7.x86_64 需要
--> 正在处理依赖关系 libchewing >= 0.3.3,它被软件包 ibus-chewing-1.4.4-14.el7.x86_64 需要
--> 正在处理依赖关系 GConf2,它被软件包 ibus-chewing-1.4.4-14.el7.x86_64 需要
--> 正在处理依赖关系 GConf2,它被软件包 ibus-chewing-1.4.4-14.el7.x86_64 需要

yum删除包组

[root@localhost ~]# yum groups remove -y '输入法'
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 ibus-chewing.x86_64.0.1.4.4-14.el7 将被 删除
---> 软件包 ibus-hangul.x86_64.0.1.4.2-10.el7 将被 删除
---> 软件包 ibus-kkc.x86_64.0.1.5.18-7.el7 将被 删除
---> 软件包 ibus-libpinyin.x86_64.0.1.6.91-4.el7 将被 删除
---> 软件包 ibus-m17n.x86_64.0.1.3.4-13.el7 将被 删除

实例

  1. 如何配置本地光盘yum仓库以及网络yum仓库
    本地仓库:配置方法查看上面的本地仓库
    网路仓库:
阿里云epel源
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo
  1. 如何使用yum安装 httpd php nginx
[root@localhost ~]# yum -y install httpd php nginx
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-67.el7,它被软件包 httpd-2.4.6-67.el7.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-67.el7.x86_64 需要
--> 正在处理依赖关系 libapr-1.so.0()(64bit),它被软件包 httpd-2.4.6-67.el7.x86_64 需要
--> 正在处理依赖关系 libaprutil-1.so.0()(64bit),它被软件包 httpd-2.4.6-67.el7.x86_64 需要
---> 软件包 nginx.x86_64.1.1.12.2-3.el7 将被 安装
  1. 如何配置yum缓存rpm包(至少阐述两种方式)
    第一种方法:
[root@localhost ~]# yum install httpd
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7 将被 安装
--> 解决依赖关系完成
...
总下载量:1.2 M
安装大小:3.7 M
Is this ok [y/d/N]: d

第二种方法:

[root@localhost ~]# yum -y install --downloadonly --downloaddir=/tmp httpd
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
...
总下载量:1.2 M
安装大小:3.7 M
Background downloading packages, then exiting:
exiting because "Download Only" specified
  1. 如何使用yum安装本地缓存好的rpm包
[root@localhost ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm
  1. 如何使用yum删除httpd软件包
[root@localhost ~]# yum -y remove httpd
已加载插件:product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7 将被 删除
--> 正在处理依赖关系 httpd-mmn = 20120211x8664,它被软件包 php-5.4.16-42.el7.x86_64 需要
--> 正在检查事务
---> 软件包 php.x86_64.0.5.4.16-42.el7 将被 删除

你可能感兴趣的:(yum工具的使用)