程序包管理之RPM

在windows系统上安装一个程序很简单,只需要双击打开安装程序包,然后就是下一步,下一步的问题。在linux系统上对于安装来说要复杂的多,在没有安装包工具之前,安装一个程序需要先配置(configure), 编译(make)以及安装(make install), 这中间很容易出错,对于新手来说不容易上手,如果对于一个软件包不了解的话,那些错综复杂的依赖关系就把人搞的很头痛。

为了解决这个问题,debian首先发布了一个软件包管理程序dpkg,用于管理安装软件包,后来Redhat也依照dpkg提供了rpm这个管理程序,全称为redhat package manager, 后来这种标准被工业化以后又称为RPM is Package Manager。  
     RPM可以让用户直接以二进制(binary)方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由使用及传播RPM。

RPM做为一个软件包的管理程序, 常用的功能有软件包的安装, 卸载, 查询, 检验以及RPM数据库的管理, 下面我们依次来看下相应的功能及实现.

1. RPM软件使用基础及安装

对于rpm来说, 我们先来看下它的格式, 一般一个rpm包都会以rpm结尾, 有时候也会看到以src.rpm结尾的是以源代码方式封装的rpm包.常见的格式为name-version-release-arch.rpm

name: 软件的名称

version: 软件的版本号

release: 这里的release是指rpm包的发布版本号, 跟软件无直接关系

arch: 指这个软件支持的平台架构, 如 i386, 或者x86_64等, 有时候会看到noarch表示支持所有的平台.

举个例子来说明下, 比如说一个rpm包: MySQL-server-5.5.16-1.rhel5.i386.rpm, 我们从后往前看会好理解些, rpm结尾, 说明这是一个rpm格式的包, i386表示支持的架构,这个是X86架构的, 1.rhel5表示软件包封装的relase, 很容易看清楚是基于rhel5来封装的, 5.5.16是指导软件包的版本, 最后MySQL-server是这个软件包的名称.

rpm命令的使用格式

rpm [options] file…

基本格式说完,就可以说下安装了,安装很简单,用于安装的选项:

-i: install 安装的意思

-v: 显示安装的详细信息

-h: 以#号的形式显示安装进度

举个例子来说明下, 比如说要安装MySQL-server-5.5.16-1.rhel5.i386.rpm, 命令如下:

rpm –ivh MySQL-server-5.5.16-1.rhel5.i386.rpm

  --nodeps: 软件包之间会有依赖关系, 如果想忽略依赖关系强制安装或者卸载的话,可以使用这个选项,不建议使用,因为就算安装上以后,也不一定能使用.

--force: 在安装的时候,有可能现存的版本比较新,会无法安装,如果想强制安装的话可以使用这个选项

2. 升级

  升级的话可以使用-U或者-F选项,这两个选项之间是有区别的.

    -U: 即能用于软件版本升级也能用于安装

    -F: 仅仅用于使用
 

nodps与force选项同样适合于升级时使用

3. 卸载

卸载一个软件包的话使用, -e选项, 后面跟软件的名称, 注意是软件的名称而不是软件包的名称. nodeps与force选项同样可以用于卸载.

-e: 软件包卸载

4. 查询

查询的选项有很多, 也有很多相应的功能, 下面一一细说

-q: 用于查询某个软件包是否安装

-qi: 查询软件的基本信息,包含版本,签名,简单描述等

-qa: 查询所有已经安装过的程序包, 可以配置管道符以及grep来搜索

-ql: 查询软件包都安装了哪些文档

-qf: 查询某个文件是由哪一个软件包生成

-qc: 查询软件包生成的配置文件

上面这些命令都是用于查询已经安装完成的包的信息的, 当然也可以查询未安装的包的信息, 只需要在相应的命令上加上p即可, 比如说-qpl就表示查询某个未安装的包,安装后所生成文件的, 其它选项类似.

5. 检验

校验分为两个部分,检验安装后的文件是否被修改过和安全性,先说检验文件是否被修改过,使用-V选项来检验校验结果会看到如下的一些字母标识:

S: 表示文件大小;
    M: 表示权限;
    5: 表示MD5检查和;
    D: 表示主从设备号;
    L: 表示符号连接;
    U: 表示属主;
    G: 表示属组;
    T: 表示最后修改时间根据文件类型的不同检验的项目也不同

看下,相应的执行结果

    [[email protected] ~]# echo "#new line" >> /etc/skel/.bashrc #给bash的一个文件添加一行注释
    [[email protected] ~]# rpm -V bash
    S.5....T.  c /etc/skel/.bashrc

上文件只是列出了bashrc文件,没有列出的,说明没有被修改过。S表示文件大小发生了改变,因为我们添加了一行。5表示MD5值发生了改变,因为大小变了MD5值肯定会有变化,T是最后修改时间。

再下来说下文件的安全性,安全性主要是指包文件的完整性及合法性,在生产环境当中,如果安装了一个来源不明或者黑客提供的一个文件,危害是可想而知的,所以需要校验。使用-K的选项校验,如果提示key不正确或者没有,需要先导入key. 导入key使用--import选项,后面跟key的文件名称。

[[email protected] ~]# ls    #查看当前目录,看到一个freeradius的软件包
bin  bonnie  freeradius-2.1.10-5.el6.x86_64.rpm  install.log  install.log.syslog
[[email protected] ~]# rpm -K ./freeradius-2.1.10-5.el6.x86_64.rpm   #校验freeradius的软件包,跟包的路径,默认是当前目录
freeradius-2.1.10-5.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK   #校验OK

6. 数据库

前文就说过,rpm是需要依赖于数据库文件的, 那么如果数据库文件损坏, 或者说还没有建立该怎么办呢?下面就说下数据库的建立以及重建的方式.

