设为首页 收藏本站
查看: 286|回复: 0

[经验分享] CentOS 6.6 x86_64平台上rpm命令实践

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-4-13 08:28:16 | 显示全部楼层 |阅读模式
  友情提醒:本文实验平台由vmware 10 + Centos 6.6 x86_64 组成,请谨慎使用文中涉及的命令。        以Redhat 发行版为实验对象的linux学习之路上,包管理命令rpm是个没法绕过的知识点,虽有yum的存在,但yum也只是rpm的前端工具而已。
    1.rpm程序包的命名与rpm包中包含的文件
      rpm包的命名基本类似这样:appname-Version-Release.ARCH.rpm
            appname:是包的名称
             Version:一般包含3部分:
                     major:主板本号
                     minor:此版本号
                     release:发行号
            Release:这是包自身修订标号,有时还包含使用的os信息。
            ARCH:这个包使用的平台类型。
      举例:
        zsh-4.3.10-7.el6.x86_64.rpm
        zsh是appname,就是包的名称。
        4.3.10是Version,这是程序的作者给定义的。4是主版本号,3是此版本号,10是发行号。
        7.el6是release,这是rpm的打包者给定义的。el6是该程序包使用的os信息,表示:企业版linux6.
        x86_64是ARCH,标明该rpm包是使用于x86构架下的64位硬件平台上。
        rpm是后缀。虽然linux中不已文件的后缀决定文件的类型,但有个后缀还是能点提示的。

     但是有时还是能遇到一些rpm包名中有特殊意义的命名字段:
        例如:yum-plugin-downloadonly-1.1.30-30.el6.noarch.rpm
         这个包的名字中个noarch,它表示对底层硬件平台没特殊要求,其实这个包就是一个文件,而不是二进制程序。
        一般rpm包中包含下面4种文件:可执行的二进制程序;程序的配置文件;库文件;帮助文档

      2 程序名称同rpm包名的关系:
      有的初学者喜欢根据程序名推测提供该程序的包名,其实这是不科学的。不应该推测,而是应该使用rpm命令来查找,但是程序若是通过源代码安装生成,那也只有推测了,怎么听起来像废话 j_0064.gif
      rpm包安装后生成的程序有的同rpm包名相同,比如:
wKioL1UpvOiBz2gUAAEt5TqQ_vg154.jpg
      有的rpm包安装后生成多个程序。比如:
wKiom1UpvErxiX1aAAOWOPzJ0H0257.jpg
    有的rpm包从名称上看很想象,比如:
xz-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm
xz-devel-4.999.9-0.5.beta.20091007git.el6.i686.rpm
    起始这是rpm包的分包机制,将经常使用的功能放置在主包中,将不常用到的功能放置支包中。
    3 rpm命令的使用:
    程序包的管理经常涉及的就是下面这5中情况:安装/卸载/查询/升级/验证。
    3.1)rpm包的安装:
    格式:rpm -i [option] Package_file

    option:-i 安装
            -v 显示过程,若相观看更详细安装信息可使用 -vv , -vvv
            -h 安装过程中使用百分比表示安装进度
             --test进行测试而非真实执行
             --nodeps:忽略包的依赖性警告而强制安装。
             --forece:强制安装
             --oldpackage:使用程序包低价版本取代现有版本,就是降级安装。
             *经常将 -i -v -h 三个参数写在一起-ivh来使用。

    举例:
实验情况下,请按照下面的进行:
wKioL1UpwuDhoEgVAALdme2aU58806.jpg

wKioL1Up-yzBjmwOAAIx8QL0xVg442.jpg


wKiom1Up-kyRFiHtAAKzPuFa1oE209.jpg
    3.2)rpm包的升级
    格式:#rpm {-U|-F}[option] Package_file
        -U:升级或者安装,若有旧版本存在的情况下就执行升级动作,若没有旧版本存在的的话就直接安装新版本。
        -F:升级,若有旧版本存在的情况下就执行升级动作,若没有旧版本存在的的话就停止升级动作。  
    option:
            -v 显示过程,若相观看更详细安装信息可使用 -vv , -vvv
            -h 安装过程中使用百分比表示进度
            --test进行测试而非真实执行
            --nodeps:忽略包的依赖性警告而强制安装。
            --forece:强制安装
            --oldpackage:使用程序包低价版本取代现有版本,就是降级安装。
            常使用-Uvh 或者 -Fvh组合使用。

    3.3)查询:
        3.3.1)对安装的rpm包进行查询:
            1)查询package_name为包名的rpm包是否已安装

                #rpm -q package_name
                只需写包名而非整个package_file
                eg:
                   [lijun@Test02 ~]$ rpm -q tree
                   tree-1.5.3-2.el6.x86_64
                   [lijun@Test02 ~]$
             2)查询所有已经安装的包
                 #rpm -qa
             3)查询文件是哪个rpm包安装后生成的
                 #rpm -qf /path/to/file
                 eg:
                    [lijun@Test02 ~]$ rpm -qf /etc/ssh/sshd_config
                    openssh-server-5.3p1-104.el6.x86_64
                     [lijun@Test02 ~]$
              4)查询rpm包安装后生成的文件有哪些:
                 #rpm -ql Package_name
                 eg:
                    [lijun@Test02 ~]$ rpm -ql openssh-server
                    /etc/pam.d/ssh-keycat
                    /etc/pam.d/sshd
                    /etc/rc.d/init.d/sshd
                    /etc/ssh/sshd_config
                    /etc/sysconfig/sshd
                    /usr/libexec/openssh/sftp-server
                    /usr/libexec/openssh/ssh-keycat
                    /usr/sbin/.sshd.hmac
                    /usr/sbin/sshd
                    /usr/share/doc/openssh-server-5.3p1
                    /usr/share/doc/openssh-server-5.3p1/HOWTO.ssh-keycat
                    /usr/share/man/man5/moduli.5.gz
                    /usr/share/man/man5/sshd_config.5.gz
                    /usr/share/man/man8/sftp-server.8.gz
                    /usr/share/man/man8/sshd.8.gz
                    /var/empty/sshd
                5)查询rpm的简要说明信息
                   #rpm -qi Package_name
