Linux:软件包管理器 - yum

news2024/11/26 5:48:51

Linux:软件包管理器 - yum

    • Linux的软件安装方式
      • 源代码安装
      • rpm包安装
      • yum安装
    • yum三板斧
      • yum list
      • yum install
      • yum remove
    • yum生态
    • yum源


Linux的软件安装方式

源代码安装

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序

源代码安装是最初的安装方式,在安装一个程序的过程中,我们要经历以下过程:

  1. 找到所需的源代码
  2. 挑选自己合适的版本
  3. 自己对代码编译运行(如果代码兼容性差,还要自己改)

可见该方法安装一个软件包代价有的多高,因此现在几乎不使用这种方法安装。


rpm包安装

把一些常用的软件提前编译好, 做成软件包放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装

这种的rpm包,就是已经把代码编译好了,我们可以直接下载下来然后进行安装。但是这也会遇到问题,比如这个编译好的rpm包运行时可能需要其它的库,比如C语言库,C++库等,如果你的Linux上面没有这种库,那就要额外地下载。或者有软件之间的依赖关系,一个软件想要运行,必须同时有其他的软件。


yum安装

与之前两种安装方式不同的是,yum的安装是全自动化的,完全不需要你操心任何一个过程,其可以自动判断一个软件要去哪个地方下载,自动下载好配套软件。因此yum是当前主流的软件安装方式。

接下来我先讲解yum的基础指令,然后再深入yum相关的生态体系。


yum三板斧

yum list

如果我们直接使用yum list,会列出所有可以下载的软件,这会导致大量刷屏。一般而言,我们会有目的的下载某一个软件,比如我现在要下载一个叫做lrzsz的软件。我们要用grep进行筛选,选出带有lrzsz字段的软件。

在此我输入yum list | grep lrzsz

在这里插入图片描述

我们就搜到了自己想要的软件,x86_64表示该软件在64位计算机中运行。 0.12.20-36.el7是版本号,el表示CentOSel7就表示CentOS7base表示软件的提供方。

一般而言,软件的提供方有两种,baseepel

  • base:基本软件源,这里面的软件都是经过筛选,比较稳定的软件
  • epel:扩展软件源,一般都是新软件,这些软件刚发布需要经过一定时间的测试,来发现一些问题,当epel内部的软件经过一定时间后变得稳定了,而且比较好用,就会进入base

yum install

当我们找到一个软件,就可以进行下载了。语法为yum install xxx,也就是下载xxx软件。

我这里下载lrzsz,执行yum install lrzsz

在这里插入图片描述

其没有直接给我们下载,而是向我们展示了这个软件的相关信息,比如版本,名称,软件也,大小等等,然后向我们确认是否安装此软件。

如果你不希望它询问,那么就输入-y选项,这样就会直接下载了,yum install -y lrzsz

在这里插入图片描述

最后显示complete!就说明下载成功了


yum remove

如果你想删掉一个软件,那就执行yum remove xxx命令。

比如我要删掉lrzsz,执行yum remove lrzsz

在这里插入图片描述

同样的,会向你展示该软件的信息,然后向你确认是否删除。如果不希望它询问,直接删除,加上-y选项即可。


yum生态

在使用yum时,你可以从别人的服务器上下载各种软件,那么你有没有想过,这些服务是谁提供的?为什么你可以免费的使用别人的服务?

一个系统用的人越多,其社区的活跃度就越高,存在的问题就越容易暴露出来。而因为人多,问题暴露出来就会有更多的人去解决问题。同样的,人多的操作系统软件就更加全面,专业人士也更多。相应的,当一个操作系统的人越来越多,那么也就会吸引越来越多的人,公司,组织去使用这一款操作系统。

而为了吸引不同的人去使用一款操作系统,很多操作系统都有自己的特点。比如说当前Linux的版本就有Ubuntu,CentOS,Debian等等,它们的Linux内核几乎没有差别,区分开它们的是社区。比如说Ubuntu大部分被学生使用,CentOS大部分被公司以及开发者使用。那么Ubuntu社区中的人们,就会更加广泛的提出以及解决学习方面的问题,而CentOS社区更注重实际开发方面的问题。久而久之各个版本的操作系统之间社区就建立了起来,一个用户选择操作系统时,就会去了解这个社区,比如这个人对网络安全感兴趣,对实际开发感兴趣,那么他就会选择不同的系统。

一个社区的既得利益者,比如公司,组织,学生,开发者。他们都不希望自己的社区倒下,公司为了让自己的系统更加稳定,开发者为了自己写的代码可以被看到,学生为了自己的问题可以及时被解决。于是他们就会想办法来维护社区,让社区越来越好,这样自己也就能从中获取更多的利益。

那么回到最初的问题,我们的yum要去别人的服务器中下载软件,服务器谁提供的?这有很多种形式,比如开源组织自己购置的,公司为了维护社区提供的,等等。总而言之就是为了让社区存活下去,既得利益者会提供这样的服务。那么开源组织明明开源,那就应该不收费啊,为什么还有钱来购置服务器?对,我们使用Linux这样的系统是不收钱的,从中下载软件也不要钱,开源组织不从我们手上收钱。很多使用Linux的公司,它们希望Linux可以发展的越来越好,那么他们就会向开源组织捐赠。开源组织不对他们提供的服务收费,但是他们可以接收捐赠,因此开源组织是有钱的,甚至是盈利的。

