Linux:生态与软件安装
文章目录
- 前言
- 一、Linux下安装软件的方案
- 二、包管理器是什么?
- 三、生态问题相关的理解
- 1. 什么操作系统是好的操作系统?
- 2. 什么是生态?
- 3. 软件包是谁写的?这些工程师为什么要写?钱的问题怎么解决?
- 四、我的服务器怎么知道去哪里找软件包?
- 1. Linux下提供了对应的配置文件
- 2. 镜像源
- 3. 镜像源更新
- 五、软件包依赖问题
- 六、软件的安装
- 1. yum三板斧
- 2. 好玩的软件
- 总结
前言
今天来讲Linux生态与软件安装方面的知识~🫡🫡🫡
一、Linux下安装软件的方案
Linux下安装一款软件有哪些方法呢?
- 源代码安装
自己写对应的源代码,等等,安装到Linux服务器下。
- rpm包安装
RPM(Red Hat Package Manager)安装方式一般适用于安装单个软件包,而不会自动解决依赖问题。如果软件包依赖其他库或软件,手动下载并安装所有依赖包是必要的。相比之下,包管理器(如 yum 和 apt)则能自动解决依赖问题,并下载、安装所需的依赖项,这使得管理软件更为便捷。
- 包管理器安装——yum/apt
通过包管理器安装,例如 yum(CentOS/Red Hat)或 apt(Ubuntu/Debian)。这些工具自动处理依赖关系,例如 yum install package 或 apt install package。
二、包管理器是什么?
包管理器是一种用于管理软件包的工具,能够简化软件的安装、更新、卸载等操作。包管理器可以自动处理依赖关系,确保所需的所有依赖项都能一并安装,避免软件冲突或缺失。包管理器通常连接到软件仓库,从网络中下载软件包。
用通俗易懂的话来说:包管理器就像软件商店,他把我们要的东西都打包好了。
三、生态问题相关的理解
1. 什么操作系统是好的操作系统?
答:生态好!!!
2. 什么是生态?
操作系统的生态是指围绕某个操作系统所形成的软件、工具、开发者和用户社区。不同的 Linux 操作系统如 CentOS、Ubuntu 以及编辑工具 Kile 都有各自独特的生态系统,吸引了不同的用户群体。
-
CentOS
- 生态:CentOS 是一个面向企业的开源 Linux 操作系统,与 Red Hat Enterprise Linux (RHEL) 兼容。CentOS 提供稳定、可靠的环境,更新周期较长。
- 选择人群:企业用户、服务器管理员以及需要高稳定性和长期支持的用户,适合生产环境中的服务器部署和企业级应用。
-
Ubuntu
- 生态:Ubuntu 基于 Debian,拥有庞大的社区支持和丰富的软件库。它更新频繁,用户界面友好,是桌面端的热门 Linux 发行版。
- 选择人群:个人用户、开发者以及 Linux 初学者。因其使用便捷和社区支持广泛,适合日常办公、开发和学习 Linux。
-
Kile
- 生态:Kile 是基于 KDE 桌面环境的 LaTeX 编辑器,专为 Linux 系统设计,提供了丰富的 LaTeX 文档编辑和排版功能。
- 选择人群:科研人员、学生和学术工作者。Kile 为需要高质量文档排版的用户提供了强大的编辑工具,在 Ubuntu 等 Linux 发行版中使用广泛。
生态都是对于用户群体来说的,因为有不同的人,才有不同的生态:
3. 软件包是谁写的?这些工程师为什么要写?钱的问题怎么解决?
开发的人操作系统的人,以及其他工程师。前者为了维护自己操作系统的生态,后者公司产生关联给钱。
软件包通常由开发者或团队创建,这些开发者可以是独立的个人、开源社区、非营利组织,或商业公司。开发这些软件包的原因和资金来源因项目性质和组织结构而异,通常涉及以下几种情况:
-
开源社区开发者
- 动机:许多开源软件包是由志愿开发者或非营利组织创建的,他们的动机可能是兴趣、技术挑战、为社区做贡献,或者是在特定领域中遇到问题并开发解决方案。开源开发者通常乐于分享代码,并希望其他人能够改进或扩展软件。
- 资金来源:这些项目大多依赖捐赠、基金会资助(如 Linux 基金会、Mozilla 基金会等),以及公司赞助。公司可能会出资以促进项目的发展,因为这些软件往往有助于他们的业务,比如提升服务器性能或提供开发工具。
-
商业公司开发
- 动机:许多公司开发和发布软件包是为了支持其业务模式或提升其在某个领域的影响力。例如,Ubuntu 背后的 Canonical 公司免费提供 Ubuntu,但提供企业级支持服务和定制开发,从而盈利。通过软件包,公司不仅能丰富 Linux 生态,还能巩固其市场地位。
- 资金来源:公司通常通过直接销售、订阅服务或定制解决方案来获取收入,从而支持软件包的开发和维护。此外,他们可能通过培训、认证课程等衍生服务获得收益。
-
操作系统维护者
- 动机:操作系统的开发者(如 Red Hat、Canonical)会积极维护自己的生态系统,通过提供丰富的软件包来吸引更多用户,并确保操作系统的完整性和兼容性。他们开发和维护包管理工具(如 apt、yum)并提供软件仓库,以便用户轻松安装软件。
- 资金来源:这些公司通常通过提供企业支持、咨询服务、专业认证和托管服务等手段来获取收益。比如,Red Hat 通过支持和服务订阅盈利,而 CentOS 则是其社区版,以免费支持生态的用户基础。
-
独立工程师或爱好者
- 动机:一些工程师出于兴趣、学习、职业发展等原因,开发和发布软件包。他们可能在开源社区分享项目,并在项目成熟后获得用户支持。独立开发者有时也借助开源项目积累声誉,从而获得工作机会或业务合作。
- 资金来源:资金支持可能来自众筹(如 Patreon、GitHub Sponsors)、社区捐赠,或通过发布专业版收费版本获得收益。
四、我的服务器怎么知道去哪里找软件包?
1. Linux下提供了对应的配置文件
Linux 系统会在特定的配置文件中指定软件包源的位置,例如 /etc/apt/sources.list(在 Ubuntu/Debian 中)或 /etc/yum.repos.d/(在 CentOS/Red Hat 中)。这些文件包含了软件仓库的 URL 地址,系统根据这些地址下载和更新软件包。
2. 镜像源
国内因为一些众所周知的原因,我们知道存在国外的软件我们不能直接下载,但是呢,国内的一些工程师就会想办法搞出来一个镜像源。
在国内,由于访问国外服务器的限制,直接从国外下载软件可能会有困难。因此,国内的一些公司和开发者建立了镜像源,将国外的软件仓库同步到国内服务器上。这些镜像源大大加速了国内用户下载和更新软件包的速度。例如,清华大学、中科大等机构提供了 Ubuntu 和 CentOS 的镜像源,方便国内用户的快速访问。
3. 镜像源更新
镜像源是对官方软件仓库的副本,定期同步官方仓库以保证最新的软件版本和安全更新。国内镜像源通过自动更新脚本定期检查并同步官方仓库的内容,从而提供快速、稳定的下载服务。
更换镜像源
-
Ubuntu/Debian 系列:
- 打开并编辑
/etc/apt/sources.list
文件:sudo nano /etc/apt/sources.list
- 将默认源地址替换为国内镜像源地址,然后保存并关闭文件。
- 更新镜像列表:
sudo apt update
- 打开并编辑
-
CentOS/Red Hat 系列:
- 在
/etc/yum.repos.d/
目录下,有不同的.repo
文件,每个文件对应不同的仓库源。 - 编辑对应的
.repo
文件,将原有 URL 替换为国内镜像源的地址。 - 更新仓库列表:
sudo yum makecache
- 在
国内常用镜像源网址
- 清华大学 TUNA 镜像源
- 网址:https://mirrors.tuna.tsinghua.edu.cn
- 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等
- Ubuntu 源配置示例:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
- 中国科学技术大学(USTC)镜像源
- 网址:https://mirrors.ustc.edu.cn
- 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux、Gentoo 等
- CentOS 源配置示例:
[base] name=CentOS-$releasever - Base - USTC baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/os/$basearch/
-
阿里云镜像源
- 网址:https://developer.aliyun.com/mirror
- 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等
- Ubuntu 源配置示例:
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
-
腾讯云镜像源
- 网址:https://mirrors.cloud.tencent.com
- 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等
- Debian 源配置示例:
deb https://mirrors.cloud.tencent.com/debian/ buster main contrib non-free deb https://mirrors.cloud.tencent.com/debian/ buster-updates main contrib non-free
五、软件包依赖问题
软件包依赖问题是指在安装或更新一个软件包时,系统发现该包需要其他未安装的包才能正常运行。这个问题在 Linux 系统中很常见,因为许多软件包之间存在依赖关系。
依赖问题的主要类型
- 直接依赖:软件 A 需要软件 B 才能运行。例如,一个视频播放器需要特定的解码器才能播放视频文件。
- 递归依赖:软件 A 依赖软件 B,软件 B 又依赖软件 C,这样形成链条式的依赖。
- 版本冲突:软件 A 依赖软件 B 的特定版本,但该版本可能与系统中已安装的其他软件包不兼容。
- 循环依赖:两个或多个软件包相互依赖,形成死循环。例如,软件 A 依赖 B,B 又依赖 A。
解决依赖问题的工具
现代包管理工具(如 apt、yum 和 dnf)会自动解决大多数依赖问题,自动下载并安装所需的依赖包。然而,某些情况下可能需要手动干预,例如指定版本或安装额外的库文件来解决冲突。
依赖问题在一定程度上促进了容器技术(如 Docker)的发展,通过隔离和打包依赖,减少了不同环境下的依赖冲突。
六、软件的安装
Linux下的软件,以root身份安装了,其他都可以以other的身份运行!
1. yum三板斧
- 查看有什么软件:
sudo yum list | grep XXX
-
安装软件:
sudo yum install -y <package_name>
这条命令会下载并安装指定的软件包及其所有依赖。
-
更新软件:
sudo yum update <package_name>
用于更新系统中已安装的软件包。如果不指定包名,使用
sudo yum update
会更新所有可更新的软件包。 -
删除软件:
sudo yum remove -y <package_name>
这条命令会卸载指定的软件包及其依赖。
2. 好玩的软件
分享一下优秀的有趣小软件:
~~戳我🤩🤩🤩
sl->小火车
cowsay->小样🐏
总结
操作系统生态包括开发者、应用程序、用户和维护机构,通过相互依赖形成一个健康的软件环境,确保系统的稳定性和安全性。Yum 包管理器作为基于 RPM 的工具,简化了软件的安装和更新,自动处理依赖关系,并通过命令行界面方便用户管理软件源,从而促进了 Linux 系统的有效管理和应用。
到这里就结束啦!创作不易,感谢大家的支持🥰🥰🥰
相关文章:

