Linux:软件包管理器 - yum

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.mzph.cn/news/810879.shtml

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

相关文章

git知识

如何将develop分支合并到master分支 #简单版 git checkout master git pull origin master git merge origin/develop # 解决可能的冲突并提交 git push origin master#复杂版 git checkout master # 拉取远程 master 分支的最新代码并合并到本地 git pull origin master # 拉…

新时代·高质量·硬道理丨开放的大门越开越大、开放的水平越来越高

新时代下,中国坚定不移地实施扩大高水平对外开放战略,致力于构建更高层次、更宽领域的开放型经济体系。以下是对新时代高质量硬道理这一主题下,中国开放大门越开越大、开放水平越来越高的几个关键点分析: 全方位开放格局 政府工…

YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

计算机基础知识-第7章-程序的本质(2)——算法与数据结构概论

一、算法数据结构程序 提出这一公式并以此作为其一本专著的书名的瑞士计算机科学家尼克劳斯沃思(Niklaus Wirth)由于发明了多种影响深远的程序设计语言,并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。他是至今惟一获此殊荣的瑞…

Java——测试相关

1、测试的常用方法 单元测试:针对软件中最小可测试单元进行的测试,如类、方法等。功能测试:检查软件的各项功能是否按照需求规格书执行,通常包括正常功能、边界情况和异常情况的测试。性能测试:检查软件的速度、响应时…

【Linux杂货铺】文件系统

目录 🌈前言🌈 📁 硬盘 📂 物理结构 📂 存储结构 📂 CHS定址法 📂 操作系统对硬盘的管理和抽象 📁 文件系统 📂 分区 📂 分组 📂 inode号 分配…

1113. 红与黑--Flood Fill 算法

目录 1113. 红与黑--Flood Fill 算法---宽搜(BFS) 输入格式 输出格式 数据范围 输入样例: 输出样例: 思路: 代码: 运行结果: 1113. 红与黑--Flood Fill 算法---宽搜(BFS&am…

无人机技术在光伏电站勘探中的重要应用

随着科技的不断进步和创新,无人机技术在各个领域中都发挥着越来越重要的作用。其中,光伏电站对于无人机的应用也成为了行业内的高效运维方式之一,凭借无人机卓越的性能和可靠性,有效的减少了人力运维的危险性和延迟性,…

Java研学-RBAC权限控制(三)

四 部门管理 1 数据库表 CREATE TABLE department (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,sn varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT9 DEFAULT CHARSETutf8;2 实体类 Data public class Department {…

股票价格预测 | Python股票价格数据导入和处理

文章目录 文章概述代码设计导入处理文章概述 股票价格预测 | Python股票价格数据导入和处理 代码设计 导入 import os import numpy as np import csv import pandas as pd import matplotlib.pyplot

【NC16596】计算系数

题目 计算系数 组合数,快速幂 思路 这是一道数学题,由之前的数学知识可以知道,题目要我们算一个数: ( C k m a n b m ) m o d 10007 (C_k^ma^nb^m)\mod\ 10007 (Ckm​anbm)mod 10007 题意很明显,没有弯弯绕&#xff…

python入门(一)配置环境和选择IDE

Python,作为一种简洁易懂的编程语言,近年来在全球范围内受到了广泛的关注和追捧。它不仅语法简单明了,易于上手,而且拥有强大的第三方库和广泛的应用领域。从数据分析、机器学习到Web开发,Python都能发挥出色的性能&am…

华为OD-C卷-密码解密[100分]

题目描述 给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。 映射的规则(a ~ i)分别用(1 ~ 9)表示;(j ~ z)分别用("10*" ~ "26*")表示。 约束:映射始终唯一。 输入描述 “密文”字符串 输出描述 …

【京东、字节后端二面】讨论不同的系统性能瓶颈点:流量增加时,秒杀系统的性能瓶颈在哪里呢?

1 短网址系统 1.1 如何设计一个短网址系统。什么是这个短网址系统啊? 短网址系统是一种将长网址转换为更短、更易于分享的网址的服务。这类系统特别受欢迎,因为它们可以使复杂的URL变得简单,便于口头传播和在社交媒体上分享,同时…

Vue路由跳转及路由传参

跳转 跳转使用 router vue 的路由跳转有 3 个方法: go 、 push 、 replace go :接收数字, 0 刷新,正数前进,负数后退 push :添加,向页面栈中添加一条记录,可以后退 replace &#…

22、Lua 数据库访问

Lua 数据库访问 LuaRocks 安装方法安装不同数据库驱动Lua连接MySql 数据库 本文主要为大家介绍 Lua 数据库的操作库:LuaSQL。他是开源的,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。 本文为大家介绍MySQL的数据库连接…

4.8QT

将按钮3,基于qt4版本连接实现点击按钮3,实现关闭窗口。 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), btn3(new QPushButton(this)) {ui->s…

Excel中存在自动分页符,打印不到想要的列怎么办?

1、什么是自动分页符 在 “视图-分页预览” 中我们可以看到,一行或者一列的蓝色虚线就是自动分页符。顾名思义,存在分页符时,不能打印在同一页。自动分页符是不能删除的,但是手动分页符可以。参考在工作表中插入、移动或删除分页符…

区块链相关概念

区块链是什么,就算是做计算机技术开发的程序员,100个当中都没有几个能把这个概念理解明白,更不要说讲清楚了。那对于普通人来说,就更扯了。 除了“挖矿”表面意思似乎比较好理解外,其他的基础概念真TMD绕。 去中心化、…

2024MathorCup(妈妈杯) C题完整思路+数据集+完整代码+高质量成品论文

C题物流网络分中心货量预测及人员排班 (完整的资料数据集代码在文末) 电商物流网络在订单履约中由多个环节组成,其中,分拣中心作为网络的中 间环节,需要将包裹按照不同流向进行分拣并发往下一个场地,最终使…