软件包管理RPM
RPM
程序包管理器,可实现对程序包的安装、更新、查询和卸载操作,应用广泛
下面通过实际操作来更好的理解RPM的功能
安装程序:
-i //安装数据包参数
-v //显示安装过程
-vv //显示更详细的安装信息
-h //配合-v更加直观的显示程序安装过程,但是在程序卸载时不能使用
[root@CentOs6 ~]#rpm -ivh /media/CentOS_6.9_Final/Packages/tree-1.5.3-3.el6.x86_64.rpm Preparing... ########################################### [100%]1:tree ########################################### [100%] //显示安装进度条
rpm要安装程序包必须得指定程序包的具体路径,否则无法安装
rpm包管理器有一个非常重要的数据库,/var/lib/rpm
程序包名称及版本
包之间的依赖关系
包安装后的文件路径及校验码信息
这些信息都存储在rpm的数据库中,一旦数据库被破坏,包管理就会受到影响,
不仅rpm不能用,yum也不能用
如果我们仅仅是想测试下某个程序包能不能安装,可以使用以下参数
--test //测试安装,并不真正安装
[root@CentOs6 Packages]#rpm -ivh --test tree-1.5.3-3.el6.x86_64.rpm warning: tree-1.5.3-3.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] [root@CentOs6 Packages]#echo $? //通过$?来验证上述命令是否执行成功,0表示成功,非0表示失败 0 [root@CentOs6 Packages]#
测试安装完成,但是有一个警告,程序包缺少密钥
其实每个程序包安装时RPM都会对其进行身份验证,如果没有导入密钥,RPM认为数据包无法验证就会弹出告警信息。不过这样也不影响安装,如果想要取消这个告警,可以尝试下述方法
[root@CentOs6 ~]#cd /media/CentOS_6.9_Final/ [root@CentOs6 CentOS_6.9_Final]#rpm --import RPM-GPG-KEY-CentOS-6
因为我是挂了光盘,所以进入光盘所在的目录下,找到RPM-GPG-KEY-CentOS-6这个密钥文件,然后导入即可
导入完成之后,再安装程序就不会提示warn警告,我是在centos6下操作,如果是centos7就要进入/run/media/root/CentOS\ 7\ x86_64/这个目录下
当然还有一种自欺欺人的方法,就是不导入密钥,使用参数--nosignature忽略这个警告
因为我使用的是centos6的光盘,GPG-KEY密钥文件也是这个光盘上的,也就是说,这个光盘的rpm程序包经过GPG这个密钥文件再加上hash算法计算,会得到签名信息,也就是一串摘要信息,然后,通过这些摘要信息与rpm数据库对应的校验码进行比较,如果二者一致,说明此数据包信息完整,如果不一致说明此数据包有问题。
所以,如果我从centos7上拷贝一份tree的程序包,那用centos6的密钥文件进行计算,其结果肯定是跟数据库不一致的
已经在centos6上导入了GPG-KEY文件
[root@CentOs6 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm //从centos7拷贝的程序包 tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5) [root@CentOs6 ~]#rpm -K /misc/cd/Packages/tree-1.5.3-3.el6.x86_64.rpm /misc/cd/Packages/tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
-K 验证程序包的完整性
查询程序信息:
-q 是rpm查询必备的参数,需要与其他参数配合使用
-a 查看所有已经安装过的程序
-c 查看程序的配置文件
[root@CentOs6 ~]#rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
-f 查询指定文件由哪个程序包安装
[root@CentOs6 ~]#rpm -qf /bin/ls coreutils-8.4-46.el6.x86_64
-l 列出程序包安装后所生成的所有文件
-p 针对还未安装的程序包做查询操作
[root@CentOs6 Packages]#rpm -qpl tree-1.5.3-3.el6.x86_64.rpm //前提已经把tree卸载了 /usr/bin/tree /usr/share/doc/tree-1.5.3 /usr/share/doc/tree-1.5.3/LICENSE /usr/share/doc/tree-1.5.3/README /usr/share/man/man1/tree.1.gz
--whatprovides 指定功能由哪些程序包提供
--whatrequires 指定功能被哪些程序包所依赖
[root@CentOs6 Packages]#rpm -q --whatprovides bash bash-4.1.2-48.el6.x86_64 [root@CentOs6 Packages]#rpm -q --whatrequires bash mysql-5.1.73-8.el6_8.x86_64 initscripts-9.03.58-1.el6.centos.x86_64 dracut-004-409.el6_8.2.noarch rsyslog-5.8.10-10.el6_6.x86_64 cronie-1.4.4-16.el6_8.2.x86_64 autofs-5.0.5-132.el6.x86_64 lvm2-2.02.143-12.el6.x86_64
这两个参数记起来有点费劲,翻译一下就很容记忆了,这两个参数用来查找程序包
--whatprovides 什么程序包提供指定功能,打印的就是提供此功能的程序包
--whatrequires 什么程序包需要指定功能,打印的就是依赖此功能的程序包
-i 查询程序信息,非常非常详细
[root@CentOs6 Packages]#rpm -qi gcc Name : gcc Relocations: (not relocatable) Version : 4.4.7 Vendor: CentOS Release : 18.el6 Build Date: Wed 22 Mar 2017 12:27:30 AM CST Install Date: Fri 04 Aug 2017 10:16:33 PM CST Build Host: c1bm.rdu2.centos.org Group : Development/Languages Source RPM: gcc-4.4.7-18.el6.src.rpm Size : 19497604 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions Signature : RSA/SHA1, Thu 23 Mar 2017 11:01:10 PM CST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://gcc.gnu.org Summary : Various compilers (C, C++, Objective-C, Java, ...) Description : The gcc package contains the GNU Compiler Collection version 4.4. You'll need this package in order to compile C code.
卸载程序:
-e 卸载程序
[root@CentOs6 ~]#rpm -e gcc error: Failed dependencies:gcc is needed by (installed) systemtap-devel-2.9-7.el6.x86_64gcc = 4.4.7-18.el6 is needed by (installed) gcc-c++-4.4.7-18.el6.x86_64gcc = 4.4.7-18.el6 is needed by (installed) gcc-gfortran-4.4.7-18.el6.x86_64gcc = 4.4.4 is needed by (installed) libtool-2.2.6-15.5.el6.x86_64
卸载gcc这个程序失败,因为还有很多依赖包,所以要想卸载gcc必须先把这些依赖包卸载,但这样做不现实
依赖关系,是rpm最大的问题,在安装、卸载程序时都有可能会出现这样的问题
所以为了解决依赖性的问题,又有了yum这个工具,yum是rpm的前端工具,可以自动的识别依赖关系并且执行安装或卸载操作
yum虽然很方便,但还是基于rpm工作的:
yum客户端从yum源下载repodata也就是程序包的元数据列表,并匹配要下载的程序包及其依赖包,然后向yum源发出请求,yum源会将请求的程序包发给客户端,然后yum客户端再把程序包及其依赖包一起进行安装,整个过程对用户透明。yum大概的工作原理就是这样。
以上是我自己的一些学习总结,如果哪里有错误,还请不吝赐教!
转载于:https://blog.51cto.com/panpangao/1953836
相关文章:

好多Javascript日期选择器呀-4
<Script LANGUAGE"JavaScript"> var months new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二&q…

SUBSTRING函數用法
---引用---從第二位開始,取三位 select SUBSTRING([價格條件],2,3) FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] SELECT * FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] update [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] set [價格條件]SUBSTRI…

