一、 Linux系统中安装软件的三种方法
在
Linux系统中安装软件有三种方法:源代码安装、RPM包安装、YUM安装。
这其中最古老的是源码安装,这种方法虽然古老并且复杂,但仍然有很多人在用。这是由于在
Linux系统中使用的绝大多数软件都是开源软件,软件作者在发布软件时直接提供的就是软件的源代码。用户在取得应用软件的源码文件后,可以根据自身需求对软件进行修改或定制,然后在自己的系统上重新编译,即可生成能在该系统上执行的程序文件。通过源码安装,用户可以获得最新的应用程序,可以定制更灵活、丰富的功能,而且使软件可以跨越计算机平台,在所有版本的Linux系统中都能使用。
但源码安装方式过于复杂,耗时又长,对用户的软件开发能力要求也比较高。为此
Red Hat特别设计了一种名为RPM(RedHat Packet Manager)的软件包管理系统,RPM是一种已经编译并封装好的软件包,用户可以直接安装使用。通过RPM,用户可以更加轻松方便地管理系统中的所有软件。RPM软件包只能在使用RPM机制的Linux操作系统中使用,如RHEL、Fdeora、Suse等。在Linux世界中,还有另外一种名为DEB的软件包管理机制,可以在Debian、Ubuntu等系统中使用。相比较而言,还是RPM安装包应用更为广泛,基本已成为Linux系统中软件安装包事实上的标准。但是RPM也有一个很大的缺点,即RPM软件包之间存在着复杂的依赖关系。在多数情况下,一个软件都是由多个相互依赖的RPM软件包组成的,而大部分的RPM包又有相互之间的依赖关系。例如,安装A软件需要B软件的支持,而安装B软件又需要C软件的支持,那么在安装A软件之前,必须先安装C软件,再安装B软件,最后才能安装A,有时甚至还可能会出现死循环。所以后来又出现了一种更加简单、更加人性化的软件安装方法,这就是YUM安装。
YUM(
Yellow dog Updater,Modified)是一个基于RPM却胜于RPM的软件管理工具,它的最大优点是可以自动解决RPM软件包间的依赖性问题,从而可以更轻松的管理Linux系统中的软件。从RHEL5开始,Red Hat就推荐用yum作为软件安装的首选方式,所以今天我们就首先来学习yum安装。
二、配置yum源
要使用
YUM安装方式,首先必须要配置好YUM源(也称为“yum仓库”),即指定所有RPM软件包的存放位置。
如果是合法的
RHEL用户,并且已经成功地在红帽官方的Red Hat Network(RHN)上注册,那么RHEL系统会自动使用RHN作为默认yum源,也就是说我们安装的所有软件都可以直接来自红帽官网。但估计有这样实力的人并不多,何况是对于我们初学者,所以更多的情况下我们需要自己来配置yum源。
由于在
RHEL6的系统光盘中已经集成了绝大多数应用软件的RPM包,因此一般可以指定系统光盘作为yum源,或者是指定网络中的某台FTP或Web服务器作为yum源。
设置
yum源需要配置定义文件,定义文件必须存放在指定的“/etc/yum.repos.d/”目录中,而且必须以“.repo”作为扩展名。
下面我们就配置一个名为“
dvd.repo”、以系统光盘作为yum源的定义文件。
首先挂载光盘:
# mount /dev/cdrom /mnt/cdrom
然后生成并配置
yum源定义文件:
# vim /etc/yum.repos.d/dvd.repo
文件中各行的含义:
(1)[dvd]:yum源的识别名称,可自由定义。
(2)name=rhel6 dvd:对yum源的描述,可自由定义。
(3)baseurl=file:///mnt/cdrom:指定yum源的URL地址,这是整个定义文件中最重要的一行。URL地址可以有三种不同的表示方法:
- 指向网络中的Web服务器:baserul=http://……
- 指向网络中的FTP服务器:baserul=ftp://……
- 指向本机中的某个目录:baserul= file://……
所以“baseurl=file:///mnt/cdrom”就表示URL指向的是本机中的“/mnt/cdrom”目录。
(
4) enabled=1:启用当前yum源,如果设为0则表示禁用。默认值为1。
(
5)gpgcheck=1:指定在安装yum源中的软件包之前是否检查RPM软件包的数字签名,1表示检查,0表示不检查。
在
RHEL6系统光盘中的RPM软件包都是由Red Hat封装制作的,这称为官方软件包。普通用户自己也可以制作封装RPM包,这就称为第三方软件包。对于第三方的软件包,很难保证其安全性,而且即使是官方软件包,也有可能被篡改,所以Red Hat就在自己的官方软件包中用私钥进行了数字签名,并将公钥自动放置在已经安装好的Linux系统中,也就是由下面的gpgkey项所指定的位置。这样在安装RPM包时就要先检查数字签名,只有检查通过才能继续安装。
当然也可以将
gpgcheck项设置为0,这样就无需检查数字签名了,下面的gpgkey项也就无需设置。在我们的学习或实验环境中可以将gpgcheck设为0,以简化操作。但在生产环境中,为了保证安全性,一定要将该项设置为1。
在同一个系统中可以同时配置并启用多个
yum源,但是必须要保证这些yum源都是正确的,如果其中有任何一个yum源出现错误,都会导致无法正常安装软件。
yum源设置好之后,可以执行“
yum list”命令进行检测,该命令可以列出系统中已经安装的以及yum源中所有的软件包。
三、安装/卸载软件
安装软件使用“
yum install”命令,下面使用yum来安装一款名叫telent-server的软件。
使用
yum方式安装软件时,无论当前处在哪个工作目录,都会自动从yum源里查找所要安装的软件包。
# yum install telnet-server
yum会自动检查软件包之间的依赖关系,可以发现要安装telnet-server,还必须要安装一个依赖包xinetd。系统询问是否确认安装这两款软件,输入“y”,按下回车键,就可以开始安装了。软件如果正确安装,在最后将出现“Complete!”的提示。
卸载软件可以使用“yum remove”命令,如将刚才安装的telnet-server软件卸载掉:
按“y”确认之后,就可以将软件卸载掉了。
四、yum命令的其它用法
(
1)yum info:查看软件包的信息。
例,查看
system-config-lvm软件包的信息。
从中可以查看到软件包的版本、适用平台、软件描述等信息。尤其是对一些不熟悉的软件可以通过该命令了解其基本功能。
(
2)yum clean all:清除缓存
在
yum系统中会建立一个名为yum缓存的空间,用来存储一些yum的数据,以提高yum的执行效率。在大部分情况下无需费心管理yum缓存中的数据,但有时如果发现yum运行不太正常,这也许是由yum缓存错误造成的,此时就可以用“yum clean all”命令清除缓存以解决问题。
五、yum故障排错
在讲课的过程中发现不少同学在使用
yum时出现问题,下面说一下排错的思路:
(
1)确认光盘是否已经挂载。
(
2)检查yum源定义文件是否存在错误。这个文件要求非常严格,其中任何一个单词或字母出现错误,都会导致yum出现问题。
(
3)检查是否还有别的yum源定义文件。系统中可能会存在一些默认设置的yum源,最好将这些yum源设为禁用,或者是将其定义文件删除。
(
4)用“yum clean all”命令清除缓存。
(
5)执行“yum list”命令检测能否正确列出yum源中的软件包。