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. Linux课程---9、安装RPM包(RPM的全称是什么)

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. yum 下载rpm包 安装rpm包依赖关系

    方法一:yumdownloader 工具 1.安装工具包 yum install yum-utils -y 2.下载一个RPM包 yumdownloader <package-name> ...

  9. Linux学习之文件属性chattr权限与sudo权限(十二)

    Linux学习之文件属性chattr权限与sudo权限 文件属性chattr Linux文件的隐藏属性在保护系统文件的安全性上非常重要,是防止误操作的,对root用户也同样有效.chattr命令只能在 ...

  10. Linux内核设计与实现 总结笔记(第十六章)页高速缓存和页回写

    页高速缓存是Linux内核实现磁盘缓存.磁盘告诉缓存重要源自:第一,访问磁盘的速度要远远低于访问内存. 第二,数据一旦被访问,就很有可能在短期内再次被访问到.这种短时期内集中访问同一片数据的原理称作临 ...

随机推荐

  1. vim vundle 安装Base16 Vim主题

    1.vim /etc/vimrc set background=dark colorscheme base16-default 2.同样在vimrc中的vundle位置添加 Plugin 'chris ...

  2. c# 搭建高效分布式web (进一步实现软件的热插拔)

    一 加入 和其他网站相同的特性 nginx 做代理 并且和IIS 进行搭配搭建 web 前台 二 缓存使用 memcached 和session 共享做服务器的缓存处理减轻sql数据库的压力 包含关系 ...

  3. webservice 学习笔记

    1.webservice的概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  4. Linux电源管理(11)_Runtime PM之功能描述

    转自:http://www.wowotech.net/pm_subsystem/rpm_overview.html 1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激 ...

  5. [习题]日历(Calendar)控件的障眼法(.Visible属性),使用时才出现?不用就消失?

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/calendar_icon_visible.aspx [习题]日历(Cal ...

  6. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) A. Bear and Poker 分解

    A. Bear and Poker Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/573/pro ...

  7. MongoDB开发应用实战

    http://special.csdn.net/mongodb/ http://www.csdn.net/article/2011-03-21/294271 http://blog.itpub.net ...

  8. 数据结构——队列(Queues)

    队列的存储特性:FIFO(first in first out)即先进先出原则 单向/双向队列 *优先队列(与queue不同) 存储方式: 带尾指针的单向链表 / 数组 queue类: queue() ...

  9. 首个写博客的Android任务

    任务1 单击按钮图片选择器 使用TextView,RadioGroup,RadioButton完成. 设置单击按钮选择显示花朵. 首先设置了页面布局 <LinearLayout xmlns:an ...

  10. 【洛谷P2704】炮兵阵地

    题目大意:定义一个炮兵会影响该点所在坐标上下左右两个格子的范围,求一个 N*M 的网格里最多可以放多少个炮兵. 题解:发现这个问题有需要记录两个状态,即:上一层的状态和上两层的状态,若直接进行记录,空 ...