rpm --initdb: 用于数据库的建立

rpm --rebuilddb: 用于数据库的重新建立, 注意会覆盖原有的文件.

7. 安装时的常见错误

1). 软件包已经安装

package xxx.rpm is already installed

error:  xxx.rpm cannot be installed

看到这种类似的提示说明安装的软件包已经安装过, 如果必须要安装的话, 可以使用--force选项来强制安装.

2). 软件包冲突

/usr/bin/xx confilicts with file from xx-1.0-1 
error: xxx.rpm cannot be installed

看到类似这种类似的错误提示, confilicts表示软件包与已经安装过的冲突, 如果必须要安装现有的, 可以先卸载掉与安装冲突的软件

3). 缺少依赖的包

error: xxx is needed by xxx-1.0-1

看到类似的提示信息, 说明缺少依赖包xxx-1.0-1, 需要先安装被依赖的包才能再继续安装.

从上文可以看到, rpm安装并不能自动解决包的依赖关系, 如果需要自动解决依赖关系的话, 就需要程序包的前端管理工具, yum来解决. rpm就说到这吧, 关于yum具体的东西再开文细讲.

时间: 2024-08-06 09:54:26

程序包管理之RPM的相关文章

程序包管理:RPM YUM的总结

程序包管理:RPM YUM的总结 一.RPM的简介 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,是公认的行业标准. 二.RPM程序包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件: 2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪

CentOS系统程序包管理之---rpm、yum和编译

一.程序包管理器 1.软件的运行 2.程序包管理 将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum 二.程序包管理器之RPM  1.rpm是什么    RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM包管理器(RPM)是一个强大的命令行驱动的包管理系统能够安装.卸载.验证.查询和更新计算机软

程序包管理:rpm&yum命令

1.软件包管理简介 Windows中所有的软件包都不可以直接在linux系统中直接安装使用. linux系统中软件包分类: 源码包(脚本安装包) 源代码直接开放的包,绝大部分是C语言写的: 二进包(源码包编译之后的包.RPM包.系统默认包) 优点:安装快速,简化安装过程但不能看到源代码,例如qq等: redhad系列和ubanto系列最大的区别就是二进制软件包不同,rehad用的二进制包是.rpm包,debin系列用的是deb包,其余的部分两种发行版本基本一致. 源码包的优点: 开源,可以修改源

Linux程序包管理:RPM和YUM

Linux程序包管理:RPM和YUM   就像Window一样,我们安装了windows系统如果没有相应的应用软件,如OFFICE,IE,等各种软件,用户是无法使用计算机,linux 完成各种应用功能,也需要各种应用程序,所以程序包的管理就非常必要. Linux平台的内核功能:进程管理.内存管理.网络协议栈.驱动程序....             应用程序:              早期的linux程序包的组成部分:                二进制程序:/bin, /sbin,/ /u

CentOS程序包管理器rpm、yum以及程序包编译安装详解

一.程序包管理器RPM和Yum简介 程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,可以更方便地实现程序包的安装.升级.卸载和查询等管理操作. rpm软件包管理器(RPM Package Manager):rpm包存在依赖关系,依赖关系复杂,安装时间很长,虽然可以忽略依赖关系,但是可能会导致程序包安装后无法正常使用. yum程序包管理器( Yellow dog Updater, Modified):yum是基于RPM包管理,自动解决程序包间的依赖关系.根据配置文件的资源地

  程序包管理器之 RPM的用法

在Linux中我们经常回遇到安装个卸载各种程序,但是我们又没有必要每次都对源代码进行预处理.编译.汇编.链接,这样很不方便,于是我们就可以使用RPM包管理器. 一:RPM包的介绍:RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. 二:RPM包的功能介绍:

[Linux程序包管理之RPM及YUM]

Linux程序包管理之RPM及YUM 一.RPM和YUM简介 RPM,全称RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各个发行版普遍使用. RPM包管理器,将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装.卸载.升级.查询.校验等程序管理:通常用与RHEL,红帽衍生系统,如CenOS等系统,用来实现对Linux程序包进行快捷管理. RPM包命名格式: Yum,全称Yellow dog Updater, Modified , 由Duke

2015年9月10日课程作业【程序包管理:rpm, yum】_JY1506402-19+liuhui880818

<Linux系统管理> (1)磁盘和文件系统管理: (2)RAID, LVM; btrfs; (3)程序包管理:rpm, yum(dnf) (4)Linux的网络管理; (5)进程和作业管理:htop, glances, tsar: (6)sed和awk: (7)Linux系统的开机启动流程: (8)内核基础知识,内核定制编译: (9)系统安装:kickstart, pxe 一.作业(练习)内容: 1.总结rpm和yum实现程序包的管理功能. 要求:作业要图文并茂 二.完成时间: 2015年9

CentOS程序包管理器之rpm前端管理器

CentOS的程序包管理器: 首先,我们要来了解一下程序包(源代码包)的命名规则: software_name-VERSION.tar.gz VERSION:major.minor.release major:主版本号,通常代表重大功能改进的版本分支: minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化: release:发行版本号,修复了某些bug或者对某段代码进行了优化: 例如:apache-tomcat-7.0.63.tar.gz 而rpm程序包命名规则为: 源码包:sou

Linux学习笔记——程序包管理之rpm命令

RPM rpm是Linux上一个很好用的程序包管理管理器,它具有安装.卸载.升级.查询.校验.数据库维护等功能. 下面分别介绍一下rpm的各个功能: 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v:详细显示安装过程 -vv:相对-v更加详细 -h: 以#显示程序包管理执行进度:每个#表示2%的进度 安装过程如图 另外还有一些其他选项 [install-options] --test: 测试安装,但不真正执行安装过程:dry