Linux学习之RPM包管理-rpm命令管理(十六)
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命令管理(十六)的更多相关文章
- 15. Linux提取RPM包文件(cpio命令)详解
在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令.cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复 ...
- Linux课程---9、安装RPM包(RPM的全称是什么)
Linux课程---9.安装RPM包(RPM的全称是什么) 一.总结 一句话总结: redhat package management 1.在Packages中查找和php相关的文件如何查找? ls ...
- (转) centos7 RPM包之rpm命令
原文:https://blog.csdn.net/capecape/article/details/78529159 RPM包与源码包的区别1.软件包分类 源码包:C源代码包 rpm包:编译之后的二进 ...
- Linux学习之路-Linux-at及cron命令【7】---20171215
Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03 ntpdate 命令 [root@ ...
- 『学了就忘』Linux服务管理 — 76、RPM包安装的服务管理
目录 1.独立服务的启动管理 2.独立服务的自启动管理 方式一: 方式二:(推荐) 方式三: 3.验证 1.独立服务的启动管理 (1)使用/etc/init.d/目录中的启动脚本启动服务(推荐) [r ...
- 软件包管理_rpm命令管理_yum工具管理_文件归档压缩_源码包管理
rpm命令管理软件 对于挂载的像U盘那种都会在midea目录下,但是会显示在桌面上 安装软件(i:install,v:verbose冗长的,h:human):rpm -ivh xxxx.rpm 安 ...
- Linux学习笔记:常用100条命令(一)
linux常用命令 1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3 ...
- linux学习笔记(1) -- 关于命令的一些操作
Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到ho ...
- 从rpm包提取rpm spec 的几种方法
包含了源码包 先安装,然后在rpmbuild 目录直接可以查看文件 不用安装 ,使用rpm2cpio rpm2cpio myrpm.src.rpm | cpio -civ '*.spec' 没有源码 ...
- Linux学习笔记(3)-常用命令
江湖传言,Linux和Windows不同,他主要的用途是在一些服务器,或者片内系统上,所以人机交互界面自然就没有Windows那么漂亮,其实也没有那个必要. 所以,学习Linux的第一步,就是学习他那 ...
随机推荐
- Confluence 6 配置 Office 转换器
Office 连接器(Office Connector)允许 Confluence 用户能够查看和编辑从 Microsoft Office 和 Open Office 中导入并附加到页面的内容. Of ...
- mysql视图的作用
测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用实在是太强大了,以下是我体验过 ...
- 给div拼接html 拼接字符串
简单描述:拼接html 拼接字符串,说实话,拼接这种东西我自己弄,得花费很多时间,主要是转义字符,单引号,双引号这种小细节调整起来比较麻烦,一旦疏忽多了少了一个符号,页面就有点抽象了,我呢比较粗枝大叶 ...
- 小LK玩积木
小LK玩积木 时间限制: 1 Sec 内存限制: 128 MB 题目描述 HH最近通过黑洞APP下载了一个盗梦APP,据说能进入一个人的梦里做一些嘿嘿嘿的事情,秉着怀疑的态度HH偷偷地潜入LK的梦中 ...
- git使用diff----git-pull之后如何查看拉下来的文件有那些修改
git pull拉取 git pull对于拉下来的修改文件自动对其进行git add /rm 及git commit 操作.所以拉下来的文件有那些修改,查看的方式可把它们归结于上一次提交的比较. gi ...
- JS:事件循环机制、调用栈以及任务队列
点击查看原文 写在前面 js里的事件循环机制十分有趣.从很多面试题也可以看出来,考察简单的setTimeout也就是考察这个机制的. 在之前,我只是简单地认为由于函数执行很快,setTimeout执行 ...
- 在vue项目中使用axios发送FormData
这个是axios的中文文档,挺详细的: https://www.kancloud.cn/luponu/axios/873153 文档中的 使用 application/x-www-form-ur ...
- selenium 操作复选框
场景 从上一节的例子中可以看出,webdriver可以很方便的使用findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象, 这时候就需要使用findElements方法. 定 ...
- hexo+github page +markdown问题汇总
1.没有权限提交 解决办法:把git版本由2.x改为1.9 未完待续
- 547. Friend Circles
There are N students in a class. Some of them are friends, while some are not. Their friendship is t ...