Linux软件包管理神器-->YUM

简介:

##########################################

AUTHOR:          Honway_Liu
DATE:                 2012-02-24
##########################################
 
一、什么是YUM
二、为什么要使用YUM
三、怎样使用YUM
四、YUM的组成及工作原理
五、YUM的配置
六、YUM的简单使用
##########################################
 

一、什么是YUM

          YUM是“Yellow dog Updater, Modified”的缩写,可执行程序名为yumYUM是一个在FedoraRedHat以及SUSECentOS中的Shell前端软件包管理器。在红帽企业版Linux 5中引入YUM的重要原因之一,便是YUM能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,便于管理大量系统的更新问题。
 

二、为什么要使用YUM

          使用yum来安装软件包,要比使用rpm命令安装软件包方便的太多太多了。最主要的一点,我想还是因为yum可以自动的解决依赖关系吧。使用过linux安装二进制软件包的人应该都遇到过rpm包之间的依赖关系,特别是循环依赖,真的是很让人头疼,有时候为了安装一个软件包,不得不浪费一整天的时间。yum自动解决依赖关系,为我们缩短了安装软件包所使用的时间,提高了工作效率,像这样一个堪称尤物的家伙,怎么能让人不爱呢。yum也可以使用一条命令来直接升级系统上所有要升级的软件包,你说,不爱她你爱谁呢。
 

三、怎样使用YUM

          yum 的使用其实很简单,我们只需要把yum软件包安装好,然后改下yum源配置文件就可以了,就可以从别人的yum源上自动下载软件包,然后自动安装。不过本文章的意义不是在于教你改配置文件,然后安装yum包,然后再利用yum命令来安装软件包,而是要自己动手,自己做YUM源,自己使用自己的YUM源,充分的理解YUM的工作原理。
 

