首页 > 代码库 > 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包
2、查询httpd的详细信息
3、查询是否安装了httpd
4、查询httpd安装生成了那些文件
5、查询httpd安装生成了那些配置文件
6、查询httpd安装生成了那些帮助文件
7、查询yum有几个yum仓库源
8、查询yum仓库有那些安装包
9、查询包中与mysql相关的包
10、查询yum当中的包组信息
11、重新安装http软件
12、查询需要升级的安装包
13、卸载httpd软件包
14、安装httpd软件
七、总结
个人觉得用rpm管理工具查询好用,查询信息详细。用yum管理工具安装好用,解决了包依赖关系。其它的就是命令打熟就好啦!
本文出自 “天涯海角” 博客,谢绝转载!
LINUX RPM、YUM软件包的管理