wKiom1UqBFujiYHmAAWR9KqkylU030.jpg
                 6)查询rpm包安装后生成的所有配置文件
                    #rpm -qc Package_name
wKiom1UqBPajLrhNAAEIZTtDRKo142.jpg

                   7)查询rpm包安装后生成的文档信息
                        #rpm -qd Package_name
wKioL1UqBqHBsRTjAAHljdE9Xbc287.jpg
                    8)
                        查询rpm包制作时随版本变化的日志信息

                         #rpm -q --changelog Package_name
                        查询rpm包安装后提供的功能文件
                            #rpm -q --provides Package_name

                        查询rpm包依赖的功能文件
                            #rpm -q --requires Package_name

      3.3.2)对未安装的rpm包进行查询
        这个类同上面对已安装的rpm包进行的查询,只是-q要配合-p使用,常简写为-qp
            格式:#rpm -qp[option] Package_file
             option: -i:查询rpm的简要信息
                     -l:查询rpm安装后生成哪些文件
                     -c:查询rpm包安装后生成的配置文件有哪些
                     -d:查询rpm包安装后生成的文档有哪些         
                      --provides:查询rpm包安装后提供的功能文件
                      --requires 查询rpm包依赖的功能文件

eg:查询下httpd主程序包安装后提供哪些功能

wKiom1UqCVyBWuZAAAMGD_sD3WU694.jpg
eg:查询下httpd主程序安装时需要系统提供哪些支持文件
wKioL1UqC3jzTcxJAANdc5q4A7I125.jpg

        3.4)包的校验:
              3.4.1)检查rpm包安装后生成的文件被改动的情况
                #rpm -V Package_name
                检查的结果中没有发生改变的使用“.”表示,发生改变的使用下的字符表示特定含义:   

                 没有发送改变的位使用.标识,而发生改变的地方使用下面字符标识:
                       S 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

                eg:检查vsftpd这个rpm包安装后生成的文件中,生改变的情况
wKiom1UqC_CjeM57AAC-GgeL2Vo670.jpg

   可以看到vsftpd rpm包生成的系统文件中/etc/vsftpd/vsftpd.conf发生了改变,文件的大小,md5
校验码和mtime时间戳发生了改变。            

                    3.4.2)检查包的来源合法性和内容合法性
                    来源合法性:依赖包制作者提供的数字签名
                    内容合法性:依赖包制作者提供的内容的特征码与我们得到的特征码比对是否相同。
                    在系统光盘中附带有包含上述信息的文件,需使用rpm --import 自行导入

                     #rpm --import RPM-GPG-KEY-XXX
                     #rpm -K Package_file
eg:检查光标中httpd包是否完整
wKioL1UqD2nxSdJqAAPI0hUGtkA944.jpg                

            3.5)包的卸载:
                格式:#rpm -e [option] Package_name
                option:
                     --allmatches:如果一个程序包被安装了多个版本,此选项一次全部卸载
                     --nodeps:忽略依赖关系
                     --test:测试卸载
                     *注意:程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是重命名留存(叫后缀.rpmsave)
eg:卸载安装的tree命令
wKiom1UqD-nSL04kAAMK-yn3nOg597.jpg
        4.rpm工具使用库文件
        rpm命令之所以对已经安装的rpm包能进行查询,对生成的文件进行来源检索,是因为系统上存在rpm数据库,放置在/var/lib/rpm下。
        对rpm数据库也可进行重建工作使用下面的命令:
        rpm {--initdb|--rebuilddb}{--dbpath DIRECTORY}
                  -initdb:初始化数据库,数据库完全不存在时执行。
                  --rebuilddb:无论当前数据存在与否,都会直接重新建库。






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-56466-1-1.html 上篇帖子: rhel在字符模式下安装图形界面 下篇帖子: bind的简单安装和配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表