Linux:生态与软件安装
文章目录 前言一、Linux下安装软件的方案二、包管理器是什么?三、生态问题相关的理解1. 什么操作系统是好的操作系统?2. 什么是生态?3. 软件包是谁写的?这些工程师为什么要写?钱的问题怎么解决? 四、我的服务器怎么知…...

R 语言与其他编程语言的区别
R 语言与其他编程语言的区别 R 语言作为一种专门用于统计计算和图形的编程语言,与其他编程语言相比有一些独特的特点和区别。本文将详细介绍这些区别,帮助你更好地理解 R 语言的优势和适用场景。 1. 专为统计和数据分析设计 统计功能 内置统计函数&…...

RC低通滤波器Bode图分析(传递函数零极点)
RC低通滤波器 我们使得R1K,C1uF;电容C的阻抗为Xc; 传递函数 H ( s ) u o u i X C X C R 1 s C 1 s C R 1 1 s R C (其中 s j ω ) H(s)\frac{u_{o} }{u_{i} } \frac{X_{C} }{X_{C}R} \frac{\frac{1}{sC} }{\…...

基于深度学习的网络入侵检测
基于深度学习的网络入侵检测是一种利用深度学习技术对网络流量进行实时监测与分析的方法,旨在识别并防范网络攻击和恶意活动。随着网络环境日益复杂,传统的入侵检测系统(IDS)在面对不断变化的攻击模式时,往往难以保持高…...

《构建一个具备从后端数据库获取数据并再前端显示的内容页面:前后端实现解析》
一、前端页面:布局与功能 1. 页面结构 我们先来看前端页面的 HTML 结构,它主要由以下几个部分组成: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewp…...

Rust 力扣 - 59. 螺旋矩阵 II
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 使用一个全局变量current记录当前遍历到的元素的值 我们只需要一圈一圈的从外向内遍历矩阵,每一圈遍历顺序为上边、右边、下边、左边,每遍历完一个元素后current 我们需要注意的是如果上…...

2.4w字 —TS入门教程
目录 1. 什么是TS 2. TS基本使用 3 TS基础语法 3.1 基础类型约束 3.11 string,number,boolean, null和undefined 3.12 any 3.13 unknown 3.14 void 3.15 数组 3.16 对象 3.2 函数的约束 3.21 普通写法 3.22 函数表达式 3.22 可选…...

java: 未结束的字符文字 报错及解决:将编码全部改为UTF-8或者GBK
报错: 解决: 将编码都改成UTF-8或者GBK:...

Android平台RTSP转RTMP推送之采集麦克风音频转发
技术背景 RTSP转RTMP推送,好多开发者第一想到的是采用ffmpeg命令行的形式,如果对ffmpeg比较熟,而且产品不要额外的定制和更高阶的要求,未尝不可,如果对产品稳定性、时延、断网重连等有更高的技术诉求,比较…...

认证鉴权框架之—sa-token
一、概述 Satoken 是一个 Java 实现的权限认证框架,它主要用于 Web 应用程序的权限控制。Satoken 提供了丰富的功能来简化权限管理的过程,使得开发者可以更加专注于业务逻辑的开发。 二、逻辑流程 1、登录认证 (1)、创建token …...

Spring源码(十一):Spring MVC之DispatchServlet
本篇重点在于分析Spring MVC与Servlet标准的整合,下节将详细讨论Spring MVC的启动/加载流程、处理请求的具体流程。 一、介绍 Spring框架提供了构建Web应用程序的全功能MVC模块。通过策略接口 ,Spring框架是高度可配置的,而且支持多种视图技…...

gitbash简单操作
https://blog.csdn.net/qq_42363495/article/details/104878170 工作区(空间)--暂存区--本地仓库--远程仓库 方法一:创建一个新的分支master,且远程库里没有该分支 只要将.gitignore文件放在文件夹下就可以,.gitignore是文本文档形式的文件…...

pnpm install安装element-plus的版本跟package.json指定的版本不一样
pnpm安装的版本不同于package.json中指定的版本可能是由于以下几种情况导致的: 依赖项冲突:当项目依赖的不同模块或库之间存在版本冲突时,pnpm可能会安装与package.json中指定的版本不同的版本。这可能是因为其他依赖项指定了不同的版本&…...

Java线程池的核心内容详解
文章内容已经收录在《面试进阶之路》,从原理出发,直击面试难点,实现更高维度的降维打击! 目录 文章目录 目录Java线程池的核心内容详解线程池的优势什么场景下要用到线程池呢?线程池中重要的参数【掌握】新加入一个任…...

学习笔记——三小时玩转JQuery
也可以使用在线版,不过在线版需要有网络,网不好的情况下加载也不好 取值的时候也是只会取到有样式的纯文本,不会取到标签,会取到标签效果 prepend和append这两个方法用的比较多,before和affter用的比较少 想要把代码写…...

word试题转excel(最简单的办法,无格式要求)
分享早下班的终极秘诀~ 今天本来是个愉快的周五,心里想着周末的聚会和各种安排,然而突然一个加急任务砸了过来——要求在下周一提交一份精细整理的Excel表格! 打开Word文件一看,成堆的试题内容需要整理到Excel里。看着满屏的题目…...

基于web的中小学成绩管理系统的设计与实现
目录 第一章 研究背景与意义 1.1 研究背景 1.2 研究意义 1.3 研究目的 第二章 关于系统的设计 2.1系统总体架构设计 2.2功能模块设计 2.3数据存储与管理 第三章 系统功能介绍 3.1成绩录入及发布 3.2班级管理和学生管理 3.3成绩分析结果展示 3.4用户反馈与改进 …...

Conmi的正确答案——在Kibana中进入Elasticsearch的索引管理页面
Elasticsearch版本:7.17.25 Kibana版本:7.17.25 注:索引即类似mysql的表。 0、进入首页 1、未创建任何“索引模式”时: 1.1、点击左边的三横菜单; 1.2、点击“Discover”,进入“发现”页面; 2…...

【JavaEE】【多线程】进阶知识
目录 一、常见的锁策略1.1 悲观锁 vs 乐观锁1.2 重量级锁 vs 轻量级锁1.3 挂起等待锁 vs 自旋锁1.4 普通互斥锁 vs 读写锁1.5 可重入锁 vs 不可重入锁1.6 不公平锁 vs 公平锁 二、synchronized特性2.1 synchronized的锁策略2.2 synchronized加锁过程2.3 其它优化措施 三、CAS3.…...

LeetCode100之三数之和(15)--Java
1.问题描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意 答案中不可以包含重复的三元组 示例1 输入&…...

并发编程三大特性--可见性和有序性
可见性: 什么是可见性: 可见性是指在数据在收到一个线程的修改时,其他的线程也可以得知并获取修改后的值的属性。这是并发编程的三大特性之一。 为了提高cpu的利用率,cpu在获取数据时,不是直接在主内存读取数据&…...

Android 使用ninja加速编译的方法
ninja的简介 随着Android版本的更迭,makefile体系逐渐增多,导致make单编模块的时间越来越长,每次都需要半个小时甚至更长时间,其原因为每次make都会重新加载所有mk文件,再生成ninja编译,此完整过程十分耗时…...

《Java 实现选择排序:原理剖析与代码详解》
目录 一、引言 二、选择排序原理 三、代码分析 1. 代码整体结构 2. main方法 3. sort方法(选择排序核心逻辑) 四、测试结果 一、引言 排序算法在计算机科学领域中是非常重要的一部分,它能够帮助我们将无序的数据按照特定的顺序进行排列…...

数据结构之双链表——考研笔记
文章目录 一.单链表VS双链表二.创建双链表(带头结点)三.双链表的插入四.双链表删除五.销毁双链表六.双链表遍历七. 循环链表八.静态链表1.用代码定义一个静态链表 一.单链表VS双链表 单链表中只包含指向它后继结点的指针,所以给定一个结点p找…...

Django视图写法
1.View:Django默认的视图基类,Django的HttpRequeset对象 2.APIView:REST-framework提供的所有视图的基类,继承自Django的View REST framework的Request对象 Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。 serializer Book…...

单臂路由实现不同VLAN之间设备通信
转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…...

Linux·进程控制(system V)
1. 共享内存 system V共享内存是最快的IPC形式,之前的管道是基于Linux内核开发的通讯方案,其读写接口都是现成的,因此内核设计者为了完成进程间通讯任务并不需要新增太多代码。而共享内存属于system V标准,是操作系统单独…...

华为云Stack名词解释
1、MRS MapReduce服务(MRS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的数据处理分析服务。 2、VBS 云硬盘备份服务(VBS,Volume Backup Service)可为云硬盘(EVS,Elastic…...

YoloV9改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码
论文介绍 CARAFE模块概述:本文介绍了一种名为CARAFE(Content-Aware ReAssembly of FEatures)的模块,它是一种用于特征上采样的新方法。应用场景:CARAFE模块旨在改进图像处理和计算机视觉任务中的上采样过程࿰…...

【C++】多态的语法与底层原理
1.多态的概念 1.1 概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。 举个例子:在现实当中,我们去火车站买票,一般都分三种情况&…...