服务器的来源知道了,那么软件又是谁提供的呢?Linux社区这么多人,自然就有人愿意出来提供开源服务,把自己写的软件进行开源。另外的,Linux有多个版本,多个社区。如果有一天Ubuntu推出了一个很好用的软件,CentOS社区的用户看到了,发现CentOS没有这样的软件。于是CentOS社区的人直接把Ubuntu的该软件的代码拷贝过来,改改就变成了可以在CentOS下运行的软件,然后发行到CentOS上。反正都是开源项目,我们社区直接抄你们社区的代码也是合法合规的。因此很多软件只要一个Linux版本下出现了,其他版本也很快就会有对应的软件。再比如现在很多开源网站,知名的清华源等,它们也是直接拷贝一些国外的开源代码,方便国内的用户使用,反正都是开源的,我就算把所有的资料都拷贝走,也是合法合规的。


yum源

那么yum是如何知道要去哪里下载软件的呢?

我们可以找到/etc/yum.repos.d/下面的文件:

在这里插入图片描述
repos表示仓库,d表示目录,在改目录下,会存储大量的网址,yum会到对应的网址内部查找软件,并且筛选合适的版本自动下载到你Linux主机上。

比如这是CentOS-Base.repo内部:

在这里插入图片描述

可以看到内部有很多的连接,Linux就是到这些连接内部下载软件的。

这些称为yum源,在此常用的软件源有阿里云网易清华源等等,在此我为大家示范一个yum源的更新。环境为CentOS,使用的yum源是阿里云,这里需要root权限。

首先跳转到yum源所处目录下:cd /etc/yum.repos.d/

在这里插入图片描述

先把我们当前的CentOS-Base.repo进行备份,备份为CentOS-Base.repo.backup,以免后续还需要进行恢复。

cp CentOS-Base.repo CentOS-Base.repo.backup

然后从阿里云下载新的yum源:

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

在这里插入图片描述

此时我们目录下的CentOS-Base.repo文件就已经被更新了。

更新yum源后,需要清除yum缓存,以便系统能够识别新的yum源文件。可以使用以下命令清除yum缓存:

yum clean all

清除yum缓存后,需要更新yum缓存,以便系统能够识别新的yum源文件中的软件包信息。可以使用以下命令更新yum缓存:

yum makecache

更新yum源后,可以使用以下命令测试新的yum源是否可以正常工作:

yum list

如果没有出现错误,并且软件包列表与预期一致,则表示新的yum源已经更新成功。

更新yum源是维护CentOS系统安全和稳定性的重要步骤。在更新yum源之前,应该备份当前的yum源,以防止出现问题。同时,应该从可靠的站点下载新的yum源文件,并清除和更新yum缓存,以保证系统能够正常使用更新的yum源文件。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+Flask+django企业仓库进销存管理信息系统35wiz

Flask提供了更大的灵活性和简单性,适合小型项目和微服务。Django则提供了更多的内置功能,适合大型项目。Flask让开发者更多的控制其组件,而Django则遵循开箱即用的原则 本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&am…

五大背景图光线手法,附大量案例,可下载原图。

2023-10-01 23:05贝格前端工场 在背景图设计中,使用光线效果可以帮助营造科技感。以下是一些使用光线来表现科技感的设计技巧: 线性光源:使用线性光源可以在背景图中创建出明亮的光线效果。可以在设计中添加一条或多条线性光源,然…

Docker Nginx 部署Vue项目

