zoukankan      html  css  js  c++  java
  • Linux 基础教程 34-软件包管理-RPM

        对于Linux而言管理各类软件,如安装、卸载和升级等是常有的事情和必备的技能。以CentOS为例,常用的安装包命令有rpmyum

    RPM基础

        RPM(RedHat Package Manager)是一个系统软件包,功能类似于Windows中的添加/删除程序,但又比添加/删除程序功能更强。在Linux界广泛使用的依然为各类开源软件,也就是代码是开放的,这些代码通常会被打包为.tar.gz形式在互联网上进行传播,而这些开源软件被下载后仍然需要编译成二进制后才可以使用。这种试虽然兼容性好,但使用起来却不方便,存在一定的依赖关系,而文件较大时,编译出错的概率也非常大,对于日常使用人员也很麻烦。
        使用RPM可以很容易地对RPM形式的软件进行安装、升级、卸载、检验和查询等操作。RPM可以让用户直接以binary方式安装软件包且可代替用户查询是否已经安装了相关的库文件。在用RPM删除程序时,管理器会提示用户是否要删除相关程序。如果使用RPM进行升级,RPM会保留得得配置。另外RPM还保留了一个包含所有软件包资料的数据库,通过该数据库可以查询各个已经安装的软件包等等。

    RPM使用

    RPM安装路径

        Linux的目录是有统一规范的,这个规范的作用是保证任何一个软件都能找到另一款软件、文件。

    • 可以运行的文件存放在/bin或/usr/bin目录中
    • 库文件存放在/lib或/usr/lib目录中
    • 配置文件存放在/etc目录

        一般,RPM类型的文件在安装的时候,会先去读取文件内记载的设置参数内容,然后将该数据用于比较Linux环境,从而找出是否有属性依赖的软件还没有安装的问题。使用RPM方式安装的软件,在完成安装后,会将该软件的相关信息写入到/var/lib/rpm目录下的数据库文件中。该数据库非常重要,如果软件升级必须依赖它,如版本比对就是从这个数据库中读取数据的。

    RPM组成部分

        RPM包含RPM数据库RPM软件包文件RPM命令三部分。

    • RPM数据库

        Linux系统中保留了当前安装软件的数据库,路径位于/var/lib/rpm,可使用file命令查看目录内容。
    27-1 FileRPMDB_c2i.png

    /var/lib/rpm目录中的文件全部都是数据库文件且为二进制。
    
    • RPM软件包文件

        RPM软件包与tar归档文件类似:tar文件含有要安装到系统上的文件,软件包除了tar中的信息还包含一个RPM包头,该包头提供了有关软件包的信息,如名称、安装大小及其内容的简短描述等。另软件包还包含了属性依赖信息,即为了使文件可被安装和使用,必须安装的其他软件包、可执行文件和库文件等。在Linux安装光盘中,软件包文件通常位于Packages目录中。软件包文件的名称通常由下列几条信息构成:

    名称-版本-发行号.体系结构.rpm
    

        以CentOS 7中MySQL为例
    27-2 RPM-Query.png

    名称:mysql-community-common
    版本:5.7.20
    发行号:1
    体系结构:el7.x86_64。el7代表CentOS 7.x系统,x86_64是指该软件是针对哪种CPU架构开发的。
    
    • RPM命令

        RPM命令是用来管理数据库的工具,如下所示:

    命令选项 作用
    -i 安装软件包
    -U,-F 软件包升级
    -e 删除软件包
    -q 查询安装包
    -a 查询的所有安装包
    -v 显示安装的详细过程
    -h 显示安装进度
    --checksig 校验签名以确保其完整性和源发性
    更多RPM命令解释可以使用man rpm进行查看
    

    RPM安装

    RPM包安装格式如下:

    rpm -i rpm包的全路径及文件名
    rpm -ivh rpm包的全路径及文件名
    

    其中各参数解释如下:

    • -i:代表安装
    • -v:代表verbose,在安装过程中显示详细的信息
    • -h:代表hash,在安装过程中将显示#表示安装进度
    对于较大的RPM包,在安装时需要使用-ivh,可以方便查看在安装过程中的相应信息和进度。在安装过程出现warning时并不影响软件包的安装,出现error则无法继续安装,需要排错。
    

    示例1:本地安装VSFTPD
    27-3 InstallVSFTPD.png

        在上面我们使用的是本地安装,如果RPM软件包不在本地时,如何安装?RPM其实也支持在线安装。
    示例2:在线安装VSFTPD
    27-4 InstallVSFTPDOnline.png

    可与rpm -i结合使用的参数如下所示:

    命令选项 作用
    -h,--hash 安装输出#代表安装进度
    -v,--verbose 1个-v选项打印软件包名称,多个-v选项提供更多详细信息的输出
    --nodeps 即使不符合安装前提条件,仍进行安装
    --replace-files 安装时已有的文件会被新文件覆盖替换
    --force 即使已经安装了软件包,也要进行安装
    --test 不执行任何操作,只打印输出
    --noscripts 不执行与RPM安装有关的任何脚本
    --prefix 指定安装rpm包安装路径

    RPM卸载

        一旦安装了软件包,软件包文件则无关紧要了,该软件包现在就是本地计算机上面的一条数据库记录。因此,不再使用软件包文件名称,如vsftpd-3.0.2-22.el7.x86_64.rpm,而仅仅使用软件包名称,如vsftpd-3.0.2-22.el7.x86_64来指该软件包,使用

    rpm -e packagename
    

    进行删除软件包,其中-e代表earse。

    说明1:packagename:可以包含版本等信息,但不能包含后缀名.rpm
    说明2:rpm -e vsftpd-3.0.2-22.el7.x86_64(正确)
          rpm -e vsftpd-3.0.2-22.el7.x86_64.rpm(错误)
    

    27-5 UninstallVSFTPD_c2i.png

    RPM升级

        使用RPM升级软件包非常方便简单,主要参数是-U,当然也可以直接写-Uvh或-Fvh,两者区别如下:

    -Uvh:如果软件包没有安装,则直接安装,如果要安装的软件包是新的版本,则软件会进行自动更新为新的版本。
    -Fvh:如果软件包没有安装,则不会安装,也即只能对已经安装的软件包进行升级
    

    27-6 UpdatelVSFTPD_c2i.png

    RPM查询

        RPM软件包查询中与rpm -q package-name结合使用的一些选项和作用如下所示:

    命令选项 作用
    -a 查询所有已安装的软件包
    -f filename 拥有文件filename的软件包
    -p packagefilename 直接查询软件包文件packagefilename
    -i 软件包信息包头
    -l 列出软件包所拥有的文件
    --requires 安装包的先决条件
    --provides 显示安装包提供的内容
    --scripts 显示软件包的安装脚本
    -last 按时间排序显示系统上安装的RPM包

    1、查看已经安装的RPM包信息和安装的文件
    27-7 QueryVSFTPD_c2i.png
    2、查看RPM安装包的依赖项、提供的内容及最近安装包
    27-8 QueryVSFTPDCondition_c2i.png
    本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
    MyQRCode.jpg

  • 相关阅读:
    缓冲区溢出学习笔记 一
    什么是TNotifyEvent(转)
    Delphi中dll的使用(转)
    bash 编程
    感觉自己真的很幸运
    开始写程序,发现自己很弱智
    你是我心中不变的新绿(转载)
    做一次年度总结和清理
    今天简直成精力狂了^_^
    Double Do weeks Again : )
  • 原文地址:https://www.cnblogs.com/surpassme/p/9445978.html
Copyright © 2011-2022 走看看