##rpm软件包管理器

    #一种用于互联网下载包&打包&安装软件包的工具,扩展名.rpm。

    #是redhat软件包管理工具的缩写。rpm文件在linux系统中安装最为简便。


## rpm命令语法

rpm [选项] (安装软件包的路径)


##选项

#安装

-i    安装
-h    以#显示进度,每个#表示2%
-v    显示详细过程
-vv   显示更详细过程信息

rpm -ivh        安装一个软件包,并显示详细的过程信息

--nodeps        忽略依赖关系,例如在安装redis软件时,需要libredis依赖,--dodeps选项则使的安装redis.rpm软件包时不提示需要安装libredis依赖包。
--replacepkgs   重新安装,替换原有已安装的软件包
--force         强行安装,可以实现重装或降级

rpm -ivh --nodeps xxx.rpm

#软件包升级

-U    升级软件包
-F    只升级软件包,如果无需升级或软件之前未安装,则退出

rpm -Uvh xxx.rpm    如果有老版本,则升级;没有,则安装
rpm -Fvh xxx.rpm    如果有老版本,则升级;没有,则退出

#卸载软件包

-e    卸载

rpm -e xxx.rpm    
    ##卸载指定软件包,但是如果已安装包对与其他软件存在依赖关系,则提示无法卸载。相比yum remove,强制卸载,不论是否存在依赖关系。

#查询软件安装信息

-q    查询指定的软件包是否安装
-qa   查询已安装的所有软件包
    ##rpm -qa |grep redis    在所有安装的软件包中查找包含redis关键字的软件
-qi    查询指定软件包的说明信息
-qc    查询指定已安装软件包的配置文件
-ql    查询指定已软件包安装后生成的文件列表
-qd    查询指定包安装的帮助文件
-q --scripts xxx.rpm    查询指定的已安装软件包中包含的脚本
-qf /path/to/file       查询指定文件是由哪个软件安装后生成的


## yum软件包管理工具

#yum主要功能是更方便添加/删除/更新rpm包,自动解决rpm包安装时的各种依赖关系,便于管理大量系统的软件更新问题。

#yum优点

    #(1)可以同时配置多个资源库,也可以搭建本地yum源。yum源配置简洁

    #(2)自动解决rpm包安装/卸载时的依赖关系,自动安装或删除依赖包

##yum更新

yum check-update
    #检查已安装的软件包中有哪些可以更新
yum -y update MariaDB-client
    #更新指定的已安装软件包
yum -y update
    #系统更新,即更新所有已安装软件包中可以更新的rpm包,包括kernel内核。
    #该命令谨慎,最好指定软件包进行升级

##yum安装

yum -y install xxx    
    #安装指定软件

##yum卸载

yum remove xxx
    #卸载指定软件,同时删除与该软件有依赖关系的包
    #相比rpm -e xxx,也会卸载软件,但是对依赖包不处理。一般选择rpm -e卸载,放纵其他依赖包被删除
yum deplist xxx
    #查看xxx软件的依赖情况

##yum本地缓存

yum makecache    
    #将yum源中软件都缓存到本地
yum -C search xxx
    #在已缓存到本地软件包中查找指定的软件包。相比yum search xxx(在网上的yum查找)速度快很多
    
yum clean all    
    #清除本地所有缓存,包括缓存的软件包&旧的headers
yum clean xxx    
    #清空缓存在本地的xxx软件包
yum clean headers
    #清空缓存在本地的headers
yum clean oldheaders
    #清空缓存在本地旧的headers


##yum本地源配置

##主要文件

#/etc/yum.conf               #为所有仓库提供公共配置

#/etc/yum.repos.d/*.repo     #为仓库的指向提供配置

[root@transfor ~]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

##配置自定义.repo模块

[root@transfor ~]# cat /etc/yum.repos.d/epel.repo 
[epel]        #仓库名称,不能重复
name=Extra Packages for Enterprise Linux 7 - $basearch            ##对仓库的描述,此项必须有
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch   #配置仓库的路径,用于指定一个url
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch    #指向一个镜像列表,里面有多个url。(一般只保留一个baseurl或者mirrorlist,启用一个,则另一个注释)
failovermethod=priority        ##
enabled=1                 ##是否启用当前仓库,值为1/0,默认1(启用)
gpgcheck=1                ##是否需要gpg校验,值为1/0,默认1(启用)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7    ##验证rpm包的密钥文件路径,该文件可以在远程服务器上,或者本地。

#以下内容,自定时可以不配置
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

##PS:总结
#()*.repo模块必要部分:[]仓库名,name=仓库描述,baseurl=或者mirrorlist=指向源文件的地址,enabled=是否启用该仓库
gpgcheck=是否gpg校验(若gpgcheck=0,则不需gpgkey=;若gpgcheck=1,则需要配置gpgkey=)


##命令行配置yum源仓库 yum-config-manager

    #默认不安装yum-config-manager,需要先安装yum-config-manager工具

    #yum -y install yum-utils.noarch

yum-config-manager  --add-repo=http://10.10.86.43/Centos7_64_x86                  
    #Loaded plugins: fastestmirror
    #adding repo from: http://10.10.86.43/Centos7_64_x86

    #[10.10.86.43_Centos7_64_x86]
    #name=added from: http://10.10.86.43/Centos7_64_x86
    #baseurl=http://10.10.86.43/Centos7_64_x86
    #enabled=1
#自动创建以url地址为仓库名的新仓库
ll /etc/yum.repos.d/
total 48
-rw-r--r-- 1 root root  134 Sep 13 15:45 10.10.86.43_Centos7_64_x86.repo
...

yum-config-manager --enable "10.10.86.43_Centos7_64_x86"
    #启用仓库
yum-config-manager --disable "10.10.86.43_Centos7_64_x86"
    #禁用仓库