先弄个ngix镜像,还原到linux里面 发布包放的位置 nginx配置文件 server {listen 8049;server_name localhost;#charset koi8-r;access_log /var/log/nginx/host.access.log main;error_log /var/log/nginx/error.log error;location / {# root 根目录&a…

全速前进:2024年MAD(机器学习,人工智能和数据)前景(20000字长文)

THE 2024 MAD (MACHINE LEARNING, ARTIFICIAL INTELLIGENCE & DATA) LANDSCAPE 是FirstMark对数据、分析、机器学习和人工智能生态系统的第十次年度展望和「现状」描述 。 在这个领域的10多年里,事情从来没有像今天这样令人兴奋和充满希望。我们多年来描述的所…

[STM32+HAL]DengFOC移植之闭环位置控制

一、源码来源 DengFOC官方文档 二、HAL库配置 1、开启硬件IIC低速模式 低速更稳定 2、PWM波开启 三、keil填写代码 1、AS5600读取编码器数值 #include "AS5600.h" #include "math.h"float angle_prev0; int full_rotations0; // full rotation trac…

Day37|贪心算法part06:738.单调递增的数字、968. 监控二叉树、贪心总结

738. 单调递增的数字 总体思想就是从后往前遍历,比较第i位和第i1位的大小,不符合顺序char[i]减1,i1位填9,找到需要填9的最先位置,然后填9。 class Solution {public int monotoneIncreasingDigits(int n) {String s …

负荷预测 | Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab…

领域驱动设计(DDD)学习心得

领域驱动设计(DDD) 领域驱动设计是一种用于复杂软件系统的软件开发方法论。它强调与软件所服务的业务领域的专家紧密合作,通过深入理解业务领域的复杂性,来构建能够反映业务逻辑的领域模型。DDD的核心思想包括以下几点&#xff1…

你会写SAP技术规格说明书(Specification)吗

有些小伙伴可能还在发愁技术规则说明书应该写什么,做了张思维导图,包含了所有RICEFW。 R - Report - 报表 I - Interface - 接口 C - Conversion - 数据转换 E - Enhancement - 增强 F - Form - 表单 W - Workflow - 工作流

深度学习基础之一:机器学习

文章目录 深度学习基本概念(Basic concepts of deep learning)机器学习典型任务机器学习分类 模型训练的基本概念基本名词机器学习任务流程模型训练详细流程正、反向传播学习率Batch size激活函数激活函数 sigmoid激活函数 softmax & tanh(双曲正切)激活函数 ReLU激活函数 …

深耕国际舞台丨拓数派受邀参与美国 Postgres Conference 2024

在北美地区备受瞩目 Postgres Conference 2024 大会将于4月17日在美国 San Jose 希尔顿举行。拓数派作为立足中国的高科技创新企业,也同时致力于国际开源技术和生态的深耕。本次美国 Postgres Conference 2024 大会中,拓数派将作为黄金赞助商&#xff0c…

Qt | 信号与槽 原理、连接、断开(面试无忧)

1、信号和槽是用于对象之间的通信的,这是 Qt 的核心。为此 Qt 引入了一些关键字,他们是slots、signals、emit,这些都不是 C++关键字,是 Qt 特有的,这些关键字会被 Qt 的 moc转换为标准的 C++语句。 2、Qt 的部件类中有一些已经定义好了的信号和槽,通常的作法是子类化部件…

Vue 工程化开发入门

目录 1. 工程化开发 1.1. 工程化开发模式介绍 1.2. 工程化开发模式下出现的问题: 1.3. 工程化开发模式下出现的问题的解决方法 2. 脚手架Vue CLI 2.1. 脚手架Vue CLI 基本介绍 2.2. 脚手架Vue CLI 的好处 2.3. 脚手架Vue CLI 的使用步骤 2.4. 脚手架目录文…

从大量数据到大数据,King’s SDMS仪器数据采集及科学数据管理系统的应用

对于实验室或检测机构,仪器设备是所有业务开展的基础,数据则是核心命脉,而传统的仪器设备原始数据收集方式,效率低耗时长、操作流程不规范、不易保存与查找、错误率高、易篡改等成了制约检测机构持续高速发展的瓶颈和弊端&#xf…

在线课程平台LearnDash评测 – 最佳 WordPress LMS插件

在我的LearnDash评测中,我探索了流行的 WordPress LMS 插件,该插件以其用户友好的拖放课程构建器而闻名。我深入研究了各种功能,包括课程创建、测验、作业、滴灌内容、焦点模式、报告、分析和管理工具。 我的评测还讨论了套餐和定价选项&…

初学网络编程

网络编程是指编写能够在网络环境中运行,进行数据通信的程序的过程。它涵盖了从建立网络连接、发送和接收数据,到关闭连接等一系列操作。网络编程是开发网络应用程序的基础,它使得不同的计算机和设备能够通过网络进行数据交换和通信。 三个核…

Imagination APXM-6200 CPU:性能卓越,安全可信

随着消费类和工业应用行业的不断发展,对创新性能和效率的需求永不停歇,我们自豪地推出旗下 Catapult CPU 系列的第二款产品:Imagination APXM-6200 CPU 。这款 64 位的高效 RISC-V 应用处理器具有强大的 AI 功能及性能密度,能够为…

前端处理model.addtribute传来的值

比如开始时间和结束时间&#xff0c;后端传来的样式为 model.addAttribute("startDate", startDate); model.addAttribute("endDate", endDate); 前端接收为 [[${startDate}]]-[[${endDate}]] 如果前端为地图类型的echarts <script>var sitepvs …

B站大数据平台元数据业务分享

背景介绍 元数据是数据平台的衍生数据&#xff0c;比如调度任务信息&#xff0c;离线hive表&#xff0c;实时topic&#xff0c;字段信息&#xff0c;存储信息&#xff0c;质量信息&#xff0c;热度信息等。在数据平台建设初期&#xff0c;这类数据主要散落于各种平台子系统的数…

Android - 安卓概述

什么是安卓? Android 是一种基于 Linux 的开源操作系统&#xff0c;适用于智能手机和平板电脑等移动设备。 Android 是由 Google 和其他公司领导的 Open Handset Alliance 开发的。 Android 为移动设备的应用程序开发提供了统一的方法&#xff0c;这意味着开发人员只需为 And…