Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理

在Linux系统下,对于软件包的管理有多种机制,有源代码方式、RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制

一、源代码形式

首先我们先来看一下源代码的方式。我们知道,在开源的环境下,大多数的开源软件都是以源代码的形式来发布,通常将源代码打包成tar.gz的归档压缩文件发布到网上供我们下载使用。但是我们下载下来的源代码方式我们还不能够直接使用,不像在windows系统上直接下载下来可执行的二进制文件,我们需要将下载好的源码编译成可执行的二进制文件才能运行使用,源代码形式安装流程一般如下:

①./configure  检查编译环境、相关库文件以及配置参数并生成makefile

②make  将源代码编译成可执行的二进制文件

③make install  安装编译好的可执行文件

基本上所有以源代码形式发布的软件都是按照以上流程来进行安装,大家可能觉得其实步骤就这三个,安装过程非常简单!其实不然,通常以源代码形式发布的软件,在对其进行①、②步操作时往往会出很多很多的问题,比如说编译过程中缺少所需的库文件,或者说编译源码时又需要依赖A文件,编译A文件时可能又需要用到B文件,这样我们需要花大量时间去找这些依赖的问题,同时如果一个软件特别大的话,我们在将其编译过程中要等待非常久的时间。所以说其实源代码形式的安装软件并不是我们想象的那么简单,但是为什么源代码形式的软件管理还一直存在呢?必然也有其优点,因为我们的源码都要通过编译成可执行的二进制文件才行,所以说它适用于各种操作系统平台,我只需要在各个操作系统平台上对其源码进行编译即可运行起来了。

总结一下

源代码形式的缺点:操作复杂、编译时间长、极易出现错误

源代码形式的优点:适用于所有的操作系统、可定制

二、RPM软件包管理

因为源代码方式安装软件终究还是比较麻烦,所以说现在出现了许多代替源码方式安装的软件管理机制。RPM就是其中一个,RPM(redhat Package Manager)是为了方便软件管理使用所开发的一套开源软件格式,它的设计目标有以下几个:

①使用简单  通过 rpm 命令就可以完成rpm软件的安装

②以单一软件包格式发布(.rpm文件)  我们可以看到rpm软件包都只有一个以.rpm的文件(rpm软件包管理机制要求软件包必须以.rpm结尾)

③可升级  rpm软件包是可以升级的,比如说我下载好了一个新版本的rpm软件,我们只需要通过 rpm -u 命令即可升级

④追踪依赖关系  rpm软件包管理机制可以追踪软件之间的依赖关系,这样在安装时就会非常的方便

⑤保存软件基本信息

⑥软件验证功能

⑦支持多平台  支持多平台并不是说一个rpm软件可以在多个操作系统平台上运行,而是说该软件会针对多个平台发布不同的rpm软件包

RPM软件包常用的命名规范如下

xiaoluo-1.1.0-5.el6.x86_64.rpm

其中xiaoluo就是我们的软件名字,1.1.0-5是该软件的版本号,el6.x86_64这两个部分是指我们该rpm包的运行平台的操作系统版本。例如el6就表示是针对于RHEL6的发现版本,我们使用的是什么版本的Linux操作系统,我们就要去下载对应的rpm版本,x86_64表示是运行在64位上的系统。

RPM的基础命令

rpm的使用方式非常简单,常用的一些命令如下:

安装软件rpm -i xiaoluo-1.1.0-5.el6.x86_64.rpm

卸载软件rpm -e xiaoluo

升级形式安装rpm -U xiaoluo-1.1.0-5.el6.x86_64.rpm

常用参数:

-v  显示详细信息

-h  显示文本进度条

例如我们这里安装一个tigervnc的rpm软件包实验一下:

[root@xiaoluo home]# rpm -ivh tigervnc-1.1.0-5.el6.x86_64.rpm   // 通常我们一般安装时跟上 -ivh参数,来显示安装的详细信息
Preparing...                ########################################### [100%]1:tigervnc               ########################################### [100%]