四、YUM的组成及工作原理

          yum 由两部分组成,一部分是yum源(或称之为yum仓库|其实就是软件包仓库),另一部分就是yum的客户端,说白了就是安装好yum软件,可以使用yum命令的客户机。
 
     当我们使用yum命令来安装一个软件包的时候,yum会根据yum的配置文件(/etc/yum.repos.d/*.repo)来查找yum源,然后下载yum源上的数据文件缓存到本地,以便再次查询的时候,提高查询速度。只有第一次才会下载缓存文件。完成之后,如果要安装的软件包在软件仓库里,那么就开始根据服务器上依赖关系文件里面的定义,看是不是有依赖其它软件包,如果有,会提示用户有依赖关系,是不是要安装,用户回答y的时候,开始自动解决依赖关系直到完成软件包的安装。如果没依赖关系,也会提示用户,找到了要安装的软件包,是不是现在安装,如果用户输入y,则开始安装,如果直接回车,默认是不安装的。一个yum命令,会开启一个yum事务,所以,如果你正在执行yum命令,然后别人登录到了你在的服务器,这时候他是不能执行yum命令的,这时候的yum进程是被锁定的,只有当你的yum命令执行完成后,事务结束,别人才可以使用yum命令。

五、YUM的配置

5.1      配置客户端

          客户端的配置为两步,一是安装软件包,二是改配置文件

 
 
我的机器上安装了以上软件包,直接使用rpm -ivh就可以安装了,安装完成后,这一步就算是完成了


5.1.2  更改配置文件


yum 的配置文件有两部分:主配置文件和yum源配置文件
     主配置文件
[root@Honway ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum                  缓存目录
keepcache=0              是否保存缓存
debuglevel=2    调试级别
logfile=/var/log/yum.log  日志文件
distroverpkg=redhat-release
tolerant=1         允许出错 ( 如果有多个软件包 , 当有某个包已经安装的时候 , 是否继续 ,1 表示允许 )
exactarch=1    
obsoletes=1
gpgcheck=1       安装的时候 , 是不是检测检测软件包的签名信息
plugins=1  启用插件功能
 
 
 
 
 
      

再来看一下yum怎么指定yum源的,文件位于/etc/yum.repos.d/目录下,在这个目录中所有以.repo结尾的文件,都会被yum认为是yumyum源配置文件。其写法如下

[id]
name=custmed yum repository
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0[0 禁用 |1 启用 ]
enabled=0[0 禁用 |1 启用 ] ( 默认开启 , 该项可不写 )
 
 
其中id就是一个名字,可以随便写。
name 是对id的一个描述信息。
baseurl 这里有三种写法,也代表了yum支持的三种协议,远程协议有ftp://http://,本地yum源的file:/// 是三条斜线
gpgcheck 是不是检测签名的
enabled 是不是启用这一项,一个yum.repo配置文件中,可以写多项,每一项的都是以[id]开始的,每一个[id]都可以认为是一个独立的段

5.2      配置YUM源(YUM仓库|YUM服务器端)

          要配置YUM源,我们要使用一个命令,叫做createrepo,这个软件包需要安装,在系统光盘Server目录中(RHEL5)直接使用rpm -ivh命令安装即可。
     安装完成后,就可以开始创建yum源了。为了演示效果,我这里拷贝一下光盘VT目录,对VT进行创建YUM源。


直接使用命令createrepo 后面跟要对哪些软件包进行创建(这里指的是软件包所在的目录名),创建完成后,就会在该目录出现一个目录,叫repodate



repodate 目录: yum源的元数据文件目录
    primary.xml.gz   yum源中定义所有rpm文件及其彼此间的依赖关系,还包含了每一个rpm包中的文件名
    filelists.xml.gz:  yum源中每一个包中文件的文件相关信息;
    other.xml.gz:    额外信息,比如changelog
    repomd.xml   校验码和时间戳
    comps-rhel5-server-core.xml  软件包的分组信息;(除非有分组,否则不会出现,有时候分组需要自己手动创建)
这样,一个YUM源就算是创建完成了,是不是很EASY啊,创建完成后,我们还可以接着对其它的软件包进行创建,可以对Server目录或者其它目录进行创建,也可以对我们自己制作的RPM包进行创建,把要创建YUM源的所有软件包放到一个目录里面,然后使用createrepo后面跟软件包所在的目录就可以了。
到这里,我们就算是创建完YUM源了我们改一下yum客户端配置文件,就可以直接使用了,因为客户端和服务端是在同一台机器上,所以我们可以不用FTPHTTP服务,直接使用file:///

六、YUM的简单使用

yum [options] [command] [package ...]
 command is one of:
        * install package1 [package2] [...]
        * update [package1] [package2] [...]
        * check-update
        * upgrade [package1] [package2] [...]
        * remove | erase package1 [package2] [...]
        * list [...]
                            all | installed | available | updates
        * info [...]
        * provides | whatprovides feature1 [feature2] [...]          查询指定的文件是由哪个软件包提供的
        * clean [ packages | headers | metadata | dbcache | all ]      清除缓存
        * makecache
        * groupinstall group1 [group2] [...]  安装指定的软件包组
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]          显示软件包组
        * groupremove group1 [group2] [...]                 删除指定的包组
        * groupinfo group1 [...]                       查询指定包组的信息
        * search string1 [string2] [...]
        * shell [filename]
        * resolvedep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2] [...]         安装下载好的 rpm 文件
        * localupdate rpmfile1 [rpmfile2] [...]                升级下载到本地的 rpm
        * reinstall package1 [package2] [...]         重装软件包 , 不删除原来的 .
        * downgrade package1 [package2] [...]   降级软件包
        * deplist package1 [package2] [...]
        * repolist [all|enabled|disabled]               显示 yum
        * help [command]              显示指定软件包的 help 信息
          以上是从man yum里面弄出来的,只对一些常见的进行了解释,其它的,自己翻译自己理解吧,呵呵。
 
下面贴下自己的yum源配置文件。
[Server]
name=Server
baseurl=http://192.168.0.254/pub/Server
gpgcheck=0
enabled=1
 
[VT]
name=VT
baseurl=http://192.168.0.254/pub/VT
gpgcheck=0
enabled=1
 
[Cluster]
name=Cluster
baseurl=http://192.168.0.254/pub/Cluster
gpgeheck=0
 
[ClusterStorage]
name=ClusterStorage
baseurl=ftp://192.168.0.254/pub/ClusterStorage
gpgcheck=0
enabled=1


本文转自 gm100861 51CTO博客,原文链接:http://blog.51cto.com/gm100861/788535

相关文章
|
15天前
|
Linux C语言
linux yum安装ffmpeg 图文详解
linux yum安装ffmpeg 图文详解
35 0
|
15天前
|
Linux
linux yum 安装rar和unrar
linux yum 安装rar和unrar
50 0
|
17天前
|
Ubuntu Linux 编译器
【Linux】4. 开发工具的使用(yum/vim)
【Linux】4. 开发工具的使用(yum/vim)
43 2
|
15天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
人工智能 数据可视化 Linux
【linux基础(五)】Linux中的开发工具(上)---yum和vim
【linux基础(五)】Linux中的开发工具(上)---yum和vim
|
9天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
101 2
|
15天前
|
缓存 Linux
linux centos7 挂载本地iso yum源
linux centos7 挂载本地iso yum源
66 0
|
16天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0
|
23天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
26天前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
17 2