Linux软件包(源码包和二进制包)详细介绍
ahcoder 2025-05-10 19:23 24 浏览
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 点好处:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
- 安装速度比源码包安装快得多。
与此同时,使用 RMP 包安装软件有如下不足:
- 经过编译,不能再看到源代码。
- 功能选择不如源码包灵活。
- 依赖性。有时我们会发现,在安装软件包 a 时需要先安装 b 和 c,而在安装 b 时需要先安装 d 和 e。这就需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a。比如,我买了一个漂亮的灯具,打算安装在客厅里,可是在安装灯具之前,客厅需要有顶棚,并且顶棚需要刷好油漆。安装软件和装修及其类似,需要有一定的顺序,但是有时依赖性会非常强。
如何选择
通过源码包和 RMP 二进制包的对比,在 Linux 进行软件安装时,我们应该使用哪种软件包呢?
为了更好的区别两种软件包,这里举个例子。假设我们想做一套家具,源码包就像所有的家具完全由自己动手手工打造(手工编译),想要什么样的板材、油漆、颜色和样式都由自己决定(功能自定义,甚至可以修改源代码)。想想就觉得爽,完全不用被黑心的厂商所左右,而且不用担心质量问题(软件更适合自己的系统,效率更高,更加稳定)。但是,所花费的时间大大超过了买一套家具的时间(编译浪费时间),而且自己真的有做木工这个能力吗(需要对源代码非常了解)?就算请别人定制好的家具,再由自己组装,万一哪个部件不匹配(报错很难解决),怎么办?
那么二进制包呢?也是我们需要一套家具,去商场买了一套(安装简单),家具都是现成的,不会有哪个部件不匹配,除非因为自身问题没有量好尺寸而导致放不下(报错很少)。但是我们完全不知道这套家具用的是什么材料、油漆是否合格,而且家具的样式不能随意选择(软件基本不能自定义功能)。
通过以上对源码包和二进制包的讲解,相信大家对两者的区别和特点有了更清楚的认识。
我是@大仁笔记,欢迎大家学习交流,一起为更好的明天好好努力。
相关推荐
- Nginx的http块sendfile,keepalive_timeout的配置指令说明,
-
sendfile是用来设置Ngnix服务的一种静态资源的写法sendfile:用来设置Nginx服务器是否使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能这里send...
- Docker安装和配置Nginx(docker-compose部署nginx)
-
下载镜像dockerpullnginx检查Nginx镜像dockerimages创建挂载目录mkdir-p/home/docker-nginx/confmkdir-p/home/doc...
- 记:Nginx 如何配置SSL证书(nginx添加ssl证书)
-
引言最近,有几个其他项目团队的同事问了我几个类似问题:“钦哥,我们微信小程序微信支付,怎么回调不没反应?”“钦哥,我们的项目怎么无法通过https访问的?”然后就有想把配置ssl证书的过程,记录一...
- 多项目nginx部署配置(nginx多站点配置示例)
-
在前后端分离的项目中,前端部署大部分都采用nginx部署。在我参与的一个项目中,后台管理前端和业务应用前端是作为两个独立项目开发的。以往部署时通过不同端口来访问这两个项目,这就导致前端存储的token...
- NGINX最佳缓存配置策略(nginx最佳缓存配置策略有哪些)
-
Nginx可以配置的参数有很多,今天我们来看一下Nginx的缓存如何配置。no-cache和no-store“no-cache”表示必须先与服务器确认返回的响应是否发生了变化,然后才能使用该响应来满足...
- 通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
-
本篇文章以前端的视角,介绍下nginx的常见配置,并通过docker的方式学习nginx,这保证所有实例配置都能正常运行。我将本文所有关于docker/nginx的配置放置在simple...
- nginx配置负载均衡 以及宕机了后,怎么配置高可用
-
Nginx负载均衡配置是一个分发请求的过程。可以通过将同一个服务的多个实例配置到不同的服务器上,通过Nginx代理请求,将请求分发到这些实例上实现负载均衡。下面详细介绍Nginx负载均衡的配置过程和宕...
- nginx反向代理加https证书和自动跳转配置
-
nginx反向代理加https证书和自动跳转配置如果对运维课程感兴趣,可以在b站上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频1.机器规划:nginx代理机器:192.16...
- 【Nginx基础】Nginx常见负载均衡策略配置示例
-
下面是一些常用的Nginx负载均衡策略及其配置示例:轮询(RoundRobin)这是默认的负载均衡策略,它将请求依次分配给不同的后端服务器。upstreambackend{server...
- nginx中配置固定的JSON响应(nginx指定conf)
-
前提在进行性能测试时,使用mock接口是一种非常有效的方法,可以帮助您模拟真实服务的行为,从而避免对外部系统的依赖。使用Nginx作为mock接口的返回源不仅可以快速配置,还能确保mock接口本身不...
- Nginx基本安全配置(防盗连、隐藏版本号、防嵌套等)
-
在生产环境中nginx有很多安全方案,我在为生产环境部署中得到很多经验,收集到的一些常用配置,简单记录一下。安装Nginx正常安全Nginx大家应该都会,但是各位要知道在安全要求很高的生产环境中,是无...
- nginx如何配置跨域(nginx配置解决跨域)
-
要在Nginx中配置跨域,可以使用add_header指令来添加Access-Control-Allow-*头信息,如下所示:location/api{if($reques...
- Nginx合集-限流配置方案参考(nginx lua限流)
-
Nginx为我们提供了请求限制模块(ngx_http_limit_req_module)、基于令牌桶算法的流量限制模块(ngx_stream_limit_conn_module),可以方便的控制令牌速...
- 韩国站群服务器Nginx反向代理多IP配置指南
-
在站群服务器的运营中,Nginx反向代理技术如同一座智能调度中心,既能隐藏真实服务器架构,又能实现流量精准分发。尤其对于部署在韩国数据中心的站群而言,合理配置多IP反向代理,可显著提升SEO安全性与服...
- Nginx配置前后端服务(nginx配置前端页面部署)
-
nginx安装完成后,可以通过命令查看配置文件nginx-t配置文件nginx.conf,是总的配置,有的人会把配置全部配置到这个文件中,如果服务很多,这个文件变得非常庞大,我见过一个配置很大的,在...
- 一周热门
- 最近发表
-
- Nginx的http块sendfile,keepalive_timeout的配置指令说明,
- Docker安装和配置Nginx(docker-compose部署nginx)
- 记:Nginx 如何配置SSL证书(nginx添加ssl证书)
- 多项目nginx部署配置(nginx多站点配置示例)
- NGINX最佳缓存配置策略(nginx最佳缓存配置策略有哪些)
- 通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
- nginx配置负载均衡 以及宕机了后,怎么配置高可用
- nginx反向代理加https证书和自动跳转配置
- 【Nginx基础】Nginx常见负载均衡策略配置示例
- nginx中配置固定的JSON响应(nginx指定conf)
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)
- nginx配置 解析 (37)