安装过程根据软件包的大小以及机器的配置时间会不应相同,我们发现我们的这个rpm已经就安装好了。

如果我们要将其卸载的话也非常的简单,通过 rpm -e 软件名字 即可卸载了,如:

[root@xiaoluo home]# rpm -e tigervnc

这样我们的rpm软件就已经卸载了,同样我们可以使用 rpm -U 软件名字 来对rpm软件进行升级

RPM常用查询命令

rpm -qa   列出所有已安装的rpm软件

rpm -qf filename  查询指定文件属于哪个rpm包

rpm -qi packagename  查询已软件包的信息

rpm -ql packagename  查询指定软件包包含的文件

rpm -qip software.rpm 查询rpm文件的信息

rpm -qilp software.rpm  查询rpm文件包含的文件

例如我们要查看当前操作系统上所有已安装的rpm软件,通过 rpm -qa 命令即可查看

[root@xiaoluo home]# rpm -qa
java
-1.6.0-openjdk-devel-1.6.0.0-1.50.1.11.5.el6_3.x86_64 qimageblitz-0.0.4-1.el6.x86_64 gnome-python2-gnomevfs-2.28.0-3.el6.x86_64 perl-ExtUtils-ParseXS-2.2003.0-129.el6.x86_64 iscsi-initiator-utils-6.2.0.873-2.el6.x86_64 libhbaapi-2.2.6-1.el6.x86_64 perl-BSD-Resource-1.29.03-3.el6.x86_64 sane-backends-1.0.21-3.el6.x86_64 gtkspell-2.0.16-1.el6.x86_64 libbonobo-2.24.2-5.el6.x86_64 evolution-data-server-doc-2.28.3-16.el6.noarch libhbalinux-1.0.14-1.el6.x86_64 kde-l10n-British-4.3.4-5.el6.noarch perl-CGI-3.51-129.el6.x86_64********************************此处省略N个字********************************************

如果我们需要查看刚才安装好的 tigervnc 软件的详细信息,通过 rpm -qi tigervnc 命令即可查看:

[root@xiaoluo home]# rpm -qi tigervnc
Name : tigervnc Relocations: (not relocatable) Version :
1.1.0 Vendor: CentOS Release : 5.el6 Build Date: 2013年02月23日 星期六 06时28分42秒 Install Date: 2013年05月20日 星期一 20时43分01秒 Build Host: c6b9.bsys.dev.centos.org Group : User Interface/Desktops Source RPM: tigervnc-1.1.0-5.el6.src.rpm Size : 659349 License: GPLv2+ Signature : RSA/SHA1, 2013年02月24日 星期日 01时39分36秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.tigervnc.com Summary : A TigerVNC remote display system Description : Virtual Network Computing (VNC) is a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures. This package contains a client which will allow you to connect to other desktops running a VNC server.

如果我们需要查看当前操作系统文件下某一个文件夹是属于哪个rpm包的,我们可以通过 rpm -qf filename 命令来进行查看

[root@xiaoluo home]# rpm -qf /usr/share/mysql/
mysql-libs-5.1.67-1.el6_3.x86_64

如果我们需要查看指定的rpm软件包所包含的文件,可以通过 rpm -ql packagename 命令来进行查看

[root@xiaoluo home]# rpm -ql tigervnc
/usr/bin/vncviewer /usr/share/applications/vncviewer.desktop /usr/share/doc/tigervnc-1.1.0 /usr/share/doc/tigervnc-1.1.0/LICENCE.TXT /usr/share/doc/tigervnc-1.1.0/README.txt /usr/share/icons/hicolor /usr/share/icons/hicolor/16x16 /usr/share/icons/hicolor/16x16/apps /usr/share/icons/hicolor/16x16/apps/tigervnc.png /usr/share/icons/hicolor/24x24 /usr/share/icons/hicolor/24x24/apps /usr/share/icons/hicolor/24x24/apps/tigervnc.png /usr/share/icons/hicolor/48x48 /usr/share/icons/hicolor/48x48/apps /usr/share/icons/hicolor/48x48/apps/tigervnc.png /usr/share/locale/de/LC_MESSAGES/tigervnc.mo /usr/share/locale/fr/LC_MESSAGES/tigervnc.mo /usr/share/locale/pl/LC_MESSAGES/tigervnc.mo /usr/share/locale/ru/LC_MESSAGES/tigervnc.mo /usr/share/locale/sk/LC_MESSAGES/tigervnc.mo /usr/share/locale/sv/LC_MESSAGES/tigervnc.mo /usr/share/man/man1/vncviewer.1.gz

