Linux软件包的管理--YUM

在上一篇博客《Linux软件包的管理--RPM包管理器》中详细讲述了RPM,但是存在一个问题?就是RPM不能自动解决软件包之间的依赖性。所以就出现了增强版的RPM管理器-YUM。

以下讲解以CentOS6系列为例。

一、YUM介绍

YUM(Yellowdog Updater Modified)是一种C/S架构,它为什么就能自动解决依赖性关系呢?这取决于 YUM 服务端的RPM仓库,在这个仓库里放着我们经常用到的rpm格式的软件包。

1、yum仓库的组成

组成 内容
数据 存放各个rpm包
元数据
包名、版本信息、依赖关系、包分组信息、依赖关系列表。

在centos6中遵循sqlite格式,生成的元数据目录是repodata。

2、yum客户端如何访问服务端

以升级为例:

3、如何配置yum的服务端和客户端

1)在服务器端

首先:在服务器端要确保有可用的yum仓库。yum仓库其实就是文件服务器。repodata目录所在的父目录就是一个yum仓库。

其次:服务器端必须通过某种手段将yum仓库共享出去,可以让客户端使用,常见的共享方式有:ftp,http,nfs。如果是本地使用(客户端和服务端是同一台机器),也可以使用file方式。

2)yum客户端

提供repo配置文件,指明仓库访问路径及各种属性。主配置文件(中心配置文件):/etc/yum.conf。

# 在这里定义一些默认配置属性和全局配置属性
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

一个后几个相关的仓库的配置保存成一个文件,文件名都以.repo结尾,保存在/etc/yum.repo.d目录中。

下面介绍一下文件格式(以163镜像为例):

[base]  # 指明仓库名称,用户可自行定义
name=CentOS-$releasever - Base - 163.com # 一般是对这个仓库名称的说明
# 最关键的是这一项,指明仓库的访问路径
# 为了配置方便,yum引入了变量,yum配置文件中可用的四个变量:
# releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6; 
# arch: 系统架构
# basearch: 系统基本架构,如i686,i586等的基本架构为i386; 
# YUM0-9: 在系统中定义的环境变量,可以在yum中使用;
# 最常用的就是 releasever 和 basearch
# 下面在访问的时候会被替换成:baseurl=# baseurl可以使用多个:例如
# baseurl=#         # 使用多个baseurl时需要用到以上格式  
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
# baseurl和mirrlist通常只需一个,我们一般配置baseurl
gpgcheck=1  # 是否进行gpg检测(包的完整性和合法性)
gpgkey= # gpg检测是的秘钥文件

# 还有其他选型,读者在配置时,可自行选择
# 常用的还有:
# enable={0|1} 是否启用该仓库
# cost=N 配置仓库的”花费“,等价于优先级。N的指越小,优先级越高。

配置好这些准备工作,就可以使用yum工具了。

三、yum工具的使用

这里以互联网163镜像为例演示。

1、列出所有可用repo

yum repolist {enabled|disabled|all}

# yum repolist {enabled|disabled|all}
# enabled 列出可用的 
# disabled 不可用的 
# all所有的
[[email protected] yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
base                                                       | 3.7 kB     00:00     
extras                                                     | 3.4 kB     00:00     
updates                                                    | 3.4 kB     00:00     
repo id                                repo name                            status
base                                  CentOS-6 - Base - 163.com              6,367
extras                                CentOS-6 - Extras - 163.com            14
updates                               CentOS-6 - Updates - 163.com           1,153
repolist: 7,534

2、列出rpm包

yum list {all|installed|available}

# yum list {all|installed|available}
# all 列出所有的包  等价于  yum list 
# installed 列出已安装的包
# available 列出可用的包(不包括已安装的)

# 一般情况下,会这样使用
[[email protected] yum.repos.d]# yum list installed | grep "http"
httpd.x86_64            2.2.15-26.el6.centos
httpd-tools.x86_64      2.2.15-26.el6.centos

3、包的描述信息

yum info package_name

Loading mirror speeds from cached hostfile
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 26.el6.centos
Size        : 2.9 M
Repo        : installed
From repo   : anaconda-CentOS-201303050102.x86_64
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 30.el6.centos
Size        : 821 k
Repo        : updates
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

4、列出所有的包组信息

yum grouplist

# 经常情况下我们会是这样来使用
[[email protected] yum.repos.d]# yum grouplist | grep "Deve"
   Additional Development
   Desktop Platform Development
   Development tools
   Server Platform Development

5、显示包组的信息:例如组中包含的程序包列表

yum groupinfo "GROUP NAME"

[[email protected] yum.repos.d]# yum groupinfo "Development tools"
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Group Process
Loading mirror speeds from cached hostfile

Group: Development tools
 Description: A basic development environment.
 Mandatory Packages:
   autoconf
   automake
   binutils
   bison
   flex
   gcc
   gcc-c++
   gettext
   libtool
   make
   patch
   pkgconfig
   redhat-rpm-config
   rpm-build
 Default Packages:
   byacc
   cscope
   ctags
   cvs
   diffstat
   doxygen
   elfutils
   gcc-gfortran
   git
   indent
   intltool
   patchutils
   rcs
   subversion
   swig
   systemtap
 Optional Packages:
   ElectricFence
   ant
   babel
   bzr
   chrpath
   cmake
   compat-gcc-34
   compat-gcc-34-c++
   compat-gcc-34-g77
   cvs-inetd
   dejagnu
   expect
   gcc-gnat
   gcc-java
   gcc-objc
   gcc-objc++
   imake
   jpackage-utils
   kdewebdev
   ksc
   libstdc++-docs
   mercurial
   mod_dav_svn
   nasm
   perltidy
   python-docs
   rpmdevtools
   rpmlint
   systemtap-sdt-devel
   systemtap-server

6、清理缓存

yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}

# yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}
# all 所有缓存
# packages   清除包缓存
# metedata   清除元数据缓存
# expire-cache 清除过期缓存
# rpmdb    清除RPM数据库缓存
# plufins 清除插件缓存

# 最常用的就是 yum clean all
[[email protected] yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, refresh-packagekit, security
Cleaning repos: base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

7、安装程序包

yum install package_name

yum install httpd -y # 常用选项是 -y 意思是不需要确认,直接安装

重新安装:

yum reinstall package_name

yum reinstall httpd -y

8、升级

yum check-update: 检查可用的升级包

yum update package_name 升级软件

[[email protected] yum.repos.d]# rpm -q ntp
ntp-4.2.6p5-1.el6.centos.x86_64

yum downgrade package_name 降级使用的,退回原来的版本

# yum downgrade ntp -y 降级第一次可能会出现错误,解决办法之一是:yum upgrade -y 升级yum工具
[[email protected] yum.repos.d]# yum downgrade ntp -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Downgrade Process
Loading mirror speeds from cached hostfile
Only Upgrade available on package: ntp-4.2.6p5-1.el6.centos.x86_64
Nothing to do

9、卸载

yum remove|erase package_name

yum remove httpd -y

10、查询某文件是由哪个包安装生成的

yum whatprovides|provides /path/to/somefile

# 会列出所有的提供此配置文件的包
[[email protected] yum.repos.d]# yum provides /etc/httpd/conf/httpd.conf 
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
httpd-2.2.15-30.el6.centos.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.15-29.el6.centos.x86_64 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.15-30.el6.centos.x86_64 : Apache HTTP Server
Repo        : installed
Matched from:
Other       : Provides-match: /etc/httpd/conf/httpd.conf

11、安装包组

yum groupinstall "GROUP NAME"

# 常用的包有:
# Desktop Platform Development 开发平台
# Development tools  开发所用的包

# 例如:yum groupinstall "Development tools" -y

12、卸载包组

yum groupremove "GROUP NAME"

四、自制yum仓库

1、如果作为个人使用的话,最简单的办法是,挂载光盘镜像使用。

以VMware虚拟机为例:

先关联光盘镜像,挂载光盘镜像就可以使用。

其中:.repo中的baseurl使用file就可。例如:baseurl=file:///media/centos

2、自建yum仓库服务器

以ftp为例,步骤:

(1) 安装ftp程序,并启动服务

# rpm -ivh vsftp-版本号

或者

# yum install vsftpd -y

启动服务

# service vsftpd start

# chkconfig vsftpd on

(2) ftp的共享目录为/var/ftp/pub

创建子目录,存放某相关的所有rpm包(建议)

(3) 为仓库生成元数据文件,以使能够作为仓库使用

# rpm -ivh createrepo-版本号

或者

# yum install createrepo -y

# createrepo /path/to/rpm_repo/  生成repo的元数据目录 例如:createrepo /var/ftp/pub/Packages

(4) 配置yum客户端使用此仓库即可

总结:本文主要介绍yum工具的使用,简单介绍了自制yum服务端的步骤。

时间: 2024-10-12 13:11:52

Linux软件包的管理--YUM的相关文章

Linux软件包的管理--源码管理

任何管理工具都有自己最适用的场景,像软件包的管理,在CentOS系列中,有了RPM包管理器,但是它自动不能解决包的管理器,所以就出现了yum管理器,但是,他却不能符合我们实际要求(定制功能),所以就出现了源码管理.也许,有些时候源代码也不能满足我们的要求,我就可能要自己基于源码进行二次开发.这里,我们讲解源码管理. 一.源码安装步骤 源码编译的前提,得有像gcc,make等编译工具.一般情况下在"Development tools"里面都提供了这些编译工具. 源码安装步骤其实没有特定的

Linux 软件包安装管理

转自:http://www.cnblogs.com/Quains/archive/2012/01/03/2311049.html 本文主要是记录下RedHat系列的软件包管理. 内容分为以下三个部分:二进制包的管理,源代码包的管理,脚本安装 一.二进制包的管理 1.1概念 主要有RPM和YUM这两种包管理. 两种包管理各有用处,其中主要区别是:YUM使用简单但需要联网,YUM会去网上的YUM包源去获取所需要的软件包.而RPM的需要的操作精度比较细,需要我们做的事情比较多. 1.1.1RPM 主要

Linux软件包的管理--RPM包管理器

在Linux中如何安装.升级.卸载软件,是我们日常运维中重要的组成部分.接下来一CentOS6系统为例,讲解如何使用 RPM 包管理器,yum包管理器以及源码的方式来管理我们的软件包. 一.相关的背景知识 许多程序的源程序,例如使用C语言编写的源代码,要经过预处理,编译,汇编,链接才能生成真正的可执行程序(二进制),才可以使用.为了简化这样的过程,就出现了所谓的包管理器.它出现的目的是:将编译好的程序打包成一个文件或有限的几个文件,可用于实现安装.卸载.升级.查询等功能. 一个包管理器应该具有如

linux软件包管理之RPM

RPM是RHEL的一款后端软件包管理工具:全称为RedHat Package Manage,由RedHat公司开发,主要作为RehHat Linux软件包的管理机制之一,但并未用作商业用途,而是遵循GPL协议,其设计理念是开放的:现包括SUSE.Openlinux等发行版都采用,是非常强大的软件管理工具. RPM是以一种数据库记录的方式来将需要的软件包安装到linux系统的一套管理机制,最大特点是: 1.由于软件包是已经编译过且打包完毕的,所以软件传输与安装很方便 2.由于软件安装之后信息都记录

Linux软件包管理器rpm与yum

在我们的运维工作,总是避免不了安装某些软件,或者编译安装某些软件,我们知道操作系统当中的程序都是有程序员通过开发工具开发的来,程序员直接编写的纯文本的文档我们称之为源代码,但我们的计算机只能识别二进制程序,那么必须要将源代码变成计算机能识别的二进制程序,这里需要通过编译器来进行编译,将源码转换成二进制程序,再通过安装即可. 还有一类程序就是二进制程序,系统是由某些厂商来做的,在厂商的系统上编译出来的程序,自然就在系统上运行了,这里是由厂商直接编译好程序然后释放出来给用户,如此一来,由于我们本来就

LINUX RPM、YUM软件包的管理

一.RPM.YUM 软件包管理管理工具的简介 1.首先讲一下自己的感觉:对于 初学linux的人来说安装软件是比较头疼的事,大家习惯了windos的操作,是中文的,只要上网一搜什么都有,然后下一步安装就行啦,卸载的话更是简单,在卸载或更改程序了么也很简单,还有360等.linux软件包大致分三种:以.rpm .压缩包.源码包最为常见,却他们的安装方法也是有差别的.掌握好软件安装卸载工具是以后搭建服务不可缺少的必备能力,而 RPM.YUM 就是不可或缺的利器. 2.rpm的简单介绍 1.可以安装.

linux软件包管理之rpm 、yum基本使用

linux软件包管理之rpm .yum基本使用 一.RPM RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及TurboLinux等Linux的分发版本都有采用,可以算是公认的行业标准了. RPM主要功能在于对linux中以.rpm为后缀的软件包的安装.升级.卸载.校验及查询进行便捷管理. 1.安装软件包及常用选项       rpm

Linux系列教程(十二)——Linux软件包管理之yum在线管理

上一篇博客我们介绍了rpm包管理之rpm命令管理,我们发现在使用rpm命令手动安装rpm包的时候,会发现安装遇到到的依赖让你痛不欲生,安装一个rpm时会要先先安装某个依赖的rpm,而安装这个依赖的rpm包是可能又必须先安装它所依赖的.在实际操作中,我们肯定是不会使用rpm命令手动安装软件包的,更简单的方法就是这篇博客我们将介绍RPM包管理——yum在线管理. 1.yum在线管理 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUS

谢烟客---------Linux之程序包管理yum使用和编译安装

yum命令及仓库创建与配置 YUM 原理 安装.卸载.查询.升级.检查,本地缓存.重装.降级.历史.获取帮助 仓库 变量.事务.URL.开销.镜像.元数据存储方式及组成 createrepo作用.命令.lftp命令 编译安装  目的 原理 开发工具及开发环境 编译后的处理 获取程序包源代码的途径 YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户命