首页 > 代码库 > LINUX RPM、YUM软件包的管理

LINUX RPM、YUM软件包的管理

一、RPM、YUM 软件包管理管理工具的简介

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

2、rpm的简单介绍

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;        3、可以在查询系统中的软件包是否安装以及其版本;

4、作为开发者可以把自己的程序打包为RPM 包发布;

5、软件包签名GPG和MD5的导入、验证和签名发布 

6、对于报的依赖性不是很好的处理工具

7、对已安装和未安装的软件是个很好的查询工具

3、yum的介绍

1、yum是yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 

2、可以同时配置多个资源库(Repository)

3、简洁的配置文件(/etc/yum.conf)

4、自动解决增加或删除rpm包时遇到的倚赖性问题

5、使用方便

6、保持与RPM数据库的一致性

二、软件包安装的地方

程序包的组成格式:

二进制程序

/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /usr/local/APP/{bin,sbin}

注意:

有些特殊的应用程序放置于libexec目录中

有些第三方应用默认安装于/opt目录

库文件(开发库、运行库)

/lib64, /usr/lib64, /usr/local/lib64, /usr/local/APP/lib

配置文件

/etc   /usr/local/APP/etc或conf目录

帮助文件

/usr/share/man, /usr/local/share/man, /usr/local/APP/man

三、帮助文件:man, info, 

doc: README, INSTALL, ChangeLog

ldd:

ldd /path/to/binary_file

四、版本号包名平台的问题

源代码:

name-version.tar.{gz,bz2,xz}

version:major.minor.release

rpm包的命名格式

name-version-relase.arch.rpm

release: rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS

bash-4.2.3-3.centos5

arch: 适用于的硬件平台,

x86: i386, i486, i586, i686等;

x86_64: x86_64

powerpc: ppc

noarch: 依赖于虚拟机

例如:bash-4.2.3-3.centos5.x86_64.rpm

一个程序有20个功能:常用功能有8个,特殊A:3个,特殊B:6个,二次开发相关功能:3

分包机制:

核心包,主包:命名与源程序一致

bash-4.2.3-3.centos7.x86_64.rpm

子包:

bash-a-4.2.3-3.centos7.x86_64.rpm

bash-b-4.2.3-3.centos7.x86_64.rpm

bash-devel-4.2.3-3.centos7.x86_64.rpm

五、获取包的途径

获取rpm包的途径:

1、OS Vendor: 系统发行商提供的

发行的光盘或站点服务器

镜像:

http://mirrors.163.com

http://mirrors.sohu.com

2、项目的官网

源代码

rpm包

3、很多第三方机构或个人制作并公开发布许多rpm包

http://rpmfind.net

http://rpm.pbone.net

可靠的途径:EPEL

Fedora-EPEL

六、基本命令

rpm包管理器的常见使用场景:

安装程序包:

rpm [option] /path/to/package_file 

-i: install  安装

-v: verify   查证核实,详细

-h: 以-v组合更好的显示详细信息

组合选项:-ivh

--test: 仅作测试,有真正执行安装

如果依赖于其它包:

1、解决依赖关系

2、忽略依赖关系

能安装上,但有可能无法运行;

--nodeps

重新安装:

--replacepkgs

如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

卸载程序包:

rpm [option] package_name

-e: erase

如果被其它包所依赖:

1、将依赖于此包的所有包一并卸载

2、忽略依赖关系

能卸载,但依赖于此包程序包可能会运行不正常;

--nodeps

升级程序包:

新版本替换老版本

rpm [option] /path/to/package_file

1、升级或安装

-Uvh

2、纯升级

-Fvh

X --> Y-2.2.1

Y-2.2.3

升级后的版本冲突等;

--force: 强制升级

注意:不应该对内核执行升级操作,而是安装系统允许多内核并存

查询操作:

1、查询某包是否安装

rpm -q package_name...

2、查询所有已经安装的包

rpm -qa 

按条件过滤:rpm -qa | grep ‘PATTERN‘

3、查询包的描述信息

rpm -qi package_name

4、查询某包安装生成了哪些文件

rpm -ql package_name

(1) 查询某包安装生成了哪些配置文件

pm -qc package_name

(2) 查询某包安装生成了哪些帮助文件

rpm -qd package_name

(3) 查询程序包的相关脚本

rpm -q --scripts package_name

脚本有四类:

preinstall:安装前脚本

postinstall: 安装后脚本

preuninstall: 卸载前脚本

postuninstall: 年前后脚本

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

rpm -qf /path/to/some_file

6、对尚未安装的包执行查询

rpm [option] /path/to/package_file

-qpi 查询未安装包未安装的描述信息

-qpl 查询未安装生包会生成了哪些文件

-qpc 查询未安装包会生成了哪些帮助文件

-qpd 查询未安装程序包的相关脚本

2、yum客户端命令的使用:

1、列出所有可用repo

yum repolist {enabled|disabled|all}

2、列出rpm包

yum list {all|installed|available} 

yum list KEYWORD*

3、包的描述信息

yum info package_name

4、列出所有的包组信息

yum grouplist

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

yum groupinfo "GROUP NAME"

CentOS6 跟开发相关的包组:

Development Tools

Server Platform Development

Desktop Platform Development

6、清理缓存

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

7、安装程序包

yum install package_name

重新安装:

yum reinstall package_name

8、升级

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

yum update package_name

x-1.3.1

x-1.3.2, x-1.3.3, x-2.0.1

yum update x-1.3.2

yum downgrade package_name

9、卸载

yum remove|erase package_name

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

yum whatprovides|provides /path/to/somefile

11、安装包组

yum groupinstall "GROUP NAME"

12、卸载包组

yum groupremove "GROUP NAME"

六、基本命令的使用

以httpd软件为例

1、查询安装了那些rpm包

wKiom1PKgwCjjG-7AAEXItRG7jg761.jpg

2、查询httpd的详细信息

wKiom1PKhA7gNaCJAAKYGFLJ8tk785.jpg

3、查询是否安装了httpd

wKiom1PKgwWzfWtMAABlRfdFnH0605.jpg

4、查询httpd安装生成了那些文件

wKiom1PKgwWTL5U9AAC5QZwMWjo074.jpg

5、查询httpd安装生成了那些配置文件

wKioL1PKhCDTExvtAADfTNDZl-4683.jpg

6、查询httpd安装生成了那些帮助文件

wKiom1PKgwawCh6vAADv97MqQA8308.jpg

7、查询yum有几个yum仓库源

wKiom1PKgwfj_PtgAAD3yy1HDvs671.jpg

8、查询yum仓库有那些安装包

wKioL1PKhCLA9pyeAACitDH4ohk897.jpg

9、查询包中与mysql相关的包

wKiom1PKgwqQfHd_AAMq0YWMXXM604.jpg

10、查询yum当中的包组信息

wKiom1PKgw6i2IbJAAJZzP2Vp1Q599.jpg

11、重新安装http软件

wKioL1PKhCyRhPfzAAE0TGmV7Nc569.jpg

12、查询需要升级的安装包

wKiom1PKgxKi6JmbAAC6d4RQOgk213.jpg

13、卸载httpd软件包

wKiom1PKgxTi4aVhAAMkb1Kh5Tc569.jpg

14、安装httpd软件

wKioL1PKhDjT57GiAAGbmvSHSH8844.jpg

七、总结

   个人觉得用rpm管理工具查询好用,查询信息详细。用yum管理工具安装好用,解决了包依赖关系。其它的就是命令打熟就好啦!

本文出自 “天涯海角” 博客,谢绝转载!

LINUX RPM、YUM软件包的管理