乐于分享
好东西不私藏

Linux 为什么不用官网下载软件?原来 yum 背后还有这一套机制

Linux 为什么不用官网下载软件?原来 yum 背后还有这一套机制

文章目录

  • 概要&序論
  • 一、在 Linux 环境下安装软件
    • 1.1 Linux 中安装软件的三大手段
      • 1.1.1 源码安装的不足
      • 1.1.2 软件包安装的不足
      • 1.1.3 包管理器的优势(以 yum 为例)
    • 1.2,yum的使用
      • 1.2.1指令介绍
      • 1.2.2操作案例
      • 1.2.3网络连通性检测
        • 1.2.3.1核心指令:ping
        • 1.2.3.2输出信息解读
    • 1.3yum操作的进阶补充
  • 二、Linux 上的软件是谁提供的
    • 2.1 配套软件之于操作系统生态
    • 2.2 Linux 上软件的提供过程
      • 2.2.1 开发者与开源商业模式
      • 2.2.2 社区与构建系统
      • 2.2.3 我们的 Linux 机器与包管理器
    • 2.3 镜像
      • 2.3.1镜像的概念
      • 2.3.2镜像源(yum源)的配置

概要&序論

Hello 大家好,我是此方,今天开始我会为大家带来Linux的开发工具的相关内容,内容还是力求完整充实,干货满满,希望能够帮到大家。好,我们开始。

欢迎关注CSDN获取最新内容:

https://blog.csdn.net/Z2314246476?spm=1011.2415.3001.5343

从今天开始,我们要介绍的开发工具有哪些?

一、在 Linux 环境下安装软件

    在 Linux 操作系统的日常使用与运维中,安装软件是基础且频繁的操作。根据自动化程度和底层原理的不同,传统的软件安装手段主要分为三大类:源码安装软件包安装(如 RPM)以及包管理器安装(如 yum/apt)

在ubantu中是apt,在Centos中是yum,以下我们以yum示例,在ubantu中完全一致

1.1 Linux 中安装软件的三大手段

    为了更好地理解为什么现代生产环境更倾向于使用包管理器,我们需要对比这三者之间的差异及其各自的局限性。

1.1.1 源码安装的不足

    源码安装是最原始、最灵活的安装方式。用户通常需要通过 git clone 或下载 .tar.gz 压缩包获取源代码,随后经过 configuremakemake install 三部曲完成安装。

然而,这种方式存在明显的不足:

  • 编译门槛高
    :要求用户环境必须提前配置好对应的编译器(如 gcc, g++)、构建工具以及所有的底层库文件。
  • 过程繁琐且耗时
    :大型软件的编译可能耗费数小时,且一旦报错,排查成本极高。
  • 难以管理
    :源码安装的软件通常分散在 /usr/local/ 等目录下,不具备统一的卸载与版本升级机制。

1.1.2 软件包安装的不足

    为了简化安装过程,开发者将源码预先编译好,打包成特定格式的安装包(如 CentOS 中的 .rpm 文件或 Ubuntu 中的 .deb 文件)。这种方式类似于 Windows 下的 .exe 安装程序。     尽管它免去了编译的痛苦,但仍存在一个致命的知识点缺陷依赖问题(Dependency Hell)

  • 手动处理依赖
    :当你安装软件包 A 时,系统可能会提示它依赖于 B;而当你尝试安装 B 时,又发现它依赖于 C 和 D。
  • 版本兼容性风险
    :用户很难手动判断当前系统中已有的库文件版本是否满足该软件包的严苛要求,强行安装极易导致系统库冲突或软件无法运行。

补充:linux的根目录/下有这么多分门别类的目录,就是为了方便你在安装一个东西的时候能把这个东西的依赖分门别类的放到不同的目录下。

1.1.3 包管理器的优势(以 yum 为例)

    针对上述手段的痛点,包管理器(Package Manager) 应运而生。类似于我们的应用商店,在 CentOS 中,我们最常用的工具是 yum(Yellowdog Updater, Modified),它本质上是 RPM 的前端工具,并引入了“软件仓”的概念。与前两者相比,其核心优势体现在:

  1. 全自动解决依赖关系
    :这是包管理器最显著的优势。当你执行 yum install 时,它会自动分析该软件所需的所有依赖包,并从云端仓库一并下载安装。这种“一键式”体验彻底解决了令人头疼的依赖缺失与版本兼容性问题。
  2. 网络化获取与安装
    yum 能够自动从配置好的镜像源(Repo)中通过网络下载最新的软件包,确保了获取渠道的安全与便捷。
  3. 全局共享与权限管理
    :在 Linux 中,使用 yum 安装软件通常需要 root 权限。软件一旦安装到系统中,便实现了“一次安装,全员使用”的共享机制,方便了多用户环境下的统一管理。
  4. 生命周期管理
    :包管理器提供了完善的查询(check)、更新(update)和卸载(remove)功能,使得维护系统软件环境变得井然有序。

