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://www.cnblogs.com/doggod/p/11925637.html ?
转载自:
来源: http://www.bubuko.com/infodetail-3303155.html