您的位置:首页 > 运维架构 > Linux

Linux系统程序包管理工具 RPM

2016-03-18 22:29 417 查看
什么是RPM
RPM全名是“RedHat Package Manager”,简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的。RPM是以一种数据库记录的方式来将你所需要的软件安装到你的Linux系统的一套管理机制。其最大的特点就是将你要安装的软件先编译过,并且打包成为RPM机制的安装包,通过包装好的软件里面默认的数据库记录这个软件安装时必须具备的依赖属性软件,具备就安装、不具备就不予安装。

程序的组成部分
编译之前:源代码

编译文件

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIR, /usr/local/{etc,conf}

帮助文件:/usr/share/man, /usr/share/doc

man手册:/usr/share/man, /usr/local/share/man

程序包命名格式
rp-pppoe - 3.1 - 5 .i386 .rpm

软件名称 软件的版本信息 发布的次数 适合的硬件平台 扩展名

目前的distributions在发布软件时,都会将软件的内容分为一般使用与开发使用两大类:而后者一般都不会安装,因为终端用户大部分不会去开发软件
pam-x x.rpm

pam-devel-x x.rpm

程序包获取方法
系统的发行光盘镜像或官方站点

挂载光盘:

mount -r /dev/cdrom /media/

官方站点

mirrors.sohu.com

mirrors.163.com

mirrors.aliyun.com

网址:

http://rpmfind.net
http://rpm.pbone.net
http://pkge.org
注意:安装之前要验证其合法性;

rmp使用方法
安装
-ivh:安装、显示安装过程、显示安装进度
#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm
准备中...          ################################# [100%]
正在升级/安装...
1:zsh-5.0.2-14.el7 ################################# [100%]
--nodeps:忽略依赖关系;副作用:安装成功但未必能运行成功




--replacepkgs:覆盖安装:重新安装并覆盖原有的文件




--force:强制安装

rpm -ivh --force zsh-5.0.2-14.el7.x86_64.rpm


升级:
-Uvh:如果安装了老版本就升级,否则就安装
#rpm -Uvh zsh-5.0.2-14.el7.x86_64.rpm
准备中...################################# [100%]
软件包 zsh-5.0.2-14.el7.x86_64 已经安装
-Fvh:如果安装了老版本就升级,否则就退出


--oldpackage;降级到旧版本
--nodeps:忽略依赖关系

注意:一定不要对内核升级;linux允许多内核共存,所以可以安装多个不同版本内核
注意:如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件而把新版本的配置文件重命名(.rpmnew)后保存

卸载:
-evh:卸载、并显示执行过程



--test:测试卸载

--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载

注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名加后缀(.rpmsave)后留存

查询:
-q:查询某包是否安装
#rpm -q zsh-5.0.2-14.el7.x86_64.rpm
未安装软件包 zsh-5.0.2-14.el7.x86_64.rpm
-qa:查询已安装的所有包



#rpm -qa | grep "zsh"
-qf:查询某文件由哪个包安装生成
#rpm -qf /etc/passwd
setup-2.8.71-5.el7.noarch
-qpi:查询尚未安装的包文件的相关信息

#rpm -qpi gcc-4.8.5-4.el7.x86_64.rpm
Name        : gcc
Version     : 4.8.5
Release     : 4.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Development/Languages
Size        : 39010978
License     : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Signature   : RSA/SHA256, 2015年11月25日 星期三 22时30分54秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : gcc-4.8.5-4.el7.src.rpm
Build Date  : 2015年11月19日 星期四 23时01分53秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://gcc.gnu.org Summary     : Various compilers (C, C++, Objective-C, Java, ...)
Description :
The gcc package contains the GNU Compiler Collection version 4.8.
You'll need this package in order to compile C code.
-ql:查询某包安装后生成了哪些文件列表
#rpm -ql zsh|less
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
/usr/lib64/zsh
/usr/lib64/zsh/5.0.2
/usr/lib64/zsh/5.0.2/zsh
/usr/lib64/zsh/5.0.2/zsh/attr.so
/usr/lib64/zsh/5.0.2/zsh/cap.so
...
-qc:查询某包安装后生成的配置文件路径

#rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
-qd:查询某包安装后生成的所有帮助文件

#rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS
/usr/share/doc/zsh-5.0.2/CONTRIBUTORS
/usr/share/doc/zsh-5.0.2/FAQ
/usr/share/doc/zsh-5.0.2/FEATURES
/usr/share/doc/zsh-5.0.2/LICENCE
/usr/share/doc/zsh-5.0.2/MACHINES
/usr/share/doc/zsh-5.0.2/NEWS
/usr/share/doc/zsh-5.0.2/README
/usr/share/doc/zsh-5.0.2/completion-style-guide
/usr/share/doc/zsh-5.0.2/zsh-development-guide
/usr/share/doc/zsh-5.0.2/zshprompt.pl
...
-q --changelog:查看某包制作时随版本变化的changelog信息

* 五 8月 14 2015 Kamil Dudka <kdudka@redhat.com> - 5.0.2-14
- fix alias handling in command substitution (#1253555)

* 四 7月 30 2015 Kamil Dudka <kdudka@redhat.com> - 5.0.2-13
- fix parser regression introduced by the fix for bug #1241023

* 三 7月 08 2015 Kamil Dudka <kdudka@redhat.com> - 5.0.2-12
- fix command substitutions to parse contents as they are read in (#1241023)

* 五 5月 22 2015 Kamil Dudka <kdudka@redhat.com> - 5.0.2-11
- fix SIGSEGV of the syntax check in ksh emulation mode (#1222867)

* 一 5月 18 2015 Kamil Dudka <kdudka@redhat.com> - 5.0.2-10
- signal safety when updating global state (#1163823)
...
-q --provides 查询某包提供的capabilities
#rpm -q --provides zsh
config(zsh) = 5.0.2-14.el7
zsh = 5.0.2-14.el7
zsh(x86-64) = 5.0.2-14.el7
-q --requires:查询某包所依赖的capabilities

#rpm -q --requires zsh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/zsh
/sbin/install-info
-q --scripts:查询某包安装或卸载时执行的脚本
#rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
echo "/bin/zsh" > /etc/shells
else
grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi

if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
--entry="* zsh: (zsh).			An enhanced bourne shell."
fi

:
preuninstall scriptlet (using /bin/sh):
脚本有四类:

preinstall:安装过程开始之前执行的脚本

postinstall:安装过程后执行的脚本

preuninstall:卸载前执行的脚本

postuninstall:卸载过程完成之后执行的脚本

本文出自 “我动了谁的奶酪” 博客,请务必保留此出处http://wscto.blog.51cto.com/11249394/1752759
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: