Linux学习之RPM包管理-rpm命令管理

目录

简介

RPM包依赖性

包全名与包名

rpm软件包安装

rpm软件包卸载

升级降级rpm软件包

rpm软件包的查询

rpm软件包校验

简介

RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo
Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

  

RPM软件包名例子:
sudo-1.7.2p1-5.e15.i386.rpm
其中
软件名(sudo)
版本号 (1.7.2pl)
软件发布的次数(5)
适合的Linux平台 (el5)
适合的硬件平台(i386)
rpm包扩展名(rpm)

  

RPM包依赖性

RPM包在应用的时候,最大的问题就是依赖性,安装一个软件包需要安装多个依赖包。
树形依赖:a->b->c
安装a,需要先安装b,安装b需要先安装c
安装:我们要先安装c,再安装b,再安装a。
卸载:先卸载a,再卸载b,然后卸载c。 环形依赖:a->b->c->a
安装:一条命令安装a,b,c。 模块依赖:模块依赖查询网站:www.rpmfind.net
模块依赖又称为库依赖,指依赖的是某个包里面的某个软件,当然只需要安装那个包就行,那么我们怎么知道这个软件属于哪个包,上面这个网站可以查询。

  

包全名与包名

包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径。
全名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库。

  

在下面所有操作前我们先把光盘挂载上去

挂载光盘:
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom

  

rpm软件包安装

rpm -ivh 包全名
安装的rpm软件包主要参数
-i 或--install 安装软件包
-v 显示安装过程的信息
-vv 显示安装过程中的详细信息
-h 以#号来表示程序包的执行进度 安装升级卸载中会用到的一些参数 --test:测试安装,只显示过程,并不执行安装 --excludedocs:不安装软件包中的文档文件。 --prefix PATH:将软件包安装到由PATH指定的路径下。 -- nodeps:忽略依赖关系,在安装程序的时,有些时候会因为软件包的依赖关系无法安装,这时就可以用nodeps来解决。 -- replacepkgs:覆盖安装软件 -- replacefiles:只覆盖软件的文件 -- nosignature: 不检查软件包来源合法性 -- nodigest:不检查软件包的完整性 -- noscripts:不执行程序包脚本,在软件包中通常都有一些脚本,来定义一些像安装的路径之类的。 -- nopre:不执行安装前脚本 -- nopost:不执行安装后脚本 -- nopreun:不执行卸载前脚本 -- nopostun:不执行卸载后脚本 -- force: 强制安装

  

例子

rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm

  

 安装时的特殊情况

覆盖安装
软件包已经被安装,如果覆盖该1安装软件包,可以在命令行上使用--replacepkgs选项
rpm -ivh --replacepkgs sudo-1.7.2p1-5.el5.i386.rpm 文件冲突
如果要安装软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息
要想让rmp忽略该错误信息,请使用--replacefiles命令行选项
rpm -ivh --replacefiles sudo-1.7.2p1-5.el5.i386.rpm 未解决依赖关系
RPM软件包可能依赖于其它软件包,在安装了特定包之后才能安装该软件包
rpm -ivh sudo-1.7.2pl-5el5.i386.rpm
failed dependencies
sudo is needed by bark-3.2-11
必须安装完所依赖的软件包。才能解决这个问题,强制安装使用--nodeps选项

  

rpm软件包卸载

-e或者--erase来卸载
rpm -e sudo-1.7.2p1-5.el5.i386.rpm
注意:如果其它软件包有依赖关系,卸载时会产生提示信息,可使用--nodeps强行卸载。

  

升级降级rpm软件包

-U 或 --upgrade 安装有旧版程序包,则升级如果不存在旧版程序包,则安装
-F 或 --freshen安装的有旧版程序包则升级,如果不存在旧版程序包,则不执行升级操作 -- oldpackage:安装旧版本的软件包,把软件降级 注:如果旧程序的配置文件安装后曾被修改,升级时新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名“filename.rpmnew”后保留。

  

rpm软件包的查询

查询:
rpm -q 包名
例子:rpm -q sudo
例子:rpm -qa | grep samba
q选项可以查询rpm软件包的信息

下面是q选项的一些参数

-a: 所有包,可以用来查询软件来自那个rpm包

-f: 查看指定的文件由哪个程序包安装生成

-p:针对尚未安装的程序包文件做查询操作

-- whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

-- whatrequires CAPABILITY:查询指定的CAPABILITY被
哪个包所依赖 --changelog:查询rpm包的更新信息 -c: 查询程序的配置文件 -d: 查询程序的文档 -i: information
-l: 查看指定的程序包安装后生成的所有文件 --scripts:程序包自带的脚本 --provides: 列出指定程序包所提供的CAPABILITY -R: 查询指定的程序包所依赖的CAPABILITY

  

rpm软件包校验

rpm -V或--verify 可以验证软件包文件有没有被修改过

S 文件大小不同
M 权限和文件类型和原文件不一致
5 MD5不一致
D 设备主/次编号不匹配
L 路径不匹配
U 属主不同
G 所属组不一致
T 修改时间不同
P 功能不同
rpm - K或checksig 检查包的完整性和签名
上面的问题不是软件包有问题,而是系统默认没有导入密钥,所以检查结果是not ok。下面我们导入密钥,在系统安装是安装程序会把密钥放在/etc/pkirpm-gpg/目录下,密钥的文件名是RPM-GPG-KEY-CentOS-7。 文件类型:
c 配置文件(config file)
d 普通文件 (documenttation)
g "鬼文件"(ghost file),很少见,就是该文件不应该被这个RPM包包含
l 授权文件(license file)
r 描述文件 (read me)

  

Linux学习之RPM包管理-rpm命令管理(十六)的更多相关文章

  1. 15. Linux提取RPM包文件(cpio命令)详解

    在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令.cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复 ...

  2. Linux课程---9、安装RPM包(RPM的全称是什么)

    Linux课程---9.安装RPM包(RPM的全称是什么) 一.总结 一句话总结: redhat package management 1.在Packages中查找和php相关的文件如何查找? ls ...

  3. (转) centos7 RPM包之rpm命令

    原文:https://blog.csdn.net/capecape/article/details/78529159 RPM包与源码包的区别1.软件包分类 源码包:C源代码包 rpm包:编译之后的二进 ...

  4. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

  5. 『学了就忘』Linux服务管理 — 76、RPM包安装的服务管理

    目录 1.独立服务的启动管理 2.独立服务的自启动管理 方式一: 方式二:(推荐) 方式三: 3.验证 1.独立服务的启动管理 (1)使用/etc/init.d/目录中的启动脚本启动服务(推荐) [r ...

  6. 软件包管理_rpm命令管理_yum工具管理_文件归档压缩_源码包管理

    rpm命令管理软件 对于挂载的像U盘那种都会在midea目录下,但是会显示在桌面上 安装软件(i:install,v:verbose冗长的,h:human):rpm  -ivh  xxxx.rpm 安 ...

  7. Linux学习笔记:常用100条命令(一)

    linux常用命令 1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3 ...

  8. linux学习笔记(1) -- 关于命令的一些操作

    Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到ho ...

  9. 从rpm包提取rpm spec 的几种方法

    包含了源码包 先安装,然后在rpmbuild 目录直接可以查看文件 不用安装 ,使用rpm2cpio rpm2cpio myrpm.src.rpm | cpio -civ '*.spec' 没有源码 ...

  10. Linux学习笔记(3)-常用命令

    江湖传言,Linux和Windows不同,他主要的用途是在一些服务器,或者片内系统上,所以人机交互界面自然就没有Windows那么漂亮,其实也没有那个必要. 所以,学习Linux的第一步,就是学习他那 ...

随机推荐

  1. 修改 sql 提示符信息:

    Last login: Thu Dec 8 19:18:08 2016 from 192.168.242.1 [root@localhost ~]# su - oracle [oracle@local ...

  2. Confluence 6 禁用或者重新启用一个任务

    在默认的情况下,所有的 Confluence 计划任务都是默认启用的. 使用 启用(Disable )/ 禁用(Enable )连接操作来启用和禁用每一个计划任务. 不是所有的加护任务都可以被禁用的. ...

  3. LeetCode(115):不同的子序列

    Hard! 题目描述: 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字 ...

  4. 网络编程—tcp

    一.TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF ...

  5. CF508E

    贪心题是很有趣的... 首先,本题为括号匹配问题,那么可以考虑进行栈模拟 然后,我们思考一下如何匹配:虽然题目中仅对右括号的位置提出了区域性要求,但可以发现,对能匹配上的栈顶括号立刻进行匹配一定是一种 ...

  6. Nginx详解二十七:Nginx架构篇之安全篇

    1.常见的恶意行为:爬虫行为和恶意抓取.资源盗用 解决方案: 基础防盗链功能:不让恶意用户能轻易爬去网站对外数据 secure_link_module模块:对数据安全性提高,加密验证和失效性,适合核心 ...

  7. 性能测试四十一:sql案例之慢sql配置、执行计划和索引

    MYSQL 慢查询使用方法MYSQL慢查询介绍分析MySQL语句查询性能的问题时候,可以在MySQL记录中查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”.MYSQL自带的慢查 ...

  8. druid配置oracle遇到: 未找到要求的 FROM 关键字 errorCode 923, state 42000

    2018年05月29日 16:41:17 阅读数:518 问题背景 项目要连接oracle数据,采用的是durid连接池,但是基本配置下来,运行时发现了这个错误. 方案 可能有的一个错误就是,拼凑sq ...

  9. 充分认识Mysql

    使用开源产品是一种潮流.在使用之前,我们首先需要对Mysql 有一定的了解,特别是Mysql 的缺点.只有了解其缺点后,我们才知道,能不能真正的应用到我们的业务场景中去. 2.1 Mysql 数据库简 ...

  10. Spring Boot学习--项目启动时执行指定service的指定方法

    Springboot给我们提供了两种“开机启动”某些方法的方式:ApplicationRunner和CommandLineRunner. 这两种方法提供的目的是为了满足,在项目启动的时候立刻执行某些方 ...