英特尔发布智慧社区解决方案,全栈技术支撑,涵盖五大战略方向
疫情的发生加速了城市智能化治理进程,而智慧社区作为其中的重要组成部分,在AI、大数据等技术的助力下,健康防疫追踪、应急管理等需求和应用也因此得到快速发展。 一般来说,打造智慧社区主要有两大目标,一方面…

OpenGLES 关于 数学 的分支 - 线性变化量、离散量、随机量
关于 数学 的分支 - 线性变化量、离散量、随机量太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的漂亮人生 - 本博客专注于 敏捷开发及移动和物联设备研究:iOS、Androi…

好多Javascript日期选择器呀-5
<HTML> <HEAD> <TITLE>最精致的日历式日期输入控件 (Smart Ver 1.00)</TITLE> </HEAD> <style> body {font-size:12px;font-family:"Tahoma"; } td {font-size:12px;font-family:"Tahoma"; } .inputdate {border:1px…

清明出游,你会“鸽”酒店吗?AI 早已看穿一切
来源 | Hyper超神经作者 | 神经小兮头图 | 下载于视觉中国如今,大数据已经被各行各业所应用,酒店行业也不例外。充分利用大数据,使得酒店能够预测市场需求变化,进行智能化决策分析,改善经营状况。各大 OTA(…

ti的硬件时钟和系统时钟同步
1.hwclock -w软到硬 hwclock -s硬到软2. 通过ntp网络时钟控制同步3.etc下的localtime文件和GMT-8转载于:https://www.cnblogs.com/pengkunfan/p/3515517.html

来看看BAT在AR领域的布局,你给打几分?
所谓的AR(增强现实),就是把真实信息和虚拟世界叠加,并使两者具有交互性。换句话说,AR技术不仅让虚拟对象融入到现实世界中,用户还可以对现实世界做出响应。这是一种共生(symbiont)技术,机器与用户的共生。 而当Pokemon…

解决vim没有颜色的办法
首先打开vim,输入命令 scriptnames看看vim加载了哪些脚本。 :scriptnames 输出入下 1: /home/users/xxx/.vimrc2: /home/users/xxx/tools/share/vim/vim73/colors/darkblue.vim3: /home/users/xxx/tools/share/vim/vim73/syntax/syntax.vim4: /home/users/xxx/tools…

好多Javascript日期选择器呀--1
<script languagejavascript>var DS_x,DS_y; function dateSelector() //构造dateSelector对象,用来实现一个日历形式的日期输入框。{ var myDatenew Date(); this.yearmyDate.getFullYear(); //定义year属性,年份,默认值为当前系…

扶贫干部拍胸脯认证,AI开发者上手零门槛,百度打造 “云智一体”全栈开发杀手锏...
“我可以拍着胸脯说识别准确率很高。”扶贫干部刘乐这样评价他在使用百度EasyDL平台助力扶贫的效果,他是陕西省汉中市扶贫信息中心副主任,也是一名热爱编程的程序员。 在近期百度智能云举办的2021云智技术论坛首场活动上,刘乐介绍,…

CSS3 新特性
CSS3 是最新的 CSS 标准,并且完全向后兼容,不过目前W3C 仍然在对 CSS3 规范进行开发,虽然标准的规范还没有正式发布,但是现代浏览器已经支持相当多的 CSS3 属性了。CSS3 提供了很多可以把玩的新特性,模糊了之前只控制样…

在.net中使用GDI+来提高gif图片的保存画质
//本文章有www.blue1000.com翻译,原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx //尊重他人劳动成果,转载请注明出处。 写程序的时候经常用到gdi,他可以将一幅深色32 bpp图像保存为一个gif文件&…

随记:kickstart远程批量无人值守安装linux
环境:RHEL6.2组件:dhcp tftp vsftp kickstart原理:需安装linux的客户机通过PXE方式启动;通过dhcp取得IP地址;通过TFTP下载引导进程文件pxelinux.0,内核文件vmlinuz,底层驱动initrd.img&…

第五届全国大学生计算机系统能力培养大赛 | 赠书
全国大学生计算机系统能力培养大赛是由教育部高等学校计算机类专业教学指导委员会和系统能力培养研究专家组共同发起,以学科竞赛推动专业建设和计算机领域创新人才培养体系改革、培育我国高端芯片及核心系统的技术突破与产业化后备人才为目标,面向高校大…

玉山银行的一名新员工“玉山小i随身金融顾问”
市场竞争、监管变化、客户体验一直在对金融行业发起挑战,所以无论监管、竞争、客户都会影响金融行业在成本和服务上的创新,金融行业越来越多的开始利用人工智能去满足现有发展提出的要求。 台湾玉山银行的数字化转型就是一个很好的例子。台湾有一句顺口溜…

DataGridView 密码列(显示为*号)的设置
曾经为在DataGridView中设置密码列(显示为*号)而发愁,如何把Windows 窗体 DataGridView 的某一列的数据显示为“*”。 哈哈,今天终于搞定了。需要在DataGridView的2个事件中写代码真麻烦!下面的代码把第4列设置为密码…

在Android中进行单元测试遇到的问题
问题1、Cannot connect to VM socket closed 在使用JUnit进行测试的时候,遇到这个问题。网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还是本地JVM都会进行Socket通讯.发生这样的错误是由于这些软件会修改winsock,还会监听和占用一些端口&…

英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!
作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:传闻已久的第三代英特尔至强可扩展处理器,终于在北京风光最美的4月份发布了。 北京时间4月7日晚,在著名的网红打卡地,百年老首钢工厂遗留下的工业建筑…

荣之联“云桥OneBridge”让IT运维事半功倍
近日,荣之联发布“云桥OneBridge”新一代的轻量级企业用户账号管理平台,为企业提供账号全生命周期管理解决方案。“云桥OneBridge”让IT运维工作效率大幅提升,并降低人为差错率,IT运维从此事半功倍。 据介绍,北京荣之联…

自定义GridView分页模板
GridView较之DataGrid提供了更加强大、更加完善的功能,而且具备了丰富的可扩展功能,可以使用GridView提供的pagertemplate自定义分页模板: 事实上,GridView默认的几中分页样式,都是将相关按钮的CommandName设为Page&a…

“雾霾”天里坐看云起时-【软件和信息服务】2014.01
2013年是中国关注雾霾的元年,中国经济高速发展了30多年后,我们终于幡然醒悟:雾霾和各种污染也开始正式进入公众和各级政府的视野。VMware在12月6日召开的VSS上海站并没有因为雾霾肆虐而降低热度,IT界在雾霾天里继续着云中漫步。20…

CSDN 给你一个薅羊毛的机会!你真的不要吗?
抢红包、集福卡、转锦鲤等等,每年过年过节,各种价值几十亿的瓜分活动,对于网络冲浪选手来说,眼花缭乱但也乐趣满满。可现实是:你抢了5毛8,人家抢了好几万!甚至前段时间,字节跳动安全…

ASP.NET TricksTip:关于Tooltip(title)的换行问题
我们知道,为了使对于普通 HTML 元素的title可以换行,至少可以有可以两种方式: 1。将title的文本分行写 <a href"#" title"helloworld">hello world</a>2。插入换行符号 <a href"#" title&q…

谷歌高管又变动:AI 研究部门元老即将离职
整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI科技大本营(ID:rgznai100)本周二,谷歌研究院负责人 Samy Bengio 宣布辞职。Samy Bengio 在公司内部邮件中表示自己决定离开谷歌,并将于 4 月 28 日正式离职。目前,Samy Be…

jQuery 1.9 移除了 $.browser 的替代方法
$.browser是通过正则表达式来匹配userAgent来判断浏览器版本和种类的.jquery1.3.2版本的文档中已经声明jquery.browser及jquery.browser.version建议弃用,可以使用jquery.support来代替。jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version &a…

异常检测算法:Isolation Forest
iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好、训练快(线性复杂度)等特点。 1. 前言 iForest为聚类算法,不需要标记数据训练。首先给出几个定义&am…

asp.net 2.0中的弹出对话框
在asp.net 1.1中,要做1个弹出的对话框的话,一般是在服务端的代码中这样写: btnClick.Attributes.Add("onclick", "return confirm(Are you sure?);"); 现在在ASP.NET 2.0中,只要使用客户端的代码就可以拉&a…

2014学习目标
学习目标 给自己定一个学习计划,省着没有目的瞎弄。 整理javascript基础,记录博客(进行中......)学习jquery源码,培养自己的实战技巧学习nodejs,充实自己,记录博客学习git的使用,记录…

2021全球最具影响力 AI 学者榜单: 中国占比11.1%,位列第二
2021 年 4 月 8 日,2021 年人工智能全球最具影响力学者——AI 2000 榜单重磅揭晓。AI 2000 榜单由清华大学 AMiner 联合北京智源人工智能研究院、清华 - 中国工程院知识智能联合研究中心共同发布,旨在通过 AMiner 学术数据在全球范围内遴选过去十年人工智…