对于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命令查看目录内容。

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

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

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

    以CentOS 7中MySQL为例

名称: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

    在上面我们使用的是本地安装,如果RPM软件包不在本地时,如何安装?RPM其实也支持在线安装。

示例2:在线安装VSFTPD

可与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(错误)

RPM升级

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

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

RPM查询

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

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

1、查看已经安装的RPM包信息和安装的文件



2、查看RPM安装包的依赖项、提供的内容及最近安装包



本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

Linux 基础教程 34-软件包管理-RPM的更多相关文章

  1. Linux基础四:软件包管理

    四.软件包管理器: 1.概念 红帽有两款软件包管理器,分别是rpm和yum. 1.rpm软件包管理器  ->  用来安装单个包  ->  .rpm文件 红帽的安装包文件,都放在Packag ...

  2. linux基础之程序包管理(rpm,yum)

    一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...

  3. 嵌入式LINUX基础教程 第2版

    嵌入式LINUX基础教程  第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基 ...

  4. [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY

    [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...

  5. Spring Boot 2.x基础教程:事务管理入门

    什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻 ...

  6. Linux 基础教程 35-软件包管理-YUM

    YUM基础     使用RPM在Linux中安装.卸载软件或服务进会经常碰到RPM包的依赖,而我们在安装软件A时,提示依赖于软件B,安装软件B时又会出现提示依赖于软件C等一系列的依赖关系.这时大家会提 ...

  7. Linux速通08 网络原理及基础设置、软件包管理

    使用 ifconfig命令来维护网络 # ifconfig 命令:显示所有正在启动的网卡的详细信息或设定系统中网卡的 IP地址 # 应用 ifconfig命令设定网卡的 IP地址: * 例:修改 et ...

  8. 软件包管理(rpm,yum)

    软件包管理相关软件: 软件包管理器的核心功能: .制作软件包 .安装,卸载,升级,查询,效验 Redhat ,SUSE : RPM Debian :dpt 依赖关系; 前端工具;yum ,apt-ge ...

  9. Linux基础三(软件安装管理)

    目录: 一.Linux 中软件包的分类 1.源码包 2.二进制包 3.源码包 4.软件安装的选择 二.软件安装之 RPM 1.背景知识 2.准备知识 3.安装升级与卸载 4.查询校验与提取 三.软件安 ...

随机推荐

  1. CentOS 6.5下安装Oracle 11g(转)

    最近开始学习CentOS使用,做些记录. 参考文献:Cent OS 6_5(x86_64)下安装Oracle 11g 一.硬件要求 1.内存&swap Minimum:1 GB of RAM ...

  2. 老叶观点:MySQL开发规范之我见(更新版)

    转自:http://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=207239419&idx=2&sn=bddbe0a657758 ...

  3. java 面向对象 — 封装

      

  4. 单链表LRU

    单链表实现lru 越靠近链表尾部的节点是越早之前访问的 当有一个新的数据被访问时,从链表头开始顺序遍历链表 1.如果此数据之前已经被缓存在链表中 遍历得到这个数据对应的节点,并将其从原来的位置删除,然 ...

  5. HDU 3068 最长回文(manachar算法)

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. Autofac框架详解

    一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...

  7. 基于DB的编程

    现在我们大多数的开发都是基于数据库,虽然数据库为我们提供了事务机制,保证存储的数据的ACID,但是,当我们在完成一个业务操作时,涉及到对数据库的大量操作,如果把这些操作在一个事务中,肯定是安全的,但是 ...

  8. params over length limit is 20

  9. delphi 组件容器TObjectList代替List

    delphi 组件容器TObjectList代替List TObjectList objList->delete(0); 这个会释放第0行元素的对象 class TTabFormInfo { p ...

  10. java 重定向和转发 的区别

    重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变. 重定向的速度比转发慢,因为浏览器 ...