首页 > Linux教程 > 正文

Linux软件管理之YUM软件管理

在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

上一篇:Centos6.3下Apache配置https证书访问
下一篇:服务器故障分析十四部曲

PythonTab微信公众号:

Python技术交流互助群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854