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

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

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

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

Linux源码包

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

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

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

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

另外,由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。比如,大家应该都在 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 进行软件安装时,我们应该使用哪种软件包呢?

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++学习贴---C++预处理器

文章目录 前言预处理器#define预处理条件编译#ifdef#ifndef#if、#elif、#else 和 #endif #和##运算符 预定义宏 前言 预处理器 预处理器是指一些指示编译器在实际编译之前所需要完成的指令。 预处理器负责处理以**井号(#)**开头的预处理指令&#xff0…

【Git】Gui图形化管理、SSH协议私库集成IDEA使用

一、Gui图形化界面使用 1、根据自己需求打开管理器 2、克隆现有的库 3、图形化界面介绍 1、首先在本地仓库更新一个代码文件,进行使用: 2、进入图形管理界面刷新代码资源: 3、点击Stage changed 跟踪文件,将文件处于暂存区 4、通过…

C语言实现给出一位数不大于7位的整型数字,取整数从右端开始的4~7位数字

完整代码: // 给出一位数不大于7位的整型数字,取整数从右端开始的4~7位数字 //就是一个数为abcdefg,取它从右端开始的4~7位数字,就为dcba //如果位数不足7位时,会在数字高位补0 //例如一个数为…

【Vue】【uni-app】工单管理页面实现

用的是uni-app的uni-ui拓展组件实现的 功能是对工单进行一个展示,并对工单根据一些筛选条件进行搜索 目前是实现了除了日期之外的搜索功能,测试数据是下面这个tableData.js,都是我自己手写的,后端请求也稍微写了一些,…

让你认识C++中的模板

目录 一. 泛型编程1、定义 二、函数模板1、定义2、格式3、函数模板的实例化(1)、强制转化(2)、显式实例化 三、类模板1、 类模板的定义格式2、实例3、 类模板的实例化 一. 泛型编程 1、定义 泛型编程:编写与类型无关…

电大搜题:为湖北开放大学学子提供便捷学习辅助工具

湖北开放大学作为一所具有重要社会影响力的学府,为广大在职人士和学习追求者提供了便利的高等教育机会。然而,在学习过程中,同学们常常会遇到繁重的课业压力和难以解决的学习难题。为了解决这一问题,湖北开放大学与广播电视大学合…

页表和cache

页表基本原理 页表主要用来将虚拟地址映射到物理地址,在使用虚拟地址访问内存时,微处理器首先将虚拟地址拆分成页号和页内偏移量,然后使用页号在页表中查找对应的物理页框号,将物理页地址加上页内偏移量,得到最终的物…

STM32 LED编程 GPIO的初始化(标准库)

实验的电路图介绍 实验的电路图类似于开漏接法 要初始化GPIOC接口 标准库的模板 GPIO的标准库编程接口 GPIO引脚的初始化 GPIO作为片上外设 每一个片上外设使用前一定要使能时钟 为什么要使能时钟?时钟是啥 时钟的使能 stm32的每一个片上外设都是时序电路 时序…

element-ui的form校验失败

数值与字符串混淆 数值 <el-input type"number" v-model.number"form.averageFruitWeight" placeholder"请输入平均单果重"/>字符串 fruitDevelopmentStage: [{pattern: ^[-\\]?([0-9]\\.?)?[0-9]$, message: 输入必须为数字, trigge…

AI由许多不同的技术组成,其中一些最核心的技术如下

AI由许多不同的技术组成&#xff0c;其中一些最核心的技术包括&#xff1a; 机器学习&#xff1a;这是一种让计算机从数据中学习的技术&#xff0c;它可以根据已有的数据预测未来的趋势和行为。机器学习包括监督学习、无监督学习和强化学习等多种类型。深度学习&#xff1a;这…

出现“线程无法访问非本线程创建的资源”的错误

出现原因 在WinForm中&#xff0c;如果你尝试在一个线程上操作另一个线程创建的控件&#xff0c;就会出现“线程无法访问非本线程创建的资源”的错误。这是因为Windows窗体的设计原则是单线程模型&#xff0c;即只有创建该控件的线程才能对其进行操作。 解决方法 1.使用 Contr…

【星海随笔】SDN neutron (一)

一、SDN的原理&#xff1a; 控制平面与数据平面分离&#xff1a;传统网络中&#xff0c;网络设备同时承担控制和数据转发功能&#xff0c;而SDN将这两个功能分离&#xff0c;使得网络控制集中在一个中心控制器上。 中心控制器&#xff1a;SDN架构中的中心控制器负责网络的全局…

强化学习 - 策略梯度(Policy Gradient)

引言 强化学习常见的方法为基于值函数或者基于策略梯度。 值函数&#xff1a;值函数最优时得到最优策略&#xff0c;即状态s下&#xff0c;最大行为值函数maxQ(s,a)对应的动作。 但对于机器人连续动作空间&#xff0c;动作连续时&#xff0c;基于值函数&#xff0c;存在以下问…

C语言C位出道心法(五):内存管理

C语言C位出道心法(一):基础语法 C语言C位出道心法(二):结构体|结构体指针|链表 C语言C位出道心法(三):共用体|枚举 C语言C位出道心法(四):文件操作 C语言C位出道心法(五):内存管理 一:C语言内存管理认知 二:C语言中内存堆|栈认知 三:C语言中引用内存丢失认知

秋招进入尾声了,还有哪些公司和岗位可以投递?

24届秋招基本已经进入尾声了&#xff0c;接下来就是秋招补录了&#xff0c;最近在微信群看到一些同学再问哪些公司还在招人的。 在这里跟大家分享一份2024届秋招信息汇总表&#xff0c;目前已更新2000家&#xff0c;不仅有互联网公司&#xff0c;还有外企、国企、各类研究所&am…

使用WinDbg分析CPU100%的问题

在我们软件运行的时候&#xff0c;偶尔会出现CPU占比100%的问题&#xff0c;而且极其不容易排查&#xff0c;概率极低&#xff0c;我硬是操作了一个下午&#xff0c;出现了一次&#xff0c;然后找到了dmp文件&#xff0c;也没有任何的规律&#xff0c;那么就可以借助windbg进行…

轻松下载网页音频和视频

在网页上看到好看的视频或者听到的音乐想保存&#xff0c;让我来教你&#xff08;仅供学习&#xff09; 注意&#xff1a;有极少部分的网站视频经过加密&#xff0c;无法下载 一、视频下载 1.打开视频网页 2.右键“检查” 3.刷新网页 4.按照下图中步骤操作 5.把复制的链接放…

如何利用产品帮助中心提升用户体验

在当今竞争激烈的市场中&#xff0c;提供优秀的用户体验是吸引和保留客户的关键。而一个高效和易于使用的产品帮助中心&#xff0c;正成为越来越多企业用以提升用户体验的重要工具。产品帮助中心是一个集中的信息库&#xff0c;为用户提供关于产品功能、故障排除、常见问题解答…

11.10

.text .global _start _start: 1.RCC时钟使能GPIOE RCC_MP_AHB4ENSETR[4]->1 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) ORR R1,R1,#(0x1<<1) STR R1,[R0] 2.设置PE10为输出模式 GPIOE_MODER[21:20]->01 先清0 LDR R0,0x50006000 LDR R1,[R0]…

思科C9300交换机堆叠

思科C9300交换机堆叠仅支持同质堆叠&#xff0c;即仅以Cisco Catalyst 9300系列交换机作为堆叠成员的Cisco Catalyst 930O系列交换机堆叠。需要专用电缆&#xff0c;除数据交接支持堆叠外&#xff0c;还支持电源的堆叠。 在所有交换机上运行命令 "switch convert mode sta…