Linux 软件包管理器的目的是什么,Linux软件包的管理--RPM包管理器

在Linux中如何安装、升级、卸载软件,是我们日常运维中重要的组成部分。接下来一CentOS6系统为例,讲解如何使用 RPM 包管理器,yum包管理器以及源码的方式来管理我们的软件包。

一、相关的背景知识

许多程序的源程序,例如使用C语言编写的源代码,要经过预处理,编译,汇编,链接才能生成真正的可执行程序(二进制),才可以使用。为了简化这样的过程,就出现了所谓的包管理器。它出现的目的是:将编译好的程序打包成一个文件或有限的几个文件,可用于实现安装、卸载、升级、查询等功能。

一个包管理器应该具有如下组成部分:

1、数据库:这里面包括了 软件名、版本、依赖关系、功能描述、安装生成的各文件的路径、和校验软件来源和数据完整性的校验码。

2、程序的组成清单:这里最主要的是软件在安装、卸载前后所运行的脚本。

安装程序的时候为什么会出现依赖性?

由于Linux的程序或者说是工具都是由其他小程序或小工具组成,这是Linux的特性之一。正是由于这个特性决定了我们在安装一个软件包的时候,可能会依赖其他程序的库文件和头文件。# 在Linux中使用 ldd 命令来查看一个二进制程序(可执行文件)遵循EIF格式

[root@server ~]# ldd `which pwd`

linux-vdso.so.1 =>  (0x00007fff62df0000)   # 指程序的起始入口

libc.so.6 => /lib64/libc.so.6 (0x0000003508400000)

/lib64/ld-linux-x86-64.so.2 (0x0000003507c00000)

程序包一般都包括:二进制程序,库文件,配置文件,帮助文件这些信息。

二、RPM包管理器

在CentOS中的包管理器是RPM(RPM is Package Manager),具有上面包管理的组成和功能。

1、RPM包命名格式

所有的RPM包文件都是以.rpm结尾的。具体的命名格式:

name-version-relase.arch.rpm字段含义

name程序名

version程序源码编号。分别代表主版本号,副版本号,发行号

releaserpm自身的发行号,与程序源码的发行号无关,仅用于标识对 rpm包不同制作的修订;同时,release还包含此包适用的OS

arch适用于的硬件平台,主要有:i386, i486, i586, i686,x86_64,powerpc,noarch(依赖于虚拟机)

例如:bash-4.2.3-3.centos6.x86_64.rpm

2、rpm包的合法性验正

包制作者制作完成之后会附加数字签名于包上;验证主要包括 来源合法性、包的完整性。

具体原理:

包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。通过数字证书的方式验证来源合法性,通过提取验证码是否正确来判断完整性问题。

验正过程:

前提:必须有可靠机制获取到包制作者的公钥;

1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;

2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;

3、RPM分包管理

试想一下,例如:一个程序总共有50个小功能,难道在打包的时候都打包到一个文件中去吗? 如果是这样,我们仅用到其中的5,6个功能,却安装了50个包,造成了空间浪费。所以,RPM包提供了分包的功能,从一定程度上解决了这个问题。

一般是有一个主包,提供基本功能;其他功能分别打包成不同的包文件来使用。

三、RPM包管理器的使用

RPM包管理器都是使用rpm命令(前端工具)来实现的,下面从不同角度介绍此命令的常用选项。

1、安装程序包

以安装 lftp 来示例。

fe99c8cc68aa530a64b8cefc27ca83e0.png

当然在安装过程中没有出现依赖关系,如果出现依赖关系,则需要安装依赖软件包。

--test:此时软件是否可以安装

ea454730292d0a0a0bc272b98a551401.png

重新安装:--replacepkgs 如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

如果依赖于其它包:1、解决依赖关系;2、忽略依赖关系能安装上,但有可能无法运行;使用--nodeps 参数。rpm -ivh --nodeps 软件包文件名

2、卸载程序包

常用用法:rpm -e package_name

d27e8fbaeabfec2863d3c1dd2dfb1586.png

如果被其它包所依赖:1、将依赖于此包的所有包一并卸载;2、忽略依赖关系能卸载,但依赖于此包程序包可能会运行不正常,使用 --nodeps 参数。

如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留

3、升级软件包

用法:rpm -Uvh | -Fvh /path/to/package_file

1、升级或安装

-Uvh:如果软件包不存在则安装,如果存在则升级。

2、纯升级

-Fvh:如果软件包不存在则什么都不干,如果存在则升级。

如果有时候升级有问题,则可以使用 --force: 强制升级。

注意:不应该对内核执行升级操作,而是安装。因为系统允许多内核并存,所以万一升级失败,还可保证系统不出现问题。

4、查询功能

rpm的查询功能可能是我们在软件包管理方面使用最多的。

1)对已安装的软件

-q:查询软件包是否安装

-qa:查询系统已安装的包

ecb6104b0d7933723f01a153f06c5a90.png

-qi:查询包的描述信息

ca6334171dbea56c013b7ffecc8a29d9.png

