一点点RPM

1、软件管理器简介

         随着Linux的不断发展及越来越多的人投入到Linux大家庭中,软件管理器的作用对于还无法熟练掌握源码编译安装的人们还是显得尤为重要,同时,由Linux开发商在为其编译完成的软件包在某种程度上要比在网络上流传的软件包要安全的多;所以,掌握Linux常用的软件管理器还是非常重要的;

         目前常见的软件包管理器包括:RPMDPKG,简单介绍如下(见鸟哥):

代表厂商

软件管理机制

管理命令

在线升级

Red Hat/Suse

RPM

rpm

YUM(yum)

Debian/Ubuntu

DPKG

dpkg

APT(apt-get)

2RPM简介

    RPM(Redhat Package Manager)是由Red Hat公司所发展出来一种软件包管理机制,在之前,由于软件安装需要依赖其他属性的缘故,安装的过程将会非常复杂而RPM则会大大简化这一过程;

RPM会将软件提前编译并打包成RPM包的格式,同时通过打包好的软件里的默认数据库记录下此软件在安装过程中所要求的依赖关系,在执行软件安装时,会先依照软所记录的数据查询当前系统的环境是否满足,如满足,则执行安装;如不满足则不予以安装;

但是,RPM包的缺点也是很多的:

1、软件包的安装环境已经在制作时提前决定好了,所以不同的厂商发布的RPM文件通常不会通用;

2、厂商提供的RPM包安装时方便,安全性高,但通常版本较低,如果要体验新特性,新版本,一般这种RPM包是不会满足我们的需求的;

3、由于依赖关系的存在,RPM包的卸载升级也需要格外谨慎;最好是只卸载升级与其他软件依赖关系不大的软件包;

 

3、从程序组成说起

   软件在编译前,是一段源代码,而在编译后,会分割成一段段我们能够更好理解的文件,基本如下:

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/sbin, /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, /usr/local/share/man, /usr/local/share/doc

    更简单的说,我觉得rpm就是将这些文件按照自己需要打包在一起成为一个软件包,而由于主观需要或其他元素,内容并不会往往是我们所需求的;

4、看看格式

         centos 6.6的自带的mysql为例:

1.png

       要补充的是,Linux当中,很多源码包会因为功能被拆分为如下的多个包,仍然以httpd为例:

2.png

5、看看rpm包来源

   a.系统的发行光盘镜像或官方站点(或站点镜像服务器)

    挂载光盘:mount -r /dev/cdrom /media/cdrom

    官方站点,镜像:

        mirrors.sohu.com

        mirrors.163.com

        mirrors.aliyun.com

    b.程序包的官方站点

    c.第三方组织:epel

    d.搜索引擎

        http://rpmfind.net

        http://rpm.pbone.net

        http://pkgs.org

建议:安装之前要验证其的来源合法性和包的完整性;

6RPM管理命令

         归根结底,在我们正确获得所要的RPM包后,RPM包的管理使用就成为重中之重了,而RPM包管理通过rpm这个命令来完成,总结下常用选项如下:

a. 安装篇:

rpm

Usagerpm {-i|–install} [install-options] Package_file…

安装:

常用组合:

-ivh

-i, –install

安装

-h

hash,#来表示安装进度,一个#相当于2%

-v, -vv, -vvv

显示安装过程中的详细信息;-vv,-vvv显示更多信息;

–test

测试安装,而仅报告依赖关系及冲突信息等;

–nodeps

忽略依赖关系

–replacepkgs

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

–force

强制安装

注意事项

程序包之间存在依赖关系,选用-nodeps时,安装可能会成功,但未必能够成功执行;选用-replacepkgs时,要注意配置文件;

b、升级篇

rpm

rpm   {-U|–upgrade} [install-options] PACKAGE_FILE… 升级或安装

rpm   {-F|–freshen} [install-options] PACKAGE_FILE… 仅升级

升级选项:

常用组合:

-Uvh

-Fvh

-U

升级或安装

-F

升级

–oldpackage

降级到旧版本

同样支持-h, -v ,-vv,-vvv,-force选项

注意事项

1. 一定不要对内核执行升级;Linux允许多内核共存,所以,可以直接安装多个不同版本的内核

2.如果程序包的配置文件安装后曾经被修改,升级时,新版本的配置文件不会覆盖老版本的配置文件,而是把新版本的配置文件重命名(加后缀.rpmnew)后保存;

c、卸载篇

rpm

rpm   {-e|–erase} [–allmatches] [–nodeps]    [–test] PACKAGE_NAME …

卸载选项:

-e

卸载

–allmatches

如果一个程序包同时安装多个版本,则卸载所有  

–test

测试写在:dry-run模式

同样支持-h, -v ,-vv,-vvv,-force,-nodeps选项

注意事项

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

d、查询篇

rpm

rpm   {-q|–query} [select-options] [query-options]

常用选项:

yeah,所有的一切都以加上q为前提;

-q

查询某包或某些包是否安装

-qa

查询已安装的所有包

-qf

查询某文件是有哪个安装包安装生成

-qi

查询某包的简要说明信息

-qip

查询某未安装的包文件的相关信息

