首页 > 系统相关 >Linux软件包(源码包和二进制包)

Linux软件包(源码包和二进制包)

时间:2023-11-10 22:32:22浏览次数:47  
标签:二进制 Linux 源码 软件包 软件 源代码 安装

Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。

Linux软件包(源码包和二进制包)_包管理

GPL,全称 General Public License,中文名称“通用性公开许可证”,简单理解 GPL 就是一个保护软件自由的一个协议,经 GPL 协议授权的软件必须开源,请猛击《开源协议》了解更多信息。

Linux下的软件包可细分为两种,分别是源码包和二进制包。

Linux源码包

实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。

我们都知道,计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要一名“翻译官”将“abcd”翻译成二进制语言,这名“翻译官”通常被称为编译器。

“编译”指的是从源代码到直接被计算机(或虚拟机)执行的目标代码的翻译过程,编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行,读者可以猛击《C语言编译器》了解更多信息。

虽然源码包免费开源,但用户不会编程怎么办?一大堆源代码程序不会使用怎么办?源码包容易安装吗?等等这些都是使用源码包安装方式无法解答的问题。

Linux软件包(源码包和二进制包)_包管理_02

另外,由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。比如,大家应该都在 Windows下安装过 QQ,QQ 功能较多,程序相对较大(有 70 MB左右),但由于其并非是以源码包的形式发布,而是编译后才发布的,因此只需几分钟(经过简单的配置)即可安装成功。

但如果我们以源码包安装的方式在 Linux 中安装一个 MySQL 数据库,即便此软件的压缩包仅有 23 MB左右,也需要 30 分钟左右的时间(根据硬件配置不同,略有差异)。

通过对比你会发现,源码包的编译是很费时间的,况且绝多大数用户并不熟悉程序语言,在安装过程中我们只能祈祷程序不要报错,否则初学者很难解决。为了解决使用源码包安装方式的这些问题,Linux 软件包的安装出现了使用二进制包的安装方式。

Linux二进制包

二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。

二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下 2 大主流的二进制包管理系统:

  • RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
  • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。

RPM 包管理系统和 DPKG 管理系统的原理和形式大同小异,可以触类旁通。由于本教程使用的是 CentOS 6.x 版本,因此本节主要讲解 RPM 二进制包。

源码包 VS RPM二进制包

源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball。

Tarball 是 Linux 系统的一款打包工具,可以对源码包进行打包压缩处理,人们习惯上将最终得到的打包压缩文件称为 Tarball 文件。

源码包需要我们自己去软件官方网站进行下载,包中通常包含以下内容:

  • 源代码文件。
  • 配置和检测程序(如 configure 或 config 等)。
  • 软件安装说明和软件说明(如 INSTALL 或 README)。

总的来说,使用源码包安装软件具有以下几点好处:

  • 开源。如果你有足够的能力,则可以修改源代码。
  • 可以自由选择所需的功能。
  • 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
  • 卸载方便。

但同时,使用源码包安装软件也有几点不足:

  • 安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
  • 编译时间较长,所以安装时间比二进制安装要长。
  • 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。

相比源码包,二进制包是在软件发布时已经进行过编译的软件包,所以安装速度比源码包快得多(和 Windows 下软件安装速度相当)。

也正是因为已经进行通译,大家无法看到软件的源代码。使用 RMP 包安装软件具有以下 2 点好处:

  1. 包管理系统简单,只通过几个命令就可以实现包的安装、升级、査询和卸载。
  2. 安装速度比源码包安装快得多。

与此同时,使用 RMP 包安装软件有如下不足:

  • 经过编译,不能在看到源代码。
  • 功能选择不如源码包灵活。
  • 依赖性。有时我们会发现,在安装软件包 a 时需要先安装 b 和 c,而在安装 b 时需要先安装 d 和 e。这就需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a。比如,我买了一个漂亮的灯具,打算安装在客厅里,可是在安装灯具之前,客厅需要有顶棚,并且顶棚需要刷好油漆。安装软件和装修及其类似,需要有一定的顺序,但是有时依赖性会非常强。

如何选择

通过源码包和 RMP 二进制包的对比,在 Linux 进行软件安装时,我们应该使用哪种软件包呢?

为了更好的区别两种软件包,这里举个例子。假设我们想做一套家具,源码包就像所有的家具完全由自己动手手工打造(手工编译),想要什么样的板材、油漆、颜色和样式都由自己决定(功能自定义,甚至可以修改源代码)。想想就觉得爽,完全不用被黑心的厂商所左右,而且不用担心质量问题(软件更适合自己的系统,效率更高,更加稳定)。但是,所花费的时间大大超过了买一套家具的时间(编译浪费时间),而且自己真的有做木工这个能力吗(需要对源代码非常了解)?就算请别人定制好的家具,再由自己组装,万一哪个部件不匹配(报错很难解决),怎么办?

