Linux:生态与软件安装

文章目录


前言

今天来讲Linux生态与软件安装方面的知识~🫡🫡🫡


一、Linux下安装软件的方案

Linux下安装一款软件有哪些方法呢?

  1. 源代码安装

自己写对应的源代码,等等,安装到Linux服务器下。

  1. rpm包安装

RPM(Red Hat Package Manager)安装方式一般适用于安装单个软件包,而不会自动解决依赖问题。如果软件包依赖其他库或软件,手动下载并安装所有依赖包是必要的。相比之下,包管理器(如 yum 和 apt)则能自动解决依赖问题,并下载、安装所需的依赖项,这使得管理软件更为便捷。

  1. 包管理器安装------yum/apt

通过包管理器安装,例如 yum(CentOS/Red Hat)或 apt(Ubuntu/Debian)。这些工具自动处理依赖关系,例如 yum install package 或 apt install package。


二、包管理器是什么?

包管理器是一种用于管理软件包的工具,能够简化软件的安装、更新、卸载等操作。包管理器可以自动处理依赖关系,确保所需的所有依赖项都能一并安装,避免软件冲突或缺失。包管理器通常连接到软件仓库,从网络中下载软件包。

用通俗易懂的话来说:包管理器就像软件商店,他把我们要的东西都打包好了。



三、生态问题相关的理解

1. 什么操作系统是好的操作系统?

答:生态好!!!


2. 什么是生态?

操作系统的生态是指围绕某个操作系统所形成的软件、工具、开发者和用户社区。不同的 Linux 操作系统如 CentOS、Ubuntu 以及编辑工具 Kile 都有各自独特的生态系统,吸引了不同的用户群体。

  1. CentOS

    • 生态:CentOS 是一个面向企业的开源 Linux 操作系统,与 Red Hat Enterprise Linux (RHEL) 兼容。CentOS 提供稳定、可靠的环境,更新周期较长。
    • 选择人群:企业用户、服务器管理员以及需要高稳定性和长期支持的用户,适合生产环境中的服务器部署和企业级应用。
  2. Ubuntu

    • 生态:Ubuntu 基于 Debian,拥有庞大的社区支持和丰富的软件库。它更新频繁,用户界面友好,是桌面端的热门 Linux 发行版。
    • 选择人群:个人用户、开发者以及 Linux 初学者。因其使用便捷和社区支持广泛,适合日常办公、开发和学习 Linux。
  3. Kile

    • 生态:Kile 是基于 KDE 桌面环境的 LaTeX 编辑器,专为 Linux 系统设计,提供了丰富的 LaTeX 文档编辑和排版功能。
    • 选择人群:科研人员、学生和学术工作者。Kile 为需要高质量文档排版的用户提供了强大的编辑工具,在 Ubuntu 等 Linux 发行版中使用广泛。

生态都是对于用户群体来说的,因为有不同的人,才有不同的生态:


3. 软件包是谁写的?这些工程师为什么要写?钱的问题怎么解决?

开发的人操作系统的人,以及其他工程师。前者为了维护自己操作系统的生态,后者公司产生关联给钱。

软件包通常由开发者或团队创建,这些开发者可以是独立的个人、开源社区、非营利组织,或商业公司。开发这些软件包的原因和资金来源因项目性质和组织结构而异,通常涉及以下几种情况:

  1. 开源社区开发者

    • 动机:许多开源软件包是由志愿开发者或非营利组织创建的,他们的动机可能是兴趣、技术挑战、为社区做贡献,或者是在特定领域中遇到问题并开发解决方案。开源开发者通常乐于分享代码,并希望其他人能够改进或扩展软件。
    • 资金来源:这些项目大多依赖捐赠、基金会资助(如 Linux 基金会、Mozilla 基金会等),以及公司赞助。公司可能会出资以促进项目的发展,因为这些软件往往有助于他们的业务,比如提升服务器性能或提供开发工具。
  2. 商业公司开发

    • 动机:许多公司开发和发布软件包是为了支持其业务模式或提升其在某个领域的影响力。例如,Ubuntu 背后的 Canonical 公司免费提供 Ubuntu,但提供企业级支持服务和定制开发,从而盈利。通过软件包,公司不仅能丰富 Linux 生态,还能巩固其市场地位。
    • 资金来源:公司通常通过直接销售、订阅服务或定制解决方案来获取收入,从而支持软件包的开发和维护。此外,他们可能通过培训、认证课程等衍生服务获得收益。
  3. 操作系统维护者

    • 动机:操作系统的开发者(如 Red Hat、Canonical)会积极维护自己的生态系统,通过提供丰富的软件包来吸引更多用户,并确保操作系统的完整性和兼容性。他们开发和维护包管理工具(如 apt、yum)并提供软件仓库,以便用户轻松安装软件。
    • 资金来源:这些公司通常通过提供企业支持、咨询服务、专业认证和托管服务等手段来获取收益。比如,Red Hat 通过支持和服务订阅盈利,而 CentOS 则是其社区版,以免费支持生态的用户基础。
  4. 独立工程师或爱好者

    • 动机:一些工程师出于兴趣、学习、职业发展等原因,开发和发布软件包。他们可能在开源社区分享项目,并在项目成熟后获得用户支持。独立开发者有时也借助开源项目积累声誉,从而获得工作机会或业务合作。
    • 资金来源:资金支持可能来自众筹(如 Patreon、GitHub Sponsors)、社区捐赠,或通过发布专业版收费版本获得收益。

四、我的服务器怎么知道去哪里找软件包?

1. Linux下提供了对应的配置文件