我们看到安装 tigervnc 这个rpm软件时,其包含了以上这么多的文件内容

以上这几个rpm查询命令都是对已经安装好的rpm软件进行查询,如果我们有一个rpm的软件包,但是还没有对其进行安装,我又想查看其软件信息,以及软件所包含的文件内容,那又怎么办呢?直接加上一个参数 p 即可,例如:

我要查看 zip-3.0-1.el6.x86_64.rpm 这个rpm软件包的信息,我们可以通过  rpm -qip zip-3.0-1.el6.x86_64.rpm   这个命令来进行查看

[root@xiaoluo home]# rpm -qip zip-3.0-1.el6.x86_64.rpm 
Name :
zip Relocations: (not relocatable) Version : 3.0 Vendor: CentOS Release : 1.el6 Build Date: 2010年11月11日 星期四 23时26分40秒 Install Date: (not installed) Build Host: c6b3.bsys.dev.centos.org Group : Applications/Archiving Source RPM: zip-3.0-1.el6.src.rpm Size : 823612 License: BSD Signature : RSA/8, 2011年07月03日 星期日 13时07分05秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.info-zip.org/Zip.html Summary : A file compression and packaging utility compatible with PKZIP Description : The zip program is a compression and file packaging utility. Zip is analogous to a combination of the UNIX tar and compress commands and is compatible with PKZIP (a compression and file packaging utility for MS-DOS systems).Install the zip package if you need to compress files using the zip program.

我如果想看下 zip-3.0-1.el6.x86_64.rpm 这个rpm软件在安装后会产生哪些文件,可以使用 rpm -qlp zip-3.0-1.el6.x86_64.rpm 命令即可

[root@xiaoluo home]# rpm -qlp zip-3.0-1.el6.x86_64.rpm 
/usr/bin/zip /usr/bin/zipcloak /usr/bin/zipnote /usr/bin/zipsplit /usr/share/doc/zip-3.0 /usr/share/doc/zip-3.0/CHANGES /usr/share/doc/zip-3.0/LICENSE /usr/share/doc/zip-3.0/README /usr/share/doc/zip-3.0/README.CR /usr/share/doc/zip-3.0/TODO /usr/share/doc/zip-3.0/WHATSNEW /usr/share/doc/zip-3.0/WHERE /usr/share/doc/zip-3.0/algorith.txt /usr/share/man/man1/zip.1.gz /usr/share/man/man1/zipcloak.1.gz /usr/share/man/man1/zipnote.1.gz /usr/share/man/man1/zipsplit.1.gz

RPM软件验证命令

rpm -K software.rpm  验证rpm文件

rpm -V softname  验证已安装的软件

RPM软件包管理还具有验证功能,因为在开源的软件里,源代码都是开放的,我们从网上下载的软件可以被一些不法分子在里面植入了一些木马程序,这样就会损害我们的操作系统。所以为了安全起见现代操作系统都加入了对软件的验证功能。

验证通常是使用非对称的加密算法,所以就需要一个密钥。一般的RPM软件包里面都加入了密钥,如果没有加入我们可以通过 rpm --import RPM-GPG-KEY-CentOS-6 命令手动加入即可。

验证rpm文件我们可以使用 rpm -K software.rpm 命令,例如我们要验证刚才的 zip-3.0-1.el6.x86_64.rpm :

[root@xiaoluo home]# rpm -K zip-3.0-1.el6.x86_64.rpm 
zip-3.0-1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

