RPM包详解

RPM(Redhat Package Manager)的缩写,本意为:Red Hat 软件包管理,目前已经成为Linux工业标准。现在OpenLinux/SUSE/等分发版本的linux都有采用。

RPM包里面都包含什么?

里面包含可执行的二进制程序,这个程序和windows的软件包中的.exe文件类似是可执行的;

RPM包中还包括程序运行时所需要的文件,这也是和windows的软件包类似;



包管理器的功能:

打包、安装、卸载、升级、校验、数据库管理等



rpm包的前端工具:

dpkg --> apt-get (ubuntu)

rpm -->yum(增强型前端工具),yum(Yellow Dog)



RPM包管理的用途:

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

2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

3、可以在查询系统中的软件包是否安装以及其版本;

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

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

6、依赖性检查,查看是否有软件包由于不兼容而扰乱了系统;



RPM包的使用权限:

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以进行操作;如果普通用户拥有安装目录的权限,也可以进行安装等操作;



RPM包的命名格式:

name-version-relase.arch.rpm

name:软件包名称

verion:带有主,次和修订的软件包版本

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

arch:适用于的硬件平台

x86:i386,i486,i586,i686等;

x86_64:x86_64

powerpc:ppc

noarch:依赖于虚拟机

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



RPM分包机制:

核心包:包含程序最常用的功能

httpd-2.2.15-39.el6.centos.x86_64.rpm

开发包:包含开发所需要的库模块

httpd-devel-2.2.15-39.el6.centos.x86_64.rpm

帮助文档:

httpd-manual-2.2.15-39.el6.centos.noarch.rpm

工具包:

httpd-tools-2.2.15-39.el6.centos.x86_64.rpm



RPM命令参数:

-e 卸载rpm包

-q 查询已安装的软件信息

-i 安装rpm包

-u 升级rpm包

-c 显示所有配置文件

-d 显示所有文档文件

-h 显示安装进度

-l 列出软件包中的文件

-a 显示出文件状态

-p 查询/校验一个软件包文件

-v 显示详细的处理信息

--replacepkgs 重新安装rpm包

--justdb 升级数据库,不修改文件系统

--percent 在软件包安装时输出百分比

--version 显示版本信息

--dump 显示基本文件信息

--nomd5 不验证文件的md5支持

--nofiles 不验证软件包中的文件

--whatrequire 查询/验证需要的一个依赖性的软件包

--whatprovides 查询/验证提供一个依赖性的软件包

--test 仅做测试,不真正意义上的安装



RPM安装程序包:

rpm -i zsh-4.3.10-7.el6.x86_64.rpm

常用组合选项:-ivh

# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]

如果依赖于其它包:

1、解决依赖关系

2、忽略依赖关系

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

--nodeps



卸载程序包:

# rpm -e zsh #只需哟包名,不需要版本号

如果被其它包所依赖:

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

2、忽略依赖关系

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

--nodeps

如果包的配置文件安装后曾经被改动过,卸载的时候,此文件将不会卸载,而是被重命名并保留,例如

warning: /etc/zprofile saved as /etc/zprofile.rpmsave



升级程序包:

新版本替换老版本

rpm [option] /path/to/package_file

1、升级或安装

-Uvh

2、纯升级

-Fvh

3、--force:强制升级

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



查询操作:

1、查询某包是否安装

rpm  -q

# rpm -q zsh
zsh-4.3.10-7.el6.x86_64

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

rpm -qa

# rpm -qa
mozilla-filesystem-1.9-5.1.el6.x86_64
openssh-server-5.3p1-104.el6_6.1.x86_64
basesystem-10.0-4.el6.noarch
glib-networking-2.28.6.1-2.2.el6.x86_64
createrepo-0.9.9-18.el6.noarch
............

3、查询包的描述信息

rpm -qi package_name

# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.10                            Vendor: CentOS
Release     : 7.el6                         Build Date: Mon Nov 25 01:40:59 2013
Install Date: Mon Jan 19 22:32:22 2015         Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.10-7.el6.src.rpm
Size        : 5009102                          License: BSD
Signature   : RSA/SHA1, Mon Nov 25 03:33:46 2013, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

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

rpm -ql package_name

# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
...........

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

rpm -qc package_name

# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

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

rpm -qd package_name

# rpm -qd zsh
/usr/share/doc/zsh-4.3.10/BUGS
/usr/share/doc/zsh-4.3.10/CONTRIBUTORS
/usr/share/doc/zsh-4.3.10/FAQ
/usr/share/doc/zsh-4.3.10/FEATURES
/usr/share/doc/zsh-4.3.10/LICENCE
/usr/share/doc/zsh-4.3.10/MACHINES
...........

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