-ql:列出软件包所安装的所有文件

992732f2e9e7f35c91e4c2cc443d46d0.png

-qc:列出软件包所安装的配置文件

-qd:列出软件包所安装的帮助文档

d4ba8b2a199338326e323deb1b5920f4.png

-q --scripts:查询软件安装时所执行的脚本

afc1a174addd81615037c097dfe7b8ef.png

-qf:查询某文件是由哪个包安装生成的

73e78e28c99d21928c84b58df6db57c7.png

2)对未安装的软件

查询功能和已安装的一样,只是加入-p选项。

-pq -pqi -pql -pqd -pqc 等参数,同上述功能。

5、校验

用于检查包安装生成的文件属性是否发生变化

rpm -V package_name[root@server Packages]# rpm -V lftp

S.5....T.  c /etc/lftp.conf

# 常见属性如下:如果某属性无变化,则显示为.

# S file Size differs

# M Mode differs (includes permissions and file type)

# 5 digest (formerly MD5 sum) differs

# D Device major/minor number mismatch

# L readLink(2) path mismatch

# U User ownership differs

# G Group ownership differs

# T mTime differs

# P caPabilities differ

6、rpm包来源合法性及完整性检验:

前提:在当前系统上导入包的制作者的公钥

导入:rpm --import /path/to/key_file

# rpm -qa gpg-pubkey*

显示所有已经导入的gpg格式的公钥

# rpm -qi gpg-pubkey-NAME

显示公钥的详细信息

2f7a1f1ee53c8beea276e6c323dd6d5e.png

检查包:安装过程中会自动执行

手动检查:# 完整性和合法性检查

[root@server Packages]# rpm -K lftp-4.0.9-1.el6.x86_64.rpm

lftp-4.0.9-1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

# 不检查来源合法性:

[root@server Packages]# rpm -K --nosignature lftp-4.0.9-1.el6.x86_64.rpm

lftp-4.0.9-1.el6.x86_64.rpm: sha1 md5 OK

# 不检查包完整性

[root@server Packages]# rpm -K --nodigest lftp-4.0.9-1.el6.x86_64.rpm

lftp-4.0.9-1.el6.x86_64.rpm: rsa (md5) pgp OK

7、数据库重建

数据库目录:/var/lib/rpm

ad8499c933beb88aa3db8c2f65fb23b0.png

rpm --initdb:初始化,如果事先没有库,会新建一个;如果有,则不新建;

rpm --rebuilddb: 直接重建,覆盖原有的数据库

总结:个人感觉RPM在安装软件包是使用不多,一般使用查询功能居多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式linux mongodb,小白在Ubuntu安装mongoDB与mongo-c-driver

目的:本人从事嵌入式软件,项目中需要使用MongoDB,最终需要熟悉c-driver的API,小白在搭建环境有些浪费时间,故写这文章让与我同样状态的开发人员学习学习。在Ubuntu上的安装mongodb方法一:sudo apt-get ins…

湘潭大学-软件工程-选择判断题复习

说明 期末考试单选题和判断题占30分,单选20,判断10分 单选题 选错误的 B依靠松散组合的互联网大众是无法开发出高质量软件产品的 D、所有命名都应尽量使用缩写 C、采用团队的组织方式 D、软件需求一旦确定就不允许变化 以下哪一项是通过运行程序…

c语言运算符ppt,C语言知识学习运算符.ppt

C语言知识学习运算符.ppt 第三章,C语言运算符,回顾,变量和常量的含义 熟悉基本数据类型 - int、char、float 和 double 使用算术运算符 理解类型转换 熟练使用 scanf 和 printf 函数,课程目标,算术运算符 增量运算符 逻辑运算符 关系运算符 按位运算符 C的特殊运算符 --“” “…

ionic判断android版本,$ionicplatform 判断是android还是ios?

一只名叫tom的猫安装环境首先应该安装好 node.js (略),然后安装cordova、ionic等sudo npm install -g cordova ionic ios-sim创建不同类型的项目目前可以用blank,tabs,sidemenu三种ionic start myApp tabs常用插件cordova plugin add com.ion…

华为鸿蒙等不急了,华为最强巨作,鸿蒙OS+六摄+麒麟985,网友:等不及了!

原标题:华为最强巨作,鸿蒙OS六摄麒麟985,网友:等不及了!华为最强旗舰机一般公认是Mate系列,虽然华为跟三星一样,也是走双旗舰,Mate和P系列都是旗舰机,但是华为和三星有所…

华为鸿蒙2.0操作页面,华为鸿蒙2.0开面界面确认,这一变化你可懂

最近一段时间关于华为鸿蒙手机端操作系统的消息非常多,但是由于目前仅是测试阶段,我们无法全面的了解这个全新的操作系统长什么样。在操作上有何不同等等,在这样的前提之下很多参与内测有朋友时不时的就会放出一些信息。5月5日有人放出了华为…

android p正式版,国内首家!一加正式推送Android P正式版

