热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

CentOS6.6上rpm命令实践

友情提醒:本文实验平台由vmware10+Centos6.6x86_64组成,请谨慎使用文中涉及的命令。以Redhat发行版为实验对象的linux学习之路上,包管理命令rpm是个没法绕过的知识点,虽有yum的存在,但yum也只是rpm的前端工

    友情提醒:本文实验平台由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命令来查找,但是程序若是通过源代码安装生成,那也只有推测了,怎么听起来像废话

      rpm包安装后生成的程序有的同rpm包名相同,比如:

      有的rpm包安装后生成多个程序。比如:

    有的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来使用。

    举例:

实验情况下,请按照下面的进行:

 

 

 

    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

                 6)查询rpm包安装后生成的所有配置文件

                    #rpm -qc Package_name

                   7)查询rpm包安装后生成的文档信息

                        #rpm -qd Package_name

                    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主程序包安装后提供哪些功能

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

 

        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包安装后生成的文件中,生改变的情况

   可以看到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包是否完整

                

            3.5)包的卸载:

                格式:#rpm -e [option] Package_name

                option:

                     --allmatches:如果一个程序包被安装了多个版本,此选项一次全部卸载
                     --nodeps:忽略依赖关系
                     --test:测试卸载
                     *注意:程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是重命名留存(叫后缀.rpmsave)

eg:卸载安装的tree命令

        4.rpm工具使用库文件

        rpm命令之所以对已经安装的rpm包能进行查询,对生成的文件进行来源检索,是因为系统上存在rpm数据库,放置在/var/lib/rpm下。

        对rpm数据库也可进行重建工作使用下面的命令:

        rpm {--initdb|--rebuilddb}{--dbpath DIRECTORY}
                  -initdb:初始化数据库,数据库完全不存在时执行。
         &

推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了使用SSH免密登录的步骤,包括生成公私钥、传递公钥给被登录机、修改文件权限的操作。同时提醒用户注意私钥的传递方式,建议使用U盘等离线方式传递。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • linux 禁止指定ip访问
    linux中如何禁止指定的ip访问呢?比如被别人暴力破解,被别人使用不同的密码尝试登录:所以我想直接禁用这些ip的访问.怎么办呢?解决方案:修改配置文件etchosts.deny把 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
author-avatar
ke天天_809
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有