验证以后发现该软件是没有问题的。

验证已安装的软件我们可以使用 rpm -V softname 命令,例如我要验证一下安装的 mysql 软件,就可以使用如下命令:

[root@xiaoluo home]# rpm -V mysql
[root@xiaoluo home]#

如果没有出现任何错误,就表示该软件是完整的,没有被修改。

我们使用的RHEL以及CentOS等Linux系统,其软件包的安装维护都是通过RPM软件包来进行管理的,我们也看到使用RPM软件包来对软件进行管理非常的方便。

 

注意:】但是我们需要清楚一个问题,就是RPM软件包管理并不会给我们自动的解决软件包直接的依赖关系,我们在安装这个rpm包时,如果需要依赖其它的rpm包,就需要将所依赖的rpm包同时安装才行,那么有什么方法可以自动解决软件包的依赖关系呢?在下一篇随笔里面我将进行详细的记录、讲解!

本篇随笔主要记录了在Linux系统下安装软件的两种方式,一个是源代码形式的安装,另一个就是我们RPM软件包的形式安装,在后续的学习过程中,将继续记录自己学习Linux的点点滴滴!!

 

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq.com  / lzp501395377@gmail.com

 

 

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

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

相关文章

传递集合对象_面试必备——Java集合框架

Java集合框架面试题常见集合集合可以看作是一种容器&#xff0c;用来存储对象信息。数组和集合的区别&#xff1a;(1)数组长度不可变化而且无法保存具有映射关系的数据&#xff1b;集合类用于保存数量不确定的数据&#xff0c;以及保存具有映射关系的数据。(2)数组元素既可以是…

面向.NET开发人员的Dapr——服务调用

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理The Dapr service invocation building b…

快速入门深度学习,其实并不难!

深度学习的概念源于人工神经网络的研究&#xff0c;而深度学习的过程就是使用多个处理层对数据进行高层抽象&#xff0c;得到多重非线性变换函数的过程。虽然深度学习的概念看似高大上&#xff0c;让人有种莫名的距离感&#xff0c;实际上它在日常生活中随处可见&#xff0c;比…

插入始终是1_插入式电磁流量计特点与应用

一、本文引言首先&#xff0c;插入式电磁流量计是电磁流量计中的一种安装类型&#xff0c;电磁流量计的安装方式有多种&#xff0c;包括法兰式安装&#xff0c;螺纹安装&#xff0c;卡箍式安装&#xff0c;插入式安装等四种类型&#xff0c;法兰式安装是常见普遍都在使用的安装…

疑问:xcode中为什么按钮被图片覆盖了,还能响应事件?

疑问&#xff1a;为什么按钮被图片覆盖了&#xff0c;还能响应事件&#xff1f;

面向.NET开发人员的Dapr——发布和订阅

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——服务调用The …

bootstrap的表单验证 vue_第45天:Web表单

在了解了 Flask Bootstrap 基本框架之后&#xff0c;我们来了解一下 Flask 框架的 表单( form )&#xff0c;以帮助我们创建交互式的 Web 应用&#xff0c;最后会有个提交个人信息的例子。Flask-WTF 是 Flask 框架的一个扩展&#xff0c;用来做表单的交互&#xff0c;是对 WTFo…

超火GitHub项目!一夜获得5000星,竟是微软开源的计算器

全世界只有3.14 % 的人关注了数据与算法之美昨天&#xff0c;微软在 MIT License 下开源了一个 GitHub 项目——Windows 计算器&#xff0c;短短 24 小时内就获得了接近 5000 颗星&#xff0c;并引发大量讨论。这个项目爆红的速度可能连微软自己都始料未及。科技媒体 The Verge…

【转】Loadrunner入门(《软件性能测试过程详解与案例剖析》)

loadrunner包含很多组件&#xff0c;其中最常用的有visual user cenerator(VuGen&#xff0c;主要用于对程序脚本的录制和参数的设置&#xff09;&#xff0c;controller&#xff08;用于压力值设置和场景监视&#xff09;和analysis&#xff08;分析场景得出的结果&#xff09…

