Linux软件包(源码包和二进制包)及其区别和特点
Posted Bestcoderg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux软件包(源码包和二进制包)及其区别和特点相关的知识,希望对你有一定的参考价值。
Linux 下的软件包众多,而且几乎都是经 GPL 授权的,也就是说这些软件都免费,振奋人心吧?而且更棒的是,这些软件几乎都提供源代码(开源的),只要你愿意,就可以修改程序源代码,以符合个人的需求和习惯。当然,你要具备修改这些软件的能力才可以。
源码包到底是什么呢?其实就是软件工程师使用特定的格式和语法所书写的文本代码,是人写的计算机语言的指令,一般由英文单词组成。是不是有点晕?
其实源代码程序是程序员写的计算机指令,符合特定的格式和语法。那么,众所周知,计算机可以识别的是机器语言,也就是二进制语言,所以需要一名翻译官把abed翻译成二进制机器语言。我们一般把这名翻译官称为编译器,它的作用就是把人能够识别的 abcd 翻译成二进制机器语言,让计算机可以识别并执行。
源码包不用担心收费问题,但是我并不会 C 语言怎么办?那一大堆的源代码程序到底如何使用呢?这个源码包容易安装吗?源码包的安装因为要把源代码编译为二进制语言,所以安装的时间较长。比如,在 Windows 下大家可能安装过 QQ,现在的 QQ 功能较多,程序相对较大,大概有 60 MB,但由于 QQ 并不是以源代码形式发布的,而是经过编译之后发布的,所以只需要几分钟并经过简单的配置就可以安装成功。安装时间较短(当然功能也基本不能自定义)。
在 Linux 中安装一个 mysql 数据库,这个数据库的压缩包大概有 23 MB,需要多长时间呢?答案是 30 分钟左右(根据计算机硬件配置不同)。这样看来编译还是很浪费时间的,而且绝大多数用户并不熟悉写程序的语言,所以我们要祈祷程序不要报错,否则对初学者来讲很难解决。
为了解决源码包的这些问题,在 Linux 中就出现了二进制包,也就是源码包经过编译之后的包。这种包因为编译过程在发布之前已经完成,所以用户安装时速度较快(和 Windows 下安装软件速度相当),而且报错也大大减少。
二进制包是 Linux 下的默认安装软件包,所以有时我们也把二进制包称作默认安装软件包。目前主要有两个系列的二进制包管理系统:一个是 Red Hat 上的 RPM 包管理系统;另一个是 Debian 和 Ubuntu 上的 DPKG 包管理系统。本教程讲的是 Red Hat 公司的 CentOS Linux,所以我们主要讲解 RPM 包管理系统。不过这两个系列的二进制包管理的原理与形式大同小异,可以触类旁通。
说了这么多,到底源码包和二进制包哪个好呢?举个例子,我们想做一套家具,源码包就像所有的家具完全由自己动手手工打造(手工编译),想要什么样的板材、油漆、颜色和样式都由自己决定(功能自定义,甚至可以修改源代码)。想想就觉得爽,完全不用被黑心的厂商所左右,而且不用担心质量问题(软件更适合自己的系统,效率更高,更加稳定)。但是,所花费的时间大大超过了买一套家具的时间(编译浪费时间),而且我自己真的有做木工这个能力吗(需要对源代码非常了解)?就算请别人定制好的家具,再由我自己组装,万一哪个部件不匹配(报错很难解决),怎么办?
那么二进制包呢?也是我需要一套家具,可是我去商场买了一套(安装简单),家具都是现成的,不会有哪个部件不匹配,除非因为我没有量好尺寸而导致放不下(报错很少)。但是我完全不知道这套家具用的是什么材料、油漆是否合格,而且家具的样式不能随意选择(软件基本不能自定义功能)。
好了,通过这个例子大家可以了解源码包和二进制包之间的区别。
源码包的特点
源码包既然是软件包,就不会是一个文件,而是多个文件的集合。出于发行的需要,我们一般会把源码包打包压缩之后发布,而 Linux 中最常用的打包压缩格式是"Mar.gz",所以我们也把源码包叫作 Tarball。源码包需要大家自己去软件的官方网站进行下载。
源码包的压缩包中一般会包含如下内容:
源代码文件。
配置和检测程序(如configure或config等)。
软件安装说明和软件说明(如INSTALL或 README)。
源码包的优点如下:
开源。如果你有足够的能力,则可以修改源代码。
可以自由选择所需的功能。
因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
卸载方便。
源码包的缺点如下:
安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
编译时间较长,安装时间比二进制安装要长。
因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。
二进制包的特点
二进制包是在软件发布的时候已经进行过编译的软件包,所以安装速度比源码包快得多(和 Windows 下软件安装速度相当)。但是因为已经进行通译,大家也就不能在看到软件的源代码了。目前两大主流的二进制包系统是 DPKG 包和 RPM 包。
DPKG 包是由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
RPM 包是由 Red Hat 公司所开发的包管理系统,功能强大,安装、升级、査询和卸载非常简单方便。
目前很多 Linux 版本都在使用这种包管理方式,包括 Fedora、CentOS、SuSE 等。Linux 默认采用 RPM 包来安装系统,所以常用的 RPM 包都在安装光盘中。
RPM 包的优点如下:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、査询和卸载。
安装速度比源码包安装快得多。
RPM 包的缺点如下:
经过编译,不能在看到源代码。
功能选择不如源码包灵活。
依赖性。有时我们会发现,在安装软件包 a 时需要先安装 b 和 c,而在安装 b 时需要先安装 d 和 e。这就需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a。比如,我买了一个漂亮的灯具,打算安装在客厅里,可是在安装灯具之前,客厅需要有顶棚,并且顶棚需要刷好油漆。安装软件和装修及其类似,需要有一定的顺序,但是有时依赖性会非常强。
看到里,我们发现GNU/Linux不同发行版之间有着不同的二进制包格式,为什么linux发行版之间不能有一个统一的二进制软件包标准?
转载自:https://blog.csdn.net/zyy1659949090/article/details/88123264
以上是关于Linux软件包(源码包和二进制包)及其区别和特点的主要内容,如果未能解决你的问题,请参考以下文章