yum 与 rpm 是用在 Redhat,Fedora,CentOS  ...  这些系统上的包管理工具。它们有点区别,yum 可以自动去下载并且安装软件包,rpm 一般用来安装已经下载到本地的软件包( .rpm 格式的软件包)。

搜索包

在用 yum 安装包之前,如果不确定要安装的包是什么,可以先去搜索一下。搜索可以判断你想安装的包,能不能通过 yum 去安装,如果没有找到结果,你可能要手工为系统去添加新的仓库,或者把包下载到本地,再用 rpm 去安装。

比如你要安装 Apache 这个 Web 服务器,可以搜索一下 apache 或者 httpd ,httpd 是包的名字,apache 这个词包含在包的介绍里。

返回:

在搜索结果里,会包含找到的包的名字还有描述,被搜索的关键词会高亮显示。仔细看一下包的名字,然后再读一下描述,来判断这个包是不是自己想要的那个。注意包的名字里有一些特别的后缀,这些后缀表示的是包对硬件架构的最小需求。

  • .x86_64:表示在 64 位架构上运行的包。
  • .i686:一般表示 32 位的架构,常见的还有 .i386。
  • .noarch:表示这个包不受架构的限制。

查看包

知道了自己想要的包以后,可以再查看一下这个包的具体的信息,比如版本号,尺寸,所属仓库,网址等等。

比如查看一下要 httpd 这个包的信息:

返回:

Arch 表示包需要的硬件架构,Repo 是这个包所属的 Repository 。

安装包

安装包用的是 yum install,yum 很多命令需要用到超级管理员的权限,所以你需要在命令的前面加上 sudo ,比如 sudo yum install ...  或者先执行一下 su 这个命令。

在 su 命令后面没加任何选项,默认就是用 root 用户登录,会出现提示,让你输入密码,输入 root 用户的密码,然后回车,你现在的身份就变成 root 了。如果你用的是 vagrant ,默认 root 用户的密码是 vagrant 。

比如去安装一下 httpd :

返回:

如果要安装的包需要一些依赖,会出现提示 Dependencies Resolved ,会列出你打算安装的包,这里就是 httpd ,下面是这个包需要安装的 dependencies,然后给你个总结,说要安装的包一共有多少个,大小是多小,安装后的尺寸。Is this ok [y/N],问你要继续吗?输入 y 表示同意,之后又会出现一次确定,再次输入 y 。你可以在执行命令的时候,加上一个 -y 参数(yum install httpd -y),这样出现这种确认的提示会自动填上 y ,不需要自己动手了。

列出包

list 这个命令可以列出仓库里的或者已经安装到系统上的包。

列出所有可用的包

列出已经安装的包

在这些命令的后面可以加上 less ,这样可以分页显示:

也可以使用 grep ,找到包含特定字符的包,比如找出已经安装的名字里带 http 的包:

判断文件来自哪个包

用 provides 命令可以查看某个文件是来自哪个包。

试一下:

返回:

上面显示 /etc/httpd/conf/httpd.conf 这个文件,属于 httpd-2.2.15-39.el6.centos.x86_64 这个包。

仓库

先查看一下系统里所有被启用的仓库列表:

返回:

再去安装一个叫 epel( Extra Packages for Enterprise Linux ) 的仓库:

然后再用 yum repolist 查看一下系统上启动的仓库,你会看到刚才安装的 epel 仓库。用 yum list 命令查看所有的可用的包,会出现来自 epel 仓库的包,加上 grep 可以只显示 epel 这个仓库里的包。

升级

升级用的是 update ,后面可以加上要升级的包的名字,不加的话,会去升级所有的包。

删除包

移除不想要的包可以使用 remove 或者 erase,会把包还有可能的依赖删除掉。

比如:

加上 -y 参数,不需要手工确认了。