rpm -q --scripts package_name

# 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
...........

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

rpm -qf /path/to/some_file

校验:

用于检查包安装生成的文件属性是否发生变化

rpm -V package_name

file Size differs

M Mode differs (includes permissions and file type)

5 digest (formerly MD5 sum) differs

D Device major/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs

P caPabilities differ

某属性无变化,显示为(空)



RPM包来源合法性及完整性检验:

前提:在当前系统上导入包的制作者的公钥

导入:

rpm --import /path/to/key_file

# rpm -qa gpg-pubkey*

显示所有已经导入的gpg格式的公钥

# rpm -qi gpg-pubkey-NAME

显示密钥的详细信息

检查包:安装过程中会自动执行

手动检查:

rpm -K /path/to/package_file

rpm --checksig /path/to/package_file

不检查包完整性:

rpm -K --nodigest

不检查来源合法性:

rpm -K --nosignature

数据库重建:

数据库目录:/var/lib/rpm

重建:

rpm --initdb:初始化

如果事先没有库,会新建一个;如果有,则不新建;

rpm --rebuilddb: 重建

直接重建,覆盖原有的数据库

注:本文为作业整理

时间: 2024-10-18 13:12:25

RPM包详解的相关文章

FPM打包工具制作Tengine为RPM包详解

目录 1.Tengine编译安装 2.FPM制作Tengine为RPM包 3.总结 1.Tengine编译安装 [[email protected] ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m [[email protected] ~]# uname -r 2.6.32-358.el6.x86_64 请确保系统安装了"Development tools"和"Server Platform D

yum与rpm的详解 --用来安装软件

                   yum与rpm的详解                           --用来安装软件 关键字:本地yum  第三方yum  yum参数 yum软件控制 rpm参数  永久挂载   软件的依赖性 第一部分:配置本地yum源      1.yum安装http服务,并共享给其他主机可以访问 如果在服务器不在的情况下或是无法从网上获取第三方软件时,此时,可以利用自己的镜像进行安装,需要一个与本机匹配的安装镜像,rhel-server-7.0-x86_64-dv

RPM命令详解(安装、升级、卸载)

RPM命令详解(安装.升级.卸载) rpm 常用命令1.安装一个包# rpm -ivh 2.升级一个包# rpm -Uvh 3.卸载一个包# rpm -e 4.安装参数--force 即使覆盖属于其它包的文件也强迫安装--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装. 5.查询一个包是否被安装# rpm -q < rpm package name> 6.得到被安装的包的信息# rpm -qi < rpm package name> 7.列出该包中有哪些文

转:android Support 兼容包详解

本文转自stormzhang的ANDROID SUPPORT兼容包详解 背景 来自于知乎上邀请回答的一个问题Android中AppCompat和Holo的一个问题?, 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博客吧. Support Library 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library package 系列的包来保证高版本sdk开发的向下兼容性, 所以你可能经常看到v4,v7,v13这些数字,首先我们就来理清

Spring——jar包详解(转)

Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spring 2.5.6的时候需要asm jar包,spring3.0开始提供它自己独立的asm jar包 org.springframework.aspects——Spring提供的对AspectJ框架的整合 org.springframework.beans——所有应用都用到,包含访问配置文件,创建和

2.TCP_IP互联线缆_TCP_UDP报文抓包详解

TCP_IP互联线缆_TCP_UDP报文抓包详解 2.1网线标准 直通线 交叉线 异种设备互联使用直通线 同种设备互联使用交叉线 TCP和UDP 端口寻址 TCP数据格式 TCP三次握手 UDP数据格式 IP报头格式 ICMP报文格式 ARP协议 ARP报文格式

Spring中的jar包详解

下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring.jar 是包含有完整发布的单个jar包,spring.jar中除了spring-mock.jar里所包含的内容外其他所有jar包的内容,因为只有在研发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的. 除了spring.jar文件,Spring还包括有其他1

iOS开发——使用Charles进行https网络抓包详解

我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们来实现一下进行https的抓包,比http抓包稍微麻烦一点. (1)https初级的配置请参考<网络抓包工具Charles的介绍与使用>中的https配置部分. (2)由于目前iOS9更改了对于https网络的安全机制,所以还需要在iPhone上安装一个证书,安装方式如下: 在iPhone的Saf

ORACLE之UTL_FILE包详解

1 Utl_File包简介Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作.(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录.      方法:        1.alter system set utl_file_dir='e:/utl' scope=spfile;        2.在init.ora文件中,配置如下:UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl;(2)Oracle10g之后的版本,只需要先创建一个路径即可.