面向.NET开发人员的Dapr——目录

今天上午的主题就是Dapr&#xff0c;别错过了哦。本系列部分翻译自 .NET团队编写的Dapr for .NET Developers | Microsoft Docs(https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/)&#xff0c;大部内容复制于面向 .NET 开发人员的 Dapr | Micro…

人体工学腰垫,保腰神器,改善久坐腰酸背痛

▲数据汪特别推荐点击上图进入玩酷屋之前小木推荐“德国MINICUTE人体工学腰垫”受到了大家一致的好评和争相购买。小木为什么推荐这一款原因是&#xff1a;据统计&#xff0c;我国腰椎病患者已经突破2亿人。30~40岁人群中&#xff0c;患有颈腰椎病的占比59.1%&#xff01;而且有…

和flag_不怕立Flag,就怕没有Flag

转眼间就已经是今年的最后一天了&#xff0c;回想去年给自己立下的flag&#xff0c;看着自己手机上的减肥计划和体测成绩上的超重&#xff0c;我陷入了沉思&#xff0c;到底是哪个环节出问题了呢&#xff1f;我慢悠悠地在宿舍里转圈&#xff0c;看见舍友递过来的薯片&#xff0…

对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象

题记&#xff1a;写这篇博客要主是加深自己对对象android的认识和总结实现算法时的一些验经和训教&#xff0c;如果有错误请指出&#xff0c;万分感谢。 首先写个ListView 的数据适配器&#xff0c;抽离出来&#xff0c;写一个对象&#xff0c;用来设置listView 每条Item 的 的…

面向.NET开发人员的Dapr——状态管理

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序The Dapr state management building blockDapr 状态管理构建基块Distributed…

为什么网易云音乐总能知道你喜欢听什么歌?背后的原理竟然如此简单!

全世界只有3.14 % 的人关注了数据与算法之美无处不在的数据分析谷歌的数据分析可以预测一个地区即将爆发的流感&#xff0c;从而进行针对性的预防&#xff1b;淘宝可以根据你浏览和消费的数据进行分析&#xff0c;为你精准推荐商品&#xff1b;口碑极好的网易云音乐&#xff0c…

判断小数是否相等_五年级上册数学综合练习题(填空、判断、选择、文字题),覆盖全册知识点!...

五年级上册判断题练习1、整数乘法的运算定律对小数乘法同样适用 .( )2、小数不一定比整数小。( )3、两个小数相除 ,如果商大于被除数 ,那么除数一定大于.( )4、两个数相除 ,商是 .8,如果除数缩小10倍,被除数不变 ,商是 0.8。( )5、小数乘法的意义与整数乘法的意义完全相…

NET问答: 为什么仅有 getter 的属性,还可以在构造函数中赋值 ?

咨询区 Noam B.&#xff1a;我建了一个这样的属性。public int Foo { get; } 毫无疑问&#xff0c;这是一个只读属性&#xff0c;当我在构造函数中无意对它赋值时&#xff0c;我发现居然可以改变它的值&#xff1f;&#xff1f;&#xff1f;比如下面的代码。public MyClass(str…

次优二叉树

在有序序列的查找中&#xff0c;如果各个元素的查找概率都是一样的&#xff0c;那么二分查找是最快的查找算法&#xff0c;但是如果查找元素的查找概率是不一样的&#xff0c;那么用二分查找就不一定是最快的查找方法了&#xff0c;可以通过计算ASL来得知。所以基于这种查找元素…

每日一笑 | 老板,黑凤梨真的能吃吗?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

vue获取全局组件_Vue的全局组件

Vue是一个组件化开发的框架&#xff0c;一般我们在项目中使用组件的步骤是这样的。1.创建一个组件&#xff1a;比方说我们现在新建一个demo.vue文件&#xff0c;随便写一行代码。{{msg}}export default {data() {return {msg:只是新创建的一个组件}}}2.使用组件在我们需要使用组…