您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

Linux 安装软件的几种方式

时间:2023-08-08 14:37:35  来源:微信公众号  作者:咸鱼运维杂谈

哈喽大家好,我是咸鱼

 

相信小伙伴们都知道在 linux 中,安装软件一般有三种方式

  • YUM 安装

  • RPM 安装

  • 源码编译安装

 

咸鱼平时三种安装方式都会用,但是具体原理和区别却没有去深入了解过

 

结果上周部门刚来的新人问我这几种安装方式的时候,一下子把我问懵了

 

那么今天咸鱼将会向小伙伴们介绍这三种软件安装方式的原理以及各自的优缺点

 

 
源码编译安装

 

首先我们来看源码编译安装,这是 Linux 中最传统的软件安装方式

 

我们知道在 Linux 中,安装好的软件通常是以可执行文件的形式提供的

 

这些可执行文件是经过编译的二进制程序,其本质上是由计算机可以直接执行的机器指令组成的

 

而二进制程序可以直接在 Linux 系统上运行,执行相应的功能

 

"ELF 64-bit LSB executable" 时,表示该文件是一个 64 位的 ELF 可执行文件

 

“源码”就是源代码,源代码其实就是一般的纯文本文件,我们编写好“源码”之后,需要将这个文本文件“编译”成为操作系统看得懂的二进制程序,这个“编译”的过程就需要”编译器“来实现

 

比如说我们使用 Linux 的标准程序语言 C 来写一个源代码,然后用 C 语言编译器 gcc 来编译,就可以制作一个可执行二进制程序

 

有时候我们会在程序当中调用外部子程序,或是利用其他软件提供的函数,这个时候我们就需要在编译的过程中将对应的函数库加进去,这样编译器就可以将源代码与函数库作一个链接(link)

 

 

make 与 makefile

我们在用 gcc 这类编译器进行编译的时候,需要手动指定要编译的每个源代码文件以及相关的编译选项(如编译模式、优化级别等)

 

编译小型程序还好,如果碰到包含大量源代码的程序就会导致编译过程往往极为复杂(例如需要手动管理依赖关系和编译顺序)

 

那么我们可以使用 make 来进行编译,make 能够根据代码文件之间的依赖关系自动执行必要的编译和链接操作,简化编译过程

 

当执行 make 命令时,make 会在当前目录下查找 makefile 这个文件(makefile 里面记录了源代码该如何编译的详细信息)

 

通常软件开发商会写一个检测用户操作环境以及当前操作环境是否有软件开发商所需要的其他功能的程序,这个检测程序一般命名为 configconfigure

 

检测程序执行完毕之后就会主动建立出一个 makefile 文件

 

通常检测的内容如下:

1. 是否有适合的编译器可以编译该软件的代码

2. 是否已经存在该软件所需要的函数库或其他依赖条件

3. 操作系统是否适合该软件

4. 内核的头文件是否存在

 

makefile 是一种文本文件,它包含了一组规则和指令,用于告诉 make 工具如何编译和链接源代码文件,生成可执行程序或库文件等

 

Tarball(压缩文件)

前面我们已经知道,源代码其实就是纯文本文件,我们想要安装一款软件,就需要去官网下载这些源码到本地

 

但是这样是很浪费带宽和消耗网络资源的(纯文本文件在网络上是很浪费带宽的一种文件格式)

 

所以如果能够把这些源码将其打包和压缩,不但能够让用户方便下载,还能减轻官网的网络带宽, Tarball 文件由此诞生

 

所谓的 Tarball 文件,就是将软件的所有源码先用 tar 打包,然后再压缩(最常见的就是 gzip 压缩技术),所以 Tarball 文件一般的扩展名会写成 *.tar.gz*.tgz

 

所以我们常见的安装方式过程如下:

  1. 从官网下载 Tarball 软件包,放在 /usr/local/src 目录下解压缩

  2. 解压缩之后进入到软件目录,查看 INSTALL 和 README 等相关文件内容,然后安装好一些依赖的软件

  3. 建立 makefile,通过自动检测程序(config 或 configure)生成 makefile 文件

  4. 使用 make 命令进行编译

  5. 最后 make install 安装

     


我们以安装 Nginx 为例

1、首先从官网下载 Tarball 文件到相关目录

 

2、然后安装相关的依赖

 

3、对 Tarball 文件解压缩,并进入文件目录

 

4、建立 makefile(指定了安装目录 /usr/local/nginx)

5、编译以及安装

 

总结一下

  • 源代码大多为纯文本文件,需要通过编译器的编译操作后,才能够生成操作系统看得懂的可执行二进制文件

  • 可以通过 make 和 makefile 来简化编译流程

  • makefile 包含了一组规则和指令,由自动检测程序(config 或 configure)生成

  • 为了方便用户下载和检测软件官网的压力,一般通过 Tarball 的方式来管理软件

 

 
RPM 安装

 

前面我们讲到了源码编译安装,即通过下载软件发行商提供的 Tarball 文件来进行安装

 

将 Tarball 文件下载之后还要解压缩,还要 configure 检测,还要编译还要配置还要安装,可以看到过程是比较复杂的,需要敲的命令比较多,很容易劝退小白

 

