Linux系统程序包管理工具 RPM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统程序包管理工具 RPM相关的知识,希望对你有一定的参考价值。

什么是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 <[email protected]> - 5.0.2-14
- fix alias handling in command substitution (#1253555)

* 四 7月 30 2015 Kamil Dudka <[email protected]> - 5.0.2-13
- fix parser regression introduced by the fix for bug #1241023

* 三 7月 08 2015 Kamil Dudka <[email protected]> - 5.0.2-12
- fix command substitutions to parse contents as they are read in (#1241023)

* 五 5月 22 2015 Kamil Dudka <[email protected]> - 5.0.2-11
- fix SIGSEGV of the syntax check in ksh emulation mode (#1222867)

* 一 5月 18 2015 Kamil Dudka <[email protected]> - 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

以上是关于Linux系统程序包管理工具 RPM的主要内容,如果未能解决你的问题,请参考以下文章

Linux基本命令——RPM包管理工具

程序包管理之rpm

以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用

Linux 包管理工具之RPM详解

2018-3-14Linux系统管理(12) Linux程序包管理yum前端管理工具

Linux 程序包管理及sed基础