一、rpm 命令
RPM 是 RedHat Package Manager 的缩写,是由 RedHat 公司开发的软件包安装和管理程序,相当于 Windows 里的 exe 文件,使用相应的命令即可在 Linux 中安装所要安装的软件包。除了 rpm 外,Linux 阵营中也还有 deb 软件包管理工具,本人使用的 Deepin 桌面发行版用的就是 deb 软件包管理程序安装软件的。
- 1. rpm 文件名详解,例如:
mysql-libs-5.1.73-8.el6_8.x86_64.rpm
1 2 3
| mysql-libs :软件名称 5.1.73 :软件版本号,数值依次表示主版本、 次版本、修正版本 8.el6_8.x86_64 :8表示软件发布次数,el6表示适合的系统平台,x86_64表示适合的硬件平台,noarch 表示32、64位皆可用。
|
- 2. rpm 安装命令如下:
RPM 软件的安装、卸载、更新只有 root 权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。
1 2 3 4
| rpm -ivh ×××.rpm(全路径或相对路径) -i:install ,安装 -v:verbose ,提示 -h:hash ,进度条
|
1 2 3 4 5 6
| rpm -qa :查询安装的所有rpm软件 rpm -qa |grep python:通过管道命令查询是否安装 python rpm -q jdk :查询是否安装 jdk rpm -qi python:查询 python 软件包详细信息 rpm -ql python:查询 python 软件包安装到了哪个目录 rpm -qf [fileName]:查询名为 fileName 的软件所属的软件包
|
1
| rpm -e python :删除 python
|
注意:如果其他软件依赖需要删除的软件包,卸载时会发生依赖报错,错误信息如下图:

使用 --nodeps 参数即可强制删除(不推荐,可能会引发其他软件没法使用),例如:
二、yum 命令
Yum 是 Yellow dog updater 的缩写,是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器,基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,使用方便快捷。
1 2 3 4 5
| yum info python yum list python yum list yum seach python yum groupinfo name
|
1 2 3
| yum install yum install python yum groupinsall name
|
1 2 3 4 5
| yum update yum update python yum check-update yum upgrade python yum groupupdate name
|
1 2 3
| yum remove python yum groupremove name yum deplist python
|
1 2 3 4
| yum clean packages yum clean headers yum clean oldheaders yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
|
三、yum 源
yum 在 Linux 也是一个软件,我们也可以使用 npm 命令来安装和卸载这款软件,但是 RedHat 系列发行版的 Linux 都是默认内置了这个功能的,这里只管使用就好。使用如下命令可以查看 yum 软件包管理器相关的所有文件:

yum 命令是从服务器上拉区 rpm 包来安装和解决依赖问题的,因为服务器默认往往都是指向国外服务器的,对于国内用户来说下载安装速度往往太慢,所以更改 yum 服务器软件源就显得很重要了。从上图中可以看到 yum 软件中包含有 /etc/yum.conf 文件和 /etc/yum.repos.d 目录,这些都是与 yum 相关的配置文件和目录。
- 1.
/etc/yum.conf
用来储存 yum 配置信息的全局配置文件(默认一般都不必改动),具体内容解释如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| [main] #cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。 cachedir=/var/cache/yum/$basearch/$releasever #keepcache:是否保留缓存内容,0:表示安装后删除软件包,1表示安装后保留软件包 keepcache=1 #debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录 debuglevel=2 #logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新。 logfile=/var/log/yum.log #pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。 pkgpolicy=newest #指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。 distroverpkg=CentOS-release #tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。 tolerent=1 #exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。 exactarch=1 #retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。 retries=20 #此选项在进行发行版跨版本升级的时候会用到。 obsoletes=1 #gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。 gpgcheck=1 #默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的 reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件 #exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。 exclude=xxx #该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。 reposdir=[包含 .repo 文件的目录的绝对路径]
|
- 2.
/etc/yum.repos.d
定义了每个源/服务器的具体配置,一个文件往往配置了一个或者多个软件仓库的细节内容,可以修改这些文件对 yum 源进行相关配置,配置信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了则后面覆盖前面的 [serverid] #name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates name=Some name for this server #baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是: #baseurl=url://server1/path/to/repository/ #url://server2/path/to/repository/ #url://server3/path/to/repository/ #其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但#baseurl只能有一个,也就是说不能像如下格式: #baseurl=url://server1/path/to/repository/ #baseurl=url://server2/path/to/repository/ #baseurl=url://server3/path/to/repository/ #其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。 baseurl=url://path/to/repository/ #指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换 #成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。 #解释下几个变量 #$releasever 发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。 #$arch cpu体系,如i686,athlon等 #$basearch cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。 #url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如: gpgcheck=1 exclude=gaim #其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用 #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch #failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。 failovermethod=priority #当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。 #通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库 enabled=[1 or 0]
|
- 3. 修改源为阿里
创建一个 backup 目录用于备份原 CentOS-Base.repo,避免出错后可以恢复原状
1 2 3
| cd /etc/yum.repos.d mkdir backup mv CentOS-Base.repo backup/
|
使用 wget 命令下载阿里云的 repo 文件
1 2 3
| wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
|
重命名阿里云源文件名
1
| mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
|
清除原有云缓存
重建缓存
查看配置的 yum 源是否正常