Linux系统篇,开发工具(一):从入门到精通的软件安装yum使用

第三章 开发工具的认识与使用


文章目录

  • 前言
  • [一、Linux 安装软件策略](#一、Linux 安装软件策略)
    • [1.1 源码安装](#1.1 源码安装)
    • [1.2 软件包安装](#1.2 软件包安装)
    • [1.3 包管理器yum(centos)](#1.3 包管理器yum(centos))
  • 二、软件的来源
    • [2.1 软件的产生](#2.1 软件的产生)
    • [2.2 下载的过程](#2.2 下载的过程)
      • [2.2.1 下载的实现](#2.2.1 下载的实现)
    • [2.3 维护的实现](#2.3 维护的实现)
  • [三、软件管理器 yum](#三、软件管理器 yum)
    • [3.1 前置条件](#3.1 前置条件)
    • [3.2 yum 命令](#3.2 yum 命令)
      • [3.2.1 具体操作示例](#3.2.1 具体操作示例)
        • [3.2.1.1 查看软件包](#3.2.1.1 查看软件包)
        • [3.2.1.2 安装软件](#3.2.1.2 安装软件)
        • [3.2.1.3 卸载软件](#3.2.1.3 卸载软件)
    • [3.3 下载源](#3.3 下载源)
  • 总结

前言

本节是关于Linux中开发工具的安装与使用,有了开发工具就可以更加高效地书写代码,实现我们的大佬梦。


一、Linux 安装软件策略

我们使用Linux时离不开命令的使用,而这些命令其实就是一种软件,而如何安装软件呢?无非就这三种:源码安装、软件包安装、包管理器安装

1.1 源码安装

源码安装 = 拿到软件的「源代码」 → 自己编译 → 安装到电脑里

  • 源代码(源码): 程序员写的 .c .cpp .py 等文本文件,人能看懂。
  • 编译: 把源码 → 变成电脑能直接运行的二进制文件。
  • 安装: 把编译好的程序放到系统正确位置,让你能直接用。

源码安装: 是 Linux 中最原始、自由度最高、定制性最强的软件安装方式,用户可通过git clone拉取仓库源码 或下载.tar.gz源码压缩包 获取源代码,再经由configure配置环境、make编译源码、make install部署安装的标准流程完成软件部署。

但它存在着明显的缺陷:

  • 版本适配: Linux的内核不同设配的软件版本不同,版本必须统一才能使用
  • 无统一管理: 不纳入系统包管理器管理,无法一键升级、卸载,卸载需手动删文件
  • 门槛较高: 需熟悉编译命令与配置参数,配置不当容易安装失败、污染系统目录

1.2 软件包安装

软件包安装 = 离线本地装 rpm/deb

软件包安装是源码安装的进阶版,它省略了源码编译的过程,直接安装rpm/deb包即可。

软件包:把一个软件的所有东西,打包成一个文件,拿来就能装,不用你编译。

众所周知,软件也是程序写的,那么程序的实现也就离不开库的使用,但是制作时引用的库也是要下载 的,我们在下载软件时就可能遇到:依赖问题

  • 依赖处理: 下载的软件包含着A包,A包中又包含C包和D包,甚至还有其他的包含关系,我们必须手动处理
  • 版本兼容: 当然下载的包必须与下载的软件引用的包是同一版本的,若不相同可能就会报错。

因此这个在实际开发学习中也不推荐使用。

1.3 包管理器yum(centos)

为了解决以上的问题,包管理器应运而生,它能够自动解决以上的问题。包管理器是 Linux 系统中专门用于统一管理软件包的工具,可实现软件的在线查找、安装、升级、卸载以及自动解决依赖关系,代表工具有 CentOS Yum/Dnf、Ubuntu 的 Apt
软件包和软件包管理器,就相比"App"与"应用商店"的关系

包管理器安装 = 用 yum/apt 联网,自动从官方软件仓库下载软件包 + 自动装依赖 + 自动配置

相比前两种安装软件的方式,它具有以下的特点:

  • 自动处理依赖问题: 当使用包管理器下载时,自动分析所需的所有依赖包,并自动去官网下载安装到本地。
  • 一体化处理: 在使用它下载后,它还会支持该软件的"一键"转移、更新、删除
  • 全局共享: 在root权限安装软件后,会储存在系统的公共文件夹下,因此所有的用户都可以使用该软件。

二、软件的来源

我们在享受软件带来的便捷时,不乏有如何优秀的开发者能够实现这样的想法,这样软件的提供是完全免费的,他为什么要提供呢?这个问题就离不开一个系统最关键的地方------生态。

2.1 软件的产生

其实一个操作系统的实现并非遥不可及,只要一个团队借助原有的操作系统和ai就可以轻而易举的实现,但一个系统最重要的地方是它的生态。只有生态完善,才会吸引更多人的使用。

操作系统背后的配套软件就是生态的一环,软件的提供实现为该系统提供活力吸引更多人使用这个系统

2.2 下载的过程

我们来看一下一款软件的诞生到安装到本地电脑的过程吧。

  • 软件的开发: 由开发者将自己所写的代码编译打包形成软件包。
  • 软件上架: 在形成可运行的软件包后,被上传到系统生态的软件包服务器(社区提供云服务器)
  • 软件安装: 用户依靠包管理器(如yum),自动连接相关包的下载地址,发出下载请求,由服务器返回资源,成功安装。

2.2.1 下载的实现

下载软件说来简单,但究竟是怎么实现的呢?其实是通过操作系统内部自带的下载链接,进行内置链接。

但是这些系统的开发都是由外国人实现的,那么社区肯定也是架设在国外,那么我们的下载方法无非两种途径------直连 和 替代网站。

  • 直连: 直接访问国外的网站,但受于国内互联网安全的保护,我们连上的概率几乎为0,就算连上了下载也是以字节为单位 ''蠕动'' 下载。
  • 替代网站: 可以使用国内的社区网站或者其他的资源网站,但会面临野生网站安全性的风险。在其中镜像网站就脱颖而出了。

镜像网站: 完全复制原官方网站、软件仓库的全部资源,内容、文件、目录和官网一模一样,作为备用下载源。

如常用的:清华大学镜像网站阿里镜像网站等镜像网站

2.3 维护的实现

那这些开发、服务器的构建、底层的维护都是需要资金的,它们不收费那怎么维持的呢?

其实你只要使用它们的社区服务就产生了因果 :你身为一家使用该系统的服务的老板,你们的程序依赖着社区的下载资源还有软件等,如果它们消失了你的公司就会不会不受到影响的,因此你就会自发地维护这个生态,从而实现维护,同理对于其他公司也一样。


三、软件管理器 yum

本节使用centos系统的包管理器yum来进行讲解和使用。

3.1 前置条件

类似于我们日常手机上下载软件,这个也是需要联网的,我们必须确保处于联网条件,才能够实现软件的安装。

ping 指令 来查看我们的服务器是否处于联网状态

ping相当于发送一个小的数据包,而如果网上的服务器能够接受到这个包就会做出反应,因此ping常用于检测网络。

3.2 yum 命令

  • 格式: yum [参数] 选项 [软件名]
  • 功能: Linux CentOS 系统软件包安装、卸载、升级、查询、管理依赖
  • 常用选项 :

install:安装软件
remove:卸载软件
update:升级软件
search:搜索软件
list installed:查看已安装软件
clean all:清理仓库缓存
makecache:生成仓库缓存
-y:自动确认所有交互提示

3.2.1 具体操作示例

3.2.1.1 查看软件包

使用yum list命令能够查看所有可以下载的软件信息,但因为包的种类多种多样,我们一般配合之前讲的过滤器grep使用。

查询软件包所显示的信息分别是:软件包名称:主版本号.次版本号.源程序发⾏号-软件包的发⾏号.主机平台.cpu架构

软件包后缀则是表示多少位系统如:"x86_64"后缀表⽰64位系统的安装包,"i686"后缀表⽰32位系统安装包

最后的" @ "这一块代表软件包组,就类似我们日常应用商店中:游戏、音乐、教育等这些软件类。

3.2.1.2 安装软件

使用yum安装时需要使用install选项,并且必须是管理员即root用户或者sudo,才能够安装软件。

在执行结果底部出现**"complete"**字样或者中间未出现报错,说明安装完成。

3.2.1.3 卸载软件

使用yum卸载时需要使用remove选项,它会删除软件还有安装时附加的库、前置软件等,不推荐使用rm一个个删除。

在执行结果底部出现**"complete"**字样或者中间未出现报错,说明卸载完成。

3.3 下载源

yum在下载安装文件时会自动访问下载地址,那这些地址存储在哪里呢?以yum为例,下载源存在/etc/yum.repos.d这个目录下*(yum源的配置文件),里面一般存在两个文件。

  一般存储在第一个即为 基础yum源,另一个为拓展yum源,我们可以打开对下载源进行配置。(epel一般为测试软件,等投入使用没有问题后就会改为base源)

  可以看到里面的下载源头并非是外网的地址,这是因为国内的服务器网站已经给你配置好了,不需要你去更改操作了
(虚拟机可能是国外的地址)*。

需要更改yun源的可以查看该大佬的文章(侵权可删)


总结

本节的内容就结束了,下节我们将围绕vim这个软件展开,真正实现在Linux上熟练敲代码的功能,感谢您的阅读,我们下期再见。

相关推荐
司南-70491 小时前
如何下载无损 bilbili视频?
运维·服务器·动画·技术美术
无限进步_1 小时前
【Linux】从磁盘到文件系统——块、分区与inode
linux·运维·服务器
2401_853087881 小时前
国产化DevOps工具链实践:知识库与需求/任务/版本如何打通?
运维·网络·devops
噗噗121 小时前
企业微信 API 实战系列(一):构建基于“动态行为”的自动化公海流转系统
运维·自动化·企业微信
渡我白衣1 小时前
定时器与时间轮思想
linux·开发语言·前端·c++·人工智能·深度学习·神经网络
zt1985q1 小时前
本地部署开源数据库管理工具 DBeaver 并实现外部访问( Windows 版本)
运维·服务器·网络·数据库·网络协议
Marry Andy1 小时前
Atlas 800T A2部署qwen3-32b
linux·人工智能·语言模型·自然语言处理
珂玥c1 小时前
新增硬盘有脏数据如何处理——ubuntu16.04
linux·数据库·ide
wpeng56411 小时前
LINUX-FSTAB参数/SSD挂载
linux·运维·服务器