注册表:安装好了程序之后,把程序的信息写入注册表。,root装的软件——普通用户都能用。因为我是安装在系统里面不是安装在home里。

1.2,yum的使用

1.2.1指令介绍

  • 指令名称:yum (Yellowdog Updater, Modified)

  • 指令重要性:★★★★★

  • 说明:

    • 基本用法
      yum install <包名>(安装软件)、yum remove <包名>(卸载软件)、yum list(列出可用包)。
    • 最常用选项
      :-y“免确认”开关,让 Linux 在安装软件时自动执行。

我们知道在windows系统上,npm经常被用来下载东西,但是npm更加像yum而不是rpm,我们接下来讲你就明白了。

1.2.2操作案例

下载:

[root@VM-0-9-opencloudos ~]# yum install slBaseOS 9 - x86_64                                                             368 kB/s | 3.8 kB     00:00    BaseOS 9 - x86_64                                                              25 MB/s | 1.6 MB     00:00    AppStream 9 - x86_64                                                          775 kB/s | 3.8 kB     00:00    AppStream 9 - x86_64                                                           89 MB/s |  17 MB     00:00    extras 9 - x86_64                                                             187 kB/s | 3.0 kB     00:00    Extra Packages for OpenCloudOS 9 - EPOL                                       434 kB/s | 3.0 kB     00:00    Extra Packages for OpenCloudOS 9 - EPOL                                        44 MB/s |  19 MB     00:00    Dependencies resolved.============================================================================================================== Package               Architecture              Version                        Repository               Size==============================================================================================================Installing: sl                    x86_64                    5.02-2.oc9                     EPOL                     16 kTransaction Summary==============================================================================================================Install  1 PackageTotal download size: 16 kInstalled size: 21 kIs this ok [y/N]: yDownloading Packages:sl-5.02-2.oc9.x86_64.rpm                                                       69 kB/s |  16 kB     00:00    --------------------------------------------------------------------------------------------------------------Total                                                                          69 kB/s |  16 kB     00:00     Running transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction  Preparing        :                                                                                      1/1   Installing       : sl-5.02-2.oc9.x86_64                                                                 1/1   Running scriptlet: sl-5.02-2.oc9.x86_64                                                                 1/1   Verifying        : sl-5.02-2.oc9.x86_64                                                                 1/1 Installed:  sl-5.02-2.oc9.x86_64                                                                                        Complete![root@VM-0-9-opencloudos ~]# 
[root@VM-0-9-opencloudos ~]# sl

卸载:

[root@VM-0-9-opencloudos ~]# yum remove sl  #可以带上x86_64也可以不带Dependencies resolved.============================================================================================================== Package               Architecture              Version                       Repository                Size==============================================================================================================Removing: sl                    x86_64 (体系结构)                   5.02-2.oc9   (版本)                 @EPOL                     21 kTransaction Summary==============================================================================================================Remove  1 PackageFreed space: 21 kIs this ok [y/N]: yRunning transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction  Preparing        :                                                                                      1/1   Erasing          : sl-5.02-2.oc9.x86_64                                                                 1/1   Running scriptlet: sl-5.02-2.oc9.x86_64                                                                 1/1   Verifying        : sl-5.02-2.oc9.x86_64                                                                 1/1 Removed:  sl-5.02-2.oc9.x86_64                                                                                        Complete![root@VM-0-9-opencloudos ~]# sl-bash: /usr/bin/sl: No such file or directory[root@VM-0-9-opencloudos ~]

查找:

[root@VM-0-9-opencloudos ~]# yum list | grep lrzszlrzsz.x86_64                                                      0.12.20-6.oc9                        @System   [root@VM-0-9-opencloudos ~]

直接按会被大量的安装包信息刷屏。

使用-y选项下载man-pages:

whb@bite-alicloud ~]basearch/os/ 你在装这个机器的时候就默认给你的 yum 源给他改了,不是国外的那个而是云厂商的镜像,不需要你手动配置。虚拟机里面的一般都是国外的原生镜像源。,如下,我们找到了一张图片。    有的镜像源是开放的,有的镜像源是企业内部的,比如你直接把你刚才那个基础yum源的网址去复制到浏览器,不一定能打开。这么一条yum源是怎么组成的?好,我们正式来修改yum源。备份原始 yum 源配置文件:   cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup   [root@CentOS-Base-repo]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新的 yum 源配置文件(阿里源):   curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo清空缓存并重新生成缓存:   sudo yum clean all   sudo yum makecache更新系统软件包:   sudo yum update好的本期内容就到这里,如果对你有帮助,还不要忘记点赞三联支持。我是此方,我们下期再见。bye!