首页 > 编程笔记
Linux源码包和二进制包的区别
Linux 操作系统中的软件包非常多,而且几乎都是经 GPL 协议授权的,GPL 协议之前给大家讲过,它是具有“传染性”的,通过引用 GPL 协议下的开源程序代码开发出的新软件也必须遵循 GPL 协议。所以 GPL 协议下的开源软件扩散的方式是以树状结构无限扩散的,这也就是现如今 GPL 协议下的软件如此多的原因之一。
Linux 操作系统中的软件包大致可以分为两类:源码包与二进制包。
源码包中的代码文件是无法直接安装到操作系统上的,因为计算机只认识二进制语言,也就是 0 和 1 的组合。因此,源码包的安装需要一名“翻译官”将源代码文件翻译成二进制语言,这名“翻译官”通常被称为编译器。
编译指的就是将源代码转换为能被计算机执行的二进制程序的翻译过程。编译器的功能就是把源代码翻译为二进制代码,让计算机识别并且运行!
大家试想一下,编译操作由谁来完成呢,编译器?编译器只是一个供用户使用的工具而已,操作的过程还是由用户完成。用户可以使用编译器指定编译的选项,例如编译的时候要添加/删除程序的某个功能等。也就是说,用户可以在编译时自定义程序的功能。
源码包的优点:
源码包的缺点:
通过这些优缺点的比较容易发现,源码包的编译安装对初学者是很不友好的,不仅要耗费大量的编译时间,还需要特定的编译环境。况且有很多用户并不熟悉程序语言,在安装过程中初学者只能祈祷程序编译过程不要报错,否则很难解决问题。
二进制包就是源码包经过成功编译后生成的程序包。二进制包在发布之前就已经完成了所有的编译工作,因此用户安装软件的速度较快,与在Windows下安装软件的速度差不了多少,而且程序的安装过程报错概率也大大减小。
目前,Linux 操作系统主要的二进制包管理系统有两种:RPM 包管理系统和 DPKG 包管理系统:
RPM 包管理系统和 DPKG 包管理系统的原理和形式大同小异,学会其中一个,另一个也就无师自通了。
二进制包的优点:
二进制包的缺点:
源码包与二进制包这两种安装方式各有优缺点,大家可以根据安装环境和自身需求来选择,一般在操作系统中能使用二进制包就尽量使用二进制包,没办法使用二进制包的情况下再选择源码包进行安装部署。
Linux 操作系统中的软件包大致可以分为两类:源码包与二进制包。
1、源码包
源码包里面是一大堆源代码文件,是由程序员按照特定的格式和语法编写出来的代码文件。源码包中的代码文件是无法直接安装到操作系统上的,因为计算机只认识二进制语言,也就是 0 和 1 的组合。因此,源码包的安装需要一名“翻译官”将源代码文件翻译成二进制语言,这名“翻译官”通常被称为编译器。
编译指的就是将源代码转换为能被计算机执行的二进制程序的翻译过程。编译器的功能就是把源代码翻译为二进制代码,让计算机识别并且运行!
大家试想一下,编译操作由谁来完成呢,编译器?编译器只是一个供用户使用的工具而已,操作的过程还是由用户完成。用户可以使用编译器指定编译的选项,例如编译的时候要添加/删除程序的某个功能等。也就是说,用户可以在编译时自定义程序的功能。
源码包的优点:
- 能接触到程序的源代码文件,可以对程序本身进行修改;
- 编译时能够对程序本身的功能进行自定义,只保留一些需要的功能,其他的都舍弃,也就是打造一款符合自身需求的软件程序。
源码包的缺点:
- 编译步骤烦琐,因为编译时会用到很多选项和编译环境,没有安装编译环境或缺少必要的编译选项都没法编译成功;
- 编译时间长,举个例子,QQ的安装包大小约为82MB,安装只需要一两分钟。而 MySQL 数据库的源码包大小约为 60MB,编译安装过程需要半小时到一小时之间,具体还得看计算机性能。
通过这些优缺点的比较容易发现,源码包的编译安装对初学者是很不友好的,不仅要耗费大量的编译时间,还需要特定的编译环境。况且有很多用户并不熟悉程序语言,在安装过程中初学者只能祈祷程序编译过程不要报错,否则很难解决问题。
2、二进制包
为了解决使用源码包安装方式出现的问题,二进制包应运而生,成为 Linux 软件包的第二种安装方式。二进制包就是源码包经过成功编译后生成的程序包。二进制包在发布之前就已经完成了所有的编译工作,因此用户安装软件的速度较快,与在Windows下安装软件的速度差不了多少,而且程序的安装过程报错概率也大大减小。
目前,Linux 操作系统主要的二进制包管理系统有两种:RPM 包管理系统和 DPKG 包管理系统:
- RPM包管理系统:最早由 Red Hat 研发,其功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认将它作为软件包管理系统,例如 Red Hat、Fedora、CentOS、Rocky 等。
- DPKG包管理系统:它是伊恩·默多克于 1993 年创建,为 Debian 操作系统专门开发的软件包管理系统。DPKG 与 RPM 十分相似,同样被用于安装、卸载和“.deb”软件包相关的信息。主要应用在 Debian 和 Ubuntu 操作系统中。
RPM 包管理系统和 DPKG 包管理系统的原理和形式大同小异,学会其中一个,另一个也就无师自通了。
二进制包的优点:
- 包管理系统简单,只通过几个命令就可以实现软件的安装、升级、査询和卸载。
- 安装速度比源码包安装快得多。
二进制包的缺点:
- 经过编译之后无法直接看到源代码;
- 软件安装时功能的选择不如源码包灵活;
- 软件包与软件包之间存在依赖性。例如,在安装软件 a 时需要先安装软件 b 和软件 c,而在安装软件 b 时又需要先安装软件 d 和软件 e。这就需要先安装软件 d 和软件 e,然后安装软件 b 和软件 c,最后才能安装成功软件 a。软件包管理系统能很好地降低这种依赖性,比如说,安装软件 a,它会将软件 a 依赖的所有软件一次性都给安装上,大大减少了我们的工作量。
源码包与二进制包这两种安装方式各有优缺点,大家可以根据安装环境和自身需求来选择,一般在操作系统中能使用二进制包就尽量使用二进制包,没办法使用二进制包的情况下再选择源码包进行安装部署。