不但如此,这种安装方式还会导致一些其他问题

  • 依赖性问题: 软件通常依赖于其他软件库和组件,手动解决依赖性问题可能会变得非常棘手,特别是当软件的依赖关系相对复杂时

  • 版本控制: 用户需要自行管理多个软件的不同版本,这可能导致版本冲突和不一致

  • 一致性问题: 用户需要花费大量时间来确保所有安装的软件都保持一致,并避免不同版本之间的冲突

 

为了能够更好地更加标准地管理 Linux 的软件,减轻用户的负担和学习成本,厂商们就在想:我们能不能先把软件所有的相关文件都打包成一个特殊格式的软件包(文件)

 

然后在这个软件包里面不但包含了检测依赖关系和系统环境的文件,还包含了关于这个软件的信息、二进制文件等等

 

这样当用户下载了这个软件包的时候,只需要简单的命令就能够安装,并且还会把当前软件的信息管理起来,方便用户后续的升级、卸载等操作

 

于是 Red Hat 在 1995 年引入了 RPM (RedHat Package Manager)

 

RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制

 

1、厂商们先把软件编译好,然后打包成 RPM 包(包含软件的依赖关系、版本信息以及其他元数据)

 

2、当你在安装 RPM 包的时候,系统会检查该软件包的依赖的其他软件包是否已经安装

 

3、然后检查本地没有已经安装好的软件或者冲突的版本(有的话会给提示)

 

4、如果上面两项检查都通过了,系统会将安装的软件包的信息添加到 RPM 数据库中,以便后续的管理和查询

 

5、安装完成后,系统会更新 RPM 数据库中的信息,标记软件包为已安装状态,并记录安装时间、版本等信息

 

我们来看一下常见的 rpm 命令有哪些

 

 
YUM 安装

 

前面我们介绍了 RPM 安装,尽管 RPM 可以处理软件的依赖关系,但仍有一定的局限性

 

比如依赖关系需要我们手动处理,RPM 不会帮我们自动下载安装所需要的依赖软件包,这就导致我们需要手动查找并下载软件包

 

为了解决这个问题,YUM(Yellowdog Updater, Modified)诞生了

 

YUM 基于 RPM 包去管理软件包,它通过一个名为  `yum repository  ` 的服务器存储库来管理软件包,其中包含了各种软件包及其依赖关系信息

 

这使得用户可以通过简单的命令完成软件包的安装、升级和卸载,同时自动处理依赖关系,无须繁琐地一次次下载、安装

 

虽然 YUM 最初是为 Red Hat Linux 开发的,但它的原理和功能非常通用,因此很多其他 Linux 发行版也采用了 YUM 作为其软件包管理工具

 

下面是一些 yum 常见命令

 

 
总结

 

最后我们总结一下

 

区别:

  • 源码编译安装需要手动下载源代码,解决依赖问题,配置编译选项,编译,安装,并且没有自动升级和卸载功能

  • RPM 软件包包含已经编译好的二进制程序、相关依赖关系信息以及软件信息等,减轻了软件安装复杂性,方便软件管理

  • YUM 软件包基于 RPM 包去管理软件包,进一步解决了软件依赖等问题,不同于 RPM 安装,YUM 安装能够自动解决软件包的依赖关系

 

各自优缺点:

  • 优点:灵活性高定制性强,可以根据需要自定义编译选项和功能;可以跨平台使用

  • 缺点:安装过程复杂;不能解决软件依赖问题;管理不方便,没有自动升级卸载机制

  • 优点:管理方便,将软件以及相关信息打包成 RPM 形式,可以自动升级和卸载软件;可以轻松跟踪已安装的软件包、版本和更新信息;较好地解决软件依赖问题

  • 缺点:遇到软件依赖问题的时候,需要手动解决;不够灵活,不能够自定义功能

  • 优点:自动解决软件包的依赖关系;管理方便,提供软件包的安装、升级、卸载和搜索等功能

  • 缺点:缺少定制化,不能自定义功能;更新滞后,某些发行版的官方仓库可能不及时提供最新版本的软件包

  • 源码编译安装

  • RPM 安装

  • YUM 安装



Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(5)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: Linux  点击:(13)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: Linux  点击:(7)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: Linux  点击:(9)  评论:(0)  加入收藏
Linux发行版 Ubuntu 迎更新 界面设计灵感来自 Windows 11
近日,一位第三方开发者推出了一款名为“Wubuntu”的特殊Linux发行版。这款系统源自主流的Ubuntu版本,但在界面设计上却借鉴了微软最新的Windows 11风格,甚至在其中融入了微软标...【详细内容】
2024-02-27  Search: Linux  点击:(41)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: Linux  点击:(47)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  Search: Linux  点击:(49)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01  Search: Linux  点击:(74)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  Search: Linux  点击:(65)  评论:(0)  加入收藏
如何使用PHP SSH2模块执行远程Linux命令
PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。下面我将为大家详细介绍一下该扩展的...【详细内容】
2024-01-26  Search: Linux  点击:(99)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(5)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(13)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(7)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(9)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(51)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(47)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(49)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(74)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(65)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条