那么二进制包呢?也是我们需要一套家具,去商场买了一套(安装简单),家具都是现成的,不会有哪个部件不匹配,除非因为自身问题没有量好尺寸而导致放不下(报错很少)。但是我们完全不知道这套家具用的是什么材料、油漆是否合格,而且家具的样式不能随意选择(软件基本不能自定义功能)。

通过以上对源码包和二进制包的讲解,相信大家对两者的区别和特点有了更清楚的认识。

标签:二进制,Linux,源码,软件包,软件,源代码,安装
From: https://blog.51cto.com/u_15641375/8309689

相关文章

  • Linux 中 安装perl模块 以及 确认
     001、系统信息  002、安装CPAN  003、以JSON为例,在未安装状态下查看  004、利用cpan-iJSON安装该模块  005、查看JSON安装状态  参考:01、https://www.onitroad.com/jc/linux/faq/find-out-what-perl-modules-already-installed-on-my-system.html......
  • Linux搭建文件服务器
    @目录基于centos7.9搭建http文件服务器基于centos7.9搭建nginx文件服务器基于ubuntu2204搭建http文件服务器IP环境192.168.200.100VMware17基于centos7.9搭建http文件服务器安装httpd[root@localhost~]#yuminstall-yhttpd关闭防火墙以及selinux[root@loc......
  • Linux简单操作
    bashshell介绍和使用什么是Bashshell(壳)是一个命令解释器,就是一个软件执行就是bash,可以在里面输入命令,做交互,exit退出能干什么原来在windows上点点点完成的是,它都能做到使用Shell实现对Linux系统的大部分管理,例如:1.文件管理(文件创建,移动,复制,删除,编辑…)2.权限管......
  • Vue源码学习(十六):diff算法(三)暴力比对
    好家伙,这是diff的最后一节了 0.暴力比对的使用场景 没有可复用的节点:当新旧虚拟DOM的结构完全不同,或者某个节点不能被复用时,需要通过暴力比对来创建新的节点,并在真实DOM上进行相应的插入操作。0.1.例子一://创建vnodeletvm1=newVue({data:{name:'张三'......
  • Linux命令(116)之logger
    linux命令之logger1.logger介绍linux命令logger是一个shell命令接口,通过该接口使用rsyslog的系统日志模块可以向系统日志文件(自定义日志文件)写入一行信息2.logger用法logger[参数][message]logger参数参数说明-i记录进程ID-t在日志中的每一行添加一个标签-p指定自定义的日志设......
  • APISIX源码安装问题解决
    官网手册的安装语句:curlhttps://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh-sL|bash-执行install-dependencies.sh报如下错误:Transactioncheckerror:file/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.pyfrominstal......
  • xixa oraclelinux上kafka集群部署(一)----kafka安装
    kafka部署前提:需要安装jdk1.7以上版本、zookeeper官网下载:http://kafka.apache.org/quickstartkafka配置配置server.properties文件中zookeeper配置,如果集群应该怎么配置?还需要尝试配置kafka集群             在bin目录下面执行......
  • 智慧工地源码:建筑管理的新型方式
    智慧工地是利用物联网、云计算、大数据等技术,实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式,其中,数据分析功能起着至关重要的作用。1、数据采集智慧工地中的数据采集主要通过传感器、监控摄像头等设备进行。这些设备可以实时采集到工地的环境数据、施工人员和设备信息......
  • Linux MIPI 摄像头驱动框架编写(RN6752解码芯片)
    一、概述在编写MIPI摄像头驱动之前,需要先了解Media子系统的链路关系,这里我就不介绍了,需要的看我之前的笔记:LinuxMedia子系统链路分析。理解Media子系统链路关系后,会发现ISP不论是在摄像头端,还是集成在SOC中,驱动程序都是差不多的。多观察一下开发板中的其他案例,便会......
  • Netfilter和iptables的实现机制(Linux)
    一:NetfilterNetfilter是是集成到Linux内核协议栈中的一套防火墙系统。它有4种类型,包括filter、nat、mangle、raw,具体是哪一种表,取决于数据包的处理方式。4种类型如下表所示:表类型说明包含的链接filter显示所有区域及其配置信息的列表INPUT、FORWARD、OUTPUTnat显示默认区域PREROTIN......