近日,相信不少一加6的用户都收到了Android9.0也就是Android P系统的推送,如果没有记错的话,这应该是首个推送Android P稳定版的系统,而此前一加也是首个开放Android P公测的手机品牌,看来一加在系统的更新推进速度上确…

html悬停放大图片代码,html – 放大图像并在悬停时显示div

在图像悬停时,我想放大图像并显示带有透明背景的div.这是我的代码.在下面的示例中,当我将鼠标悬停在.Image类中的图像上时,我想要缩放它,并希望在div的中心显示类.mylink的链接.我能够放大悬停但是当我为.text添加样式时,它不再放大图像.HTML:linkCSS:#B…

夜间模式html,夜间模式.html

demo.dark {background-color: #363636;filter: invert(100) hue-rotate(180deg);}.dark img {filter: invert(100) hue-rotate(180deg);}Switch theme一个第三方的 GMail 的 Web 客户端。百度链接var darkSwitch falsedocument.getElementById(switch).addEventListener(clic…

html5常用插件大全,前端常用插件utils汇总

发布于 2020-03-06工具库 || 数据处理表单验证---jquery图片懒加载---JavaScript---vue---react图片预览类似朋友圈满足聊天递增图片的需求---vue文件上传---JavaScript---vue单选框/复选框相关---jquery选择框tree树形---jquery无限滚动---vue列表拖拽---vue---react元素拖曳自…

刚学计算机先学什么好,计算机语言入门先学什么?

刚想开始计算机学习的小白难免会有这样的困惑:计算机语言入门先学什么?简单来讲,初学者需要先了解各种计算机语言,熟悉计算机组成原理,学习数据结构与算法、数据库、基础语法等等,这些都是必须经历的基础学…

xml控制html样式,XML与CSS综合设置实例

XML与CSS综合设置实例HTTP代码如下:charset "utf-8";charset "utf-8";bookname{display:block;font-size:36px;font-weight:bold;font-family:宋体;text-align:center;}bieming{display:block;font-size:20px;font-weight:normal;font-family:宋…

幼儿园体育游戏电子计算机教案,幼儿园体育游戏教案3篇

幼儿园体育游戏教案3篇让幼儿通过各种体能游戏,锻炼走、跑、跳、爬等的能力,发展身体的灵活性和平衡能力。具有一定的竞争意识和集体荣誉感。以下是小编精心整理的幼儿园体育游戏教案的相关教案,老师们快来欣赏学习吧!幼儿园体育游戏教案范文一体能游戏活动目标:1、…

计算机专业的三行情书,各专业三行情书,看懂你就是全能学霸!

导读你所在的专业有哪些三行情书?你说工科的我不解风情,我说我愿意用我的专业写三行情书,读给你听。先等等,等我看明白了再给你答复。四川师范大学晒出了不少三行情书:仔细读,很多都用上了专业梗&#xff0…

评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线

文章目录课程笔记导览附录:英语解释第三章 总线3.1 总线的基本概念使用总线的原因:总线的定义总线上信息的传送总线结构举例单总线结构面向CPU的双总线结构以存储器为中心的双总线结构框图3.2 总线的分类3.3 总线性能及性能指标总线物理实现总线特性总线…

html键盘制作,HTML手写键盘(一)

HTML手写键盘 (单密码框)先上图粘贴图片.png大致原理:先用css画出整个键盘 ,并没有input框,如果使用input实现效果,则需要多个input,这样的后果是需要多次调用键盘,影响整体的体验,用ul li画出密…

登录页面

<!doctype html> <html><head><meta charset"utf-8"><title></title></head><link rel"stylesheet" href"../css/登录页面.css" /><body><form action"#" method"get&…

在计算机网络术语中wan的中文意思是什么,男生聊天中wan是什么意思 wan是什么的缩写...

在聊天的过程中&#xff0c;有的人喜欢发“wan”&#xff0c;这是晚安的意思吗&#xff1f;还是其他的意思&#xff1f;男生聊天中wan是什么意思&#xff1f;wan是什么的缩写&#xff1f;男生聊天中wan是什么意思&#xff1a;wan是“玩”、“晚安的晚”等字的拼音&#xff0c;根…

计算机管理 内存在哪里看,教您win7怎么查看内存

我们都知道&#xff0c;每运行一个程序就会占用内存资源&#xff0c;程序运行多了&#xff0c;就会导致电脑运行缓慢。找到无关但大量占用硬件资源的程序将有助于电脑的运行。那么win7怎么查看内存运行呢&#xff1f;下面&#xff0c;小编就提供解决win7系统下如何查看内存资源…

武汉超级计算机中心,加快打造“五个中心” 武汉率先开建人工智能计算中心...

(来源&#xff1a;武汉市发改委)原标题&#xff1a;加快打造“五个中心” 武汉率先开建人工智能计算中心从华为东莞松山湖基地运来的预制化模块箱体&#xff0c;正在光谷科学岛起步区被吊装&#xff0c;未来将被“拼装”成武汉重要的人工智能算力基础设施。3月1日&#xff0c;武…