Linux 系统会在特定的配置文件中指定软件包源的位置,例如 /etc/apt/sources.list(在 Ubuntu/Debian 中)或 /etc/yum.repos.d/(在 CentOS/Red Hat 中)。这些文件包含了软件仓库的 URL 地址,系统根据这些地址下载和更新软件包。


2. 镜像源

国内因为一些众所周知的原因,我们知道存在国外的软件我们不能直接下载,但是呢,国内的一些工程师就会想办法搞出来一个镜像源。

在国内,由于访问国外服务器的限制,直接从国外下载软件可能会有困难。因此,国内的一些公司和开发者建立了镜像源,将国外的软件仓库同步到国内服务器上。这些镜像源大大加速了国内用户下载和更新软件包的速度。例如,清华大学、中科大等机构提供了 Ubuntu 和 CentOS 的镜像源,方便国内用户的快速访问。


3. 镜像源更新

镜像源是对官方软件仓库的副本,定期同步官方仓库以保证最新的软件版本和安全更新。国内镜像源通过自动更新脚本定期检查并同步官方仓库的内容,从而提供快速、稳定的下载服务。


更换镜像源

  1. Ubuntu/Debian 系列

    • 打开并编辑 /etc/apt/sources.list 文件:

      bash 复制代码
      sudo nano /etc/apt/sources.list
    • 将默认源地址替换为国内镜像源地址,然后保存并关闭文件。

    • 更新镜像列表:

      bash 复制代码
      sudo apt update
  2. CentOS/Red Hat 系列

    • /etc/yum.repos.d/ 目录下,有不同的 .repo 文件,每个文件对应不同的仓库源。

    • 编辑对应的 .repo 文件,将原有 URL 替换为国内镜像源的地址。

    • 更新仓库列表:

      bash 复制代码
      sudo yum makecache

国内常用镜像源网址

  1. 清华大学 TUNA 镜像源
  • 网址https://mirrors.tuna.tsinghua.edu.cn

  • 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等

  • Ubuntu 源配置示例

    plaintext 复制代码
    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
  1. 中国科学技术大学(USTC)镜像源
  • 网址https://mirrors.ustc.edu.cn

  • 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux、Gentoo 等

  • CentOS 源配置示例

    plaintext 复制代码
    [base]
    name=CentOS-$releasever - Base - USTC
    baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/os/$basearch/
  1. 阿里云镜像源

    • 网址https://developer.aliyun.com/mirror

    • 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等

    • Ubuntu 源配置示例

      plaintext 复制代码
      deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
      deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
  2. 腾讯云镜像源

    • 网址https://mirrors.cloud.tencent.com

    • 支持的系统:Ubuntu、Debian、CentOS、Fedora、Arch Linux 等

    • Debian 源配置示例

      plaintext 复制代码
      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 系统中很常见,因为许多软件包之间存在依赖关系。

依赖问题的主要类型

  1. 直接依赖:软件 A 需要软件 B 才能运行。例如,一个视频播放器需要特定的解码器才能播放视频文件。
  2. 递归依赖:软件 A 依赖软件 B,软件 B 又依赖软件 C,这样形成链条式的依赖。
  3. 版本冲突:软件 A 依赖软件 B 的特定版本,但该版本可能与系统中已安装的其他软件包不兼容。
  4. 循环依赖:两个或多个软件包相互依赖,形成死循环。例如,软件 A 依赖 B,B 又依赖 A。

解决依赖问题的工具

现代包管理工具(如 aptyumdnf)会自动解决大多数依赖问题,自动下载并安装所需的依赖包。然而,某些情况下可能需要手动干预,例如指定版本或安装额外的库文件来解决冲突。

依赖问题在一定程度上促进了容器技术(如 Docker)的发展,通过隔离和打包依赖,减少了不同环境下的依赖冲突。


六、软件的安装

Linux下的软件,以root身份安装了,其他都可以以other的身份运行!

1. yum三板斧

  • 查看有什么软件

    bash 复制代码
    sudo yum list | grep XXX
  • 安装软件

    bash 复制代码
    sudo yum install -y <package_name>

    这条命令会下载并安装指定的软件包及其所有依赖。

  • 更新软件

    bash 复制代码
    sudo yum update <package_name>

    用于更新系统中已安装的软件包。如果不指定包名,使用 sudo yum update 会更新所有可更新的软件包。

  • 删除软件

    bash 复制代码
    sudo yum remove -y <package_name>

    这条命令会卸载指定的软件包及其依赖。


2. 好玩的软件

分享一下优秀的有趣小软件:
~~戳我🤩🤩🤩

sl->小火车

cowsay->小样🐏


总结

操作系统生态包括开发者、应用程序、用户和维护机构,通过相互依赖形成一个健康的软件环境,确保系统的稳定性和安全性。Yum 包管理器作为基于 RPM 的工具,简化了软件的安装和更新,自动处理依赖关系,并通过命令行界面方便用户管理软件源,从而促进了 Linux 系统的有效管理和应用。

到这里就结束啦!创作不易,感谢大家的支持🥰🥰🥰

相关推荐
滴水之功34 分钟前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
ldinvicible1 小时前
How to run Flutter on an Embedded Device
linux
YRr YRr2 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.2 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥2 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
不想起昵称9292 小时前
Linux SHELL脚本中的变量与运算
linux
the丶only3 小时前
单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
linux·运维·服务器·docker·gitlab
枫叶红花4 小时前
【Linux系统编程】:信号(2)——信号的产生
linux·运维·服务器
_微风轻起4 小时前
linux下网络编程socket&select&epoll的底层实现原理
linux·网络