-ql

查询某包安装生成的文件列表

-qc

查询某包安装完成后生成的所有配置文件

-qd

查询某包安装完成后的所有帮助文件

-q –changelog

查询某包制作时随版本变化的changelog信息

-q –provides

查询某包提供的capabilities

-q –requires

查询某包依赖的capabilities

-q –scripts

查询某包安装或卸载时的执行脚本

注意事项

脚本有四类:

preinstall:安装过程开始前执行的脚本;postinstall:安装过程完成后执行的脚本;preuninstall:卸载开始前执行的脚本;postuninstall:卸载过程完成后执行的脚本

e、校验篇查询包安装之后生成的文件是否发生了改变

         查询方式:

                   rpm {-V|–verify} [select-options] [verify-options]

         常见用法:

                   rpm -V PACKAGE_NAMES

S file Size differs       文件大小

M Mode differs (includes permissions and file type)  权限

5 digest (formerly MD5 sum) differs        md5校验和

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

注:

    1、文件属性正常,则会显示点’.’,否则会显示其代表字符,如:

    修改了httpd配置文件后:

    [root@AZtest ~]# rpm -V httpd

    S.5….T.  c /etc/httpd/conf/httpd.conf

    2RPM校验也会用到-a(所有已安装包)-f(指定文件)-p(指定RPM)–noscripts–nodeps等选项;

                  

f、程序包的合法性验证:

   来源合法:由信任的制作者提供

       依赖于:制作者的数字签名,签名是作者使用自己的私钥加密程序包特征码进行的;

   内容合法:包未被2次修改,完整性校验成功;

       依赖于:制作者提供的程序包特征码:

   验证方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;

   验证其光盘中程序包的来源及完整性:

       rpm –import /path/to/RPM-GPG-KEY-FILE

验正:rpm {-K|–checksig} PACKAGE_FILE

             –nosignature:不检查来源合法性

             –nodigest:不检查完整性

f、重建数据库篇

         rpm管理器数据库:/var/lib/rpm,如果某些操作导致RPM数据库/var/lib/rpm内的文件损坏,可使用如下命令

rpm

rpm   {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY] [–root DIRECTORY]

重建数据库:

–initab

初始化数据库,即数据库完全不存时,可新建之

–rebuilddb

无论当前数据存在与否,都会直接重建此库

注意事项

     最后说一句,为了强迫自己记忆和手敲,不记录例子了。。。

原创文章,作者:AZ,如若转载,请注明出处:http://www.178linux.com/9664

(0)
上一篇 2015-12-06 20:24
下一篇 2015-12-06 20:28

相关推荐

  • vim编译器与shell脚本简介

    一、vim文本编译器       vi:Visual Interface,文本编辑器;   文本: ASCII Unicode  文本编辑种类:行编辑器:sed  ;全屏编辑器:nano,vi ,vim ;其他编辑器:gedit(图形),g…

    Linux干货 2016-11-24
  • 马哥教育网络21期+第七周练习博客

    马哥教育网络21期+第七周练习博客 1、创建一个10G分区,并格式为ext4文件系统; 首先挂载一个新的硬盘使用fdisk /dev/sdb进入相应的磁盘空间划分一个10G的磁盘空间; Command (m for help): n Command action    …

    Linux干货 2016-08-22
  • ☞LVS

    LVS 概述 LVS工作类型 LVS NAT LVS DR(默认) Direct Routing带来的问题 限制响应模型的内核参数 LVS TUN LVS FULLNAT scheduling-method 静态调度算法 动态调度算法 CentOS 7 中的ipvs组件 安装ipvsadm程序 主要文件 ipvsadm命令 配置集群服务 NAT方法示例 DR…

    Linux干货 2016-10-26
  • 初步了解计算机组成及Linux系统

    一、计算机的组成及其功能: 计算机主要由三部分组成: 输入单元:包括键盘、鼠标、卡片阅读器、扫描仪、手写板等。 输出单元使我们能够将一些数据输入到主机里,然后再由主机的功能处理成为图表或文章等信息后,将结果传输到输出设备,如屏幕或打印机上面。 中央处理器(CPU):其中包含算数逻辑、控制、记忆等单元。 CPU作为一个具有特定功能的芯片,里面含有微指令集,如果…

    Linux干货 2017-09-24
  • sed基本用法详解

    一、sed介绍:        sed是非交互式的编辑器,同时又是面向字符流的,一次处理一行文本。当前输入的行被缓存至一个被称为模式空间(pattern space)的内存空间中,与给定的模式进行比对,若不匹配,则将内容输出至屏幕,之后读取第二行;若匹配,则执行编辑命令,命令执行完成后,将模式空间中…

    Linux干货 2016-08-10
  • 互联网的实现

    互联网的实现 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡就收到了,两者实际上根本就不知道对方的物理位置,这难道不是一件很神奇的事情吗? 互联网的**核心**是一些列协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网做出了详细的规定。 互联网协议入门 概述 五层模型…

    Linux干货 2017-05-05

评论列表(1条)

  • stanley
    stanley 2015-12-06 20:27

    总结的很不错,献有人总结的如此详细,已置顶