在Linux系统下通常使用的软件管理机制有源代码的形式、以及RPM(redhat Package Manager)包管理机制,在这篇随笔里面,我们将详细讲解Linux软件管理只YUM软件管理。
【注意:】首先必须先明确一点,yum并不是一种新的软件包管理形式,我们的rpm则是一种新的软件包管理形式,yum只是rpm的一个前端程序,yum最主要的功能就是帮助我们解决软件包的依赖性问题!!!
在上一篇随笔里面我们详细比较过了基于源代码形式安装以及RPM软件包安装的优缺点。rpm软件包形式管理软件虽然方便,但是需要我们手工的去解决软件包的依赖性问题,比如安装当前这个软件我需要A软件的支持,安装A软件又需要用到了B软件,这样我们就必须手动的去安装好该软件所依赖的所有的rpm包,有的时候安装一个软件可能需要首先安装好1个或者多个(有时多达上百个)其他的软件,这样我们在手工解决时就非常的麻烦。所以我们在这里就需要使用YUM来解决这个问题!
YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
一、YUM的特点主要有以下几点:
①自动解决依赖性问题 这个是yum最主要的功能,我们可以通过yum来自动的解决软件包直接的依赖性问题
②可以对RPM进行分组,并基于组来进行安装操作 有时候我们可能需要对软件进行分组,比如基于开发的软件放在一组,桌面软件又放在一组,在传统的RPM包管理机制里,我们需要自己手动的去将每一个组里面的软件都安装了才行,而yum就可以方便的对RPM进行分组,我只需要安装这个组,那么这个组里面的所有软件都会自动给我们安装好。
③引入了仓库的概念,支持多个仓库 通过yum来进行软件的安装其实就是基于仓库这个概念的,我将所有的rpm软件包都事先放在一个仓库里面,然后yum就可以在这个仓库里面寻找我们需要安装的软件,找到了就可以自动安装,没找到则就安装不了
④配置简单 在现在的RHEL、CentOS里面基本上都使用yum的方式来进行软件的安装,其主要原因也是基于其仓库的配置非常的简单,这个将在下面进行详细论述
二、YUM
yum里引入了仓库的概念,仓库里其实就是用来存放我们所有现有的rpm软件包,因为yum就是基于rpm软件包管理的一个前端程序,所以yum也是通过rpm来进行软件的安装的。当使用yum进行软件安装时,如果存在依赖关系,那么yun也会自动的去仓库里面去寻找所依赖的rpm软件包,并自动安装,解决软件包的依赖问题。
这个仓库既可以是本地的,也可以是互联网上的,可以通过http、ftp或者nfs等形式使用集中的、统一的网络仓库
三、YUM仓库
yum使用的是仓库来保持管理我们的rpm软件包,仓库的配置文件是存放在 /etc/yum.repos.d/ 这个文件目录下,我们可以进入到该目录,查看一下里面的信息
[root@xiaoluo home]# cd /etc/yum.repos.d/
[root@xiaoluo yum.repos.d]# ls -l
总用量 16
-rw-r--r--. 1 root root 1926 2月 25 16:57 CentOS-Base.repo
-rw-r--r--. 1 root root 638 2月 25 16:57 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 2月 25 16:57 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 2月 25 16:57 CentOS-Vault.repo
我们看到在该目录下一共有四个yum的配置文件(每个配置文件必须是以.repo结尾),CentOS系统会默认的给出我们这四个yum仓库的配置文件,里面保存着非常多的网络仓库信息,RHEL系统默认可能就没有这些yum仓库的配置文件,如果我们需要这些,我们必须向红帽购买相应的服务才行。
我们首先来看一下yum仓库的配置格式:
[xiaoluo] // 这个就是我们仓库的名字
name=This is xiaoluo's rpm soft repo // 这个虽然写着是name,但是其实后面通常是写一些对该仓库进行描述的语句
baseurl=http://www.xiaoluo.com/yum/soft/CentOS/x86_64/rpms/ // 这个是仓库的地址,可以是http、ftp、nfs等网络仓库的地址,也可以是我们本地仓库的地址
enabled=1 // enabled=1表示我们使用这个仓库,默认就是enabled=1
gpgcheck=1 // 是否启用软件校验,基于安全考虑,主流的Linux发行版本都会对一些常用的rpm进行签名操作
以上就是yum仓库的基本的配置格式,当然可能还有其他的一些配置字段,下面我们打开CentOS下 /etc/yum.repos.d/ 这个目录里面的yum仓库配置文件来看看其里面的内容
[root@xiaoluo yum.repos.d]# cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
...
我们看到每一个这样的yum仓库配置文件里面都包含了好多个yum仓库的配置信息,在上面有一个mirrorlist选项,这个选项的主要作用就是去动态的获取我们的baseurl地址,因为如果yum仓库的网络地址修改以后,我们不需要每次都去修改baseurl来更换地址,只需要设置mirrorlist这个选项,它就会动态的去获取我们所需要的baseurl的地址。其中的gpgkey这个字段就是设置我们启用校验时所需要的密钥。
使用yum仓库需要注意一下几点:
①仓库可以使用http、ftp、file、nfs等方式
②yum配置文件必须以.repo结尾
③一个yum配置文件里面可以存放多个仓库的配置信息
④/etc/yum.repos.d/ 目录下可以存放多个yum配置文件
四、yum基本命令
yum管理软件的常用命令有如下几个:
安装软件:yum install software-name
删除软件:yum remove software-name
升级软件:yum update software-name
在这里我们通过安装 tigervnc 这个软件来试验一下:
[root@xiaoluo ~]# yum install tigervnc
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tigervnc.x86_64 0:1.1.0-5.el6_4.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
tigervnc x86_64 1.1.0-5.el6_4.1 updates 258 k
Transaction Summary
================================================================================
Install 1 Package(s)
Total download size: 258 k
Installed size: 644 k
Is this ok [y/N]: y
Downloading Packages:
tigervnc-1.1.0-5.el6_4.1.x86_64.rpm | 258 kB 00:03
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : tigervnc-1.1.0-5.el6_4.1.x86_64 1/1
Verifying : tigervnc-1.1.0-5.el6_4.1.x86_64 1/1
Installed:
tigervnc.x86_64 0:1.1.0-5.el6_4.1
Complete!
如果我们需要删除该软件,则可以通过 yum remove softname 来删除软件,通过 yum update softname 命令可以来更新某个软件
五、yum查询命令
基于关键字搜索软件:yum search 关键字
列出全部的、安装的、最近的、更新的软件 yum list (all | installed | recent | updates)
列出YUM仓库中全部软件:yum list all
显示软件信息:yum info packagename
查询某个rpm软件包含该目标文件 yum whatprovides filename
因为我们使用yum来进行软件安装时,必须要写全软件的名字,所以如果我们对某个软件记不太清楚,需要搜索某个软件的信息,可以使用 yum search 软件名字的关键字 来进行搜索
[root@xiaoluo ~]# yum search mysql
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
...
我们如果需要列出YUM仓库中全部软件,可以使用 yum list all 命令来查看
[root@xiaoluo ~]# yum list all
第一列就是我们的软件的名字,第二列显示的是该软件的版本信息以及适用的操作系统平台,第三列显示的软件属于哪个仓库,仓库的名字
如果需要查看已经安装的 yum 软件,则使用 yum list installed 命令即可
[root@xiaoluo ~]# yum list installed
***********************************此处省略N个字*****************************************
yum-metadata-parser.x86_64
1.1.2-16.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-fastestmirror.noarch
1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-security.noarch
1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-utils.noarch 1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zd1211-firmware.noarch 1.4-4.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zenity.x86_64 2.28.0-1.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zip.x86_64 3.0-1.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zlib.x86_64 1.2.3-29.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zlib-devel.x86_64 1.2.3-29.el6 @anaconda-CentOS-201303020151.x86_64/6.4 // @ 符号就表示该软件已经被安装
如果我们要查看某个软件的详细信息,可以使用 yum info softname 命令,这个命令与 rpm -qi softname 的作用完全一样
root@xiaoluo ~]# yum info tigervnc
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
Installed Packages
Name : tigervnc
Arch : x86_64
Version : 1.1.0
Release : 5.el6_4.1
Size : 644 k
Repo : installed
From repo : updates
Summary : A TigerVNC remote display system
URL : http://www.tigervnc.com
License : GPLv2+
Description : Virtual Network Computing (VNC) is a remote display system which
: allows you to view a computing 'desktop' environment not only on
: the machine where it is running, but from anywhere on the Internet
: and from a wide variety of machine architectures. This package
: contains a client which will allow you to connect to other
: desktops running a VNC server.
如果我们需要查看哪个rpm文件包含了指定的目标文件,可以使用 yum whatprovides filename 命令来查看:
[root@xiaoluo ~]# yum whatprovides httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
httpd-2.2.15-28.el6.centos.x86_64 : Apache HTTP Server
Repo : updates
Matched from:
httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server
Repo : base
Matched from:
httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server
Repo : installed
Matched from:
Other : Provides-match: httpd