006 yum和Linux生态
🦄 个人主页: 小米里的大麦-CSDN博客
🎏 所属专栏: Linux_小米里的大麦的博客-CSDN博客
🎁 GitHub主页: 小米里的大麦的 GitHub
⚙️ 操作环境: Visual Studio 2022
文章目录
- `Linux` 软件包管理器 `yum`
- 什么是软件包?
- 基于 Linux 系统(CentOS 7)中使用 `yum` 命令来安装、卸载和管理 `lrzsz` 工具的步骤和注意事项。
- 关于 `lrzsz` 工具
- 查看与筛选软件包
- 安装软件
- EPEL 仓库(需要 `sudo` 或 root 账户)
- 卸载软件
- 错误处理
- Linux 生态
- 共勉
Linux
软件包管理器 yum
在 Linux 中,安装软件的常见方式主要有三种:源代码安装、rpm
安装和 yum
安装。它们各自有优缺点,适用于不同的场景。
安装方式 | 优点 | 缺点 |
---|---|---|
源代码安装 | - 高度定制化(调整编译选项、安装路径等) | - 操作复杂,需要手动执行 ./configure , make , make install 等步骤 |
- 软件版本灵活(能获取最新版本或特定版本) | - 依赖管理困难,需手动解决依赖关系 | |
- 跨平台兼容性强(适配不同架构或操作系统) | - 编译过程时间长,消耗大量计算资源 | |
- 升级和卸载困难,缺乏统一的版本管理 | ||
rpm 安装 | - 安装速度快,使用预编译的二进制包 | - 依赖需手动解决,可能出现“依赖地狱” |
- 安装时自动检查并提示缺少的依赖项 | - 版本受限于本地或下载的 RPM 包,可能无法获取最新版本 | |
- 通过 rpm 命令可管理软件包(查询、验证、升级、卸载等) | - 默认不关联远程仓库,依赖本地或手动下载的 RPM 包 | |
yum 安装 | - 自动解决依赖关系,简化安装过程 | - 需要联网访问仓库(离线环境需配置本地镜像) |
- 支持多个远程仓库,软件版本经过测试,保证兼容性 | - 仓库中的软件版本可能滞后于上游源码版本 | |
- 简化操作,支持一键安装、更新、卸载 | ||
- 安全更新,仓库提供数字签名验证 | ||
- 版本灵活性,支持快速切换软件版本 |
总的来说:
- 源代码安装:复杂、遥远,普通用户几乎不需要使用。
rpm
安装:依赖问题复杂,对小白用户不够友好。yum
安装:自动解决依赖、操作简单、版本管理方便,是普通用户的最佳选择。
什么是软件包?
1. 软件包和软件包管理器的关系
- 软件包(Package):就像 Windows 下的安装程序一样,软件包是已经编译好的软件,通常包含了可执行程序、配置文件、依赖关系和其他必要的资源。用户只需要通过简单的命令就可以将它们安装到系统中。软件包一般是针对特定操作系统或发行版(如 CentOS、Ubuntu 等)预编译的。
- 软件包管理器(Package Manager):它就像是“应用商店”,提供一个方便的接口让用户可以搜索、安装、更新和删除软件包。包管理器可以自动处理依赖关系、下载并安装正确的软件版本,同时还能确保系统的其他软件和包的一致性。
2. yum
(Yellowdog Updater, Modified)
YUM 是一种在 Linux 下非常常用的包管理工具,它的作用类似于应用商店,让用户能够轻松地安装、更新、卸载软件包。
主要特点:
- 自动化安装和更新:只需使用简单的命令(如
yum install 软件包名
)就能自动获取并安装软件包。包管理器会自动处理依赖关系,确保安装过程的顺利进行。 - 依赖关系管理:在 Linux 中,很多软件都依赖于其他库或软件。
yum
会自动检测软件包的依赖,确保安装时不会漏掉必要的组件。 - 仓库支持:
yum
通过配置软件仓库(Repository)来获取软件包,仓库相当于存放了大量软件包的 服务器。用户无需自己编译软件,只需要指定仓库,yum
就可以从中获取到已经编译好的软件包。 - 简便的命令行界面:
yum
提供了简单的命令行接口来处理软件包的安装、更新和卸载。比如:yum install <软件包名>
:安装软件包yum update
:更新所有已安装的软件包yum remove <软件包名>
:卸载软件包yum search <软件包名>
:搜索软件包
- 安全性与稳定性:
yum
的仓库中的软件包经过了测试(相当于经过应用商店审核),保证了软件与系统的兼容性。而且,yum
会自动处理安全更新,确保系统和软件的安全。
3. 对比 Windows 安装软件
就像在 Windows 系统上,用户经常通过应用商店(例如 Microsoft Store)或者直接从第三方网站下载安装程序来安装软件一样,Linux 系统上的 yum
就是一个类似的工具。区别在于,Linux 下的软件包管理是更集成化和自动化的,依赖关系和版本更新会自动处理,而在 Windows 上,安装程序通常需要手动处理依赖或者更新。
4. yum
的优势
- 省时省力:不像从源代码编译那样需要手动下载、配置和编译。
- 确保兼容性:
yum
通过仓库(厂商或发行版维护者的 服务器)提供的软件包保证了软件和操作系统的兼容性,减少了因版本不匹配导致的问题。 - 易于管理:通过
yum
,用户可以方便地管理已安装的软件包,无论是安装新软件、更新已有软件,还是卸载不需要的软件,所有操作都可以通过简单的命令完成。
基于 Linux 系统(CentOS 7)中使用 yum
命令来安装、卸载和管理 lrzsz
工具的步骤和注意事项。
注意: 一般 Linux 操作系统,默认配置的 yum
源是国外的,有可能你的 yum
源访问会比较慢,可能需要更新 yum
源 替换 yum
源文件(这里常指使用虚拟机的), yum
服务器 一般厂商已经替换了,这就是学习时 云服务器优于虚拟机 的一个原因。
关于 lrzsz
工具
用途:lrzsz
是一组用于在 Windows 和远程 Linux 机器之间通过 XShell 传输文件的工具。 我们可以通过拖拽的方式将文件从 Windows 机器上传到远程的 Linux 服务器。
安装了 rzsz
工具后,XShell 会自动识别,并允许我们将文件从 Windows 拖动到终端中,并通过 rz
(接收文件)命令将文件上传到 Linux 系统。反过来,也可以从 Linux 下载文件到 Windows。只需在 Linux 上执行 sz
(发送文件)命令,XShell 会自动接收并将文件传输到本地的 Windows 系统。
- 在 XShell 中,执行
rz
命令(这将启动接收模式)。 - 在 XShell 中,执行
sz 文件名
命令(这将启动发送模式)。(通常是 XShell 的默认目录,可以设置特定的路径)
注意事项:确认 网络连接正常。在进行任何与 yum
相关的操作前,必须确保主机(或虚拟机)的网络正常工作。可以使用命令 ping www.baidu.com
来验证网络是否畅通。
查看与筛选软件包
-
查看可用软件包:使用
yum list
命令可以列出所有可用的软件包。由于软件包列表可能非常长,可以结合grep
命令筛选出感兴趣的软件包。例如,查找lrzsz
相关的信息,可以执行:yum list | grep lrzsz
-
理解软件包名称:软件包名称一般格式如下:
主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构
例如:lrzsz.x86_64 0.12.20-36.el7 @base # lrzsz:软件包的名称 # x86_64:表示软件包适用于64位架构的CPU # 0.12.20:软件的主要版本号,lrzsz 的版本是0.12.20 # 36:打包版本号 # el7:el:centos,7:主版本。也就是centos7 # @base:表明了软件包的来源仓库(软件仓库)。理解成厂商即可,例如华为/快手/……
安装软件
-
安装命令:通过以下命令可以安装
lrzsz
工具:sudo yum install lrzsz
执行该命令后,
yum
会自动解决依赖关系并提示需要下载哪些软件包。确认后(通常按“y”)开始安装。 -
权限要求:由于安装过程中需要向系统目录写入文件,因此需要使用
sudo
或切换到 root 账户。 -
串行安装:由于
yum
进程锁定,同一时间只能执行一个安装任务。一个yum
安装过程未完成时,尝试启动另一个yum
安装会导致错误,因此需要 按顺序进行安装。
EPEL 仓库(需要 sudo
或 root 账户)
EPEL 是由 Fedora 社区维护的一个额外的软件仓库,专门为 RHEL 和 CentOS 提供额外的软件包。默认情况下,RHEL 和 CentOS 的官方仓库只包含基本的软件包,很多流行的第三方软件包并不包括在其中。而 EPEL 仓库则包含了大量的额外软件包,这些软件包经过测试,适用于 RHEL 和 CentOS 系统。通过启用 EPEL 仓库,可以访问到很多 非官方但稳定的软件包,比如开发工具、网络工具、数据库、Web 服务器、数据分析工具等。
yum install -y epel-release
这个命令用于 CentOS、Red Hat 和其他基于 RHEL(Red Hat Enterprise Linux)的 Linux 发行版上,它的作用是安装 EPEL(Extra Packages for Enterprise Linux) 仓库的配置包。通常有需要的包安装不上和包不在默认仓库中可以使用(多存在虚拟机)。
假设想安装 htop
,这是一个用于查看系统资源使用情况的命令行工具。在 CentOS 中,htop
不在默认仓库中,但它可以在 EPEL 仓库中找到。启用 EPEL 仓库:
yum install -y epel-release
然后,可以通过 yum
安装 htop
:
yum install htop
卸载软件
卸载命令:要卸载已安装的软件包(如 lrzsz
),可以使用以下命令:
sudo yum remove lrzsz
错误处理
如果遇到 yum
相关的错误,需要根据具体的错误信息进行搜索和解决。yum
的错误原因可能有很多种,具体的解决办法可以通过错误信息来判断。
[!NOTE]
一些好玩软件:
yum install -y sl
效果(命令:
sl
):
yum install cowsay
效果(
cowsay “你是一个好人”
):
Linux 生态
1. 开源不等于免费
开源软件本身是免费提供源代码的,但这并不意味着所有相关的服务、支持和维护都是免费的。许多公司选择开源作为其商业战略的一部分,以吸引更多的用户、开发者或合作伙伴,但背后的成本往往在其他地方。
- 技术支持:开源软件往往需要专业的技术支持和定制化服务。这些服务通常是收费的。
- 培训和咨询:一些开源软件的公司可能提供培训、技术咨询、系统集成等服务,这些都需要付费。
- 维护和更新:开源项目需要持续的开发和维护。虽然代码本身是开放的,但公司通常会雇佣开发人员来维护代码、修复漏洞、添加新特性,这也是一种商业成本。
2. 吸引用户并从中盈利
很多公司选择开源是为了吸引广泛的用户基础和社区支持,积累用户基础,然后通过向大公司、企业用户提供高级功能或支持来实现盈利。但他们通常会通过提供增值服务来实现盈利。这些增值服务可能包括:
- 云服务:它们的核心技术是开源的,但公司通过提供托管服务(例如容器编排平台)来盈利。
- 专业版:许多开源项目会提供免费的社区版和付费的企业版。企业版通常包含额外的功能、更高的性能或专属的客户支持服务。
3. 营销和品牌建设
开源作为一种商业战略,往往有助于品牌的建立和市场份额的扩展。通过开源,企业能够让更多的开发者和技术人员接触到他们的产品,从而建立品牌认知度,进而吸引更多客户或合作伙伴。然而,这种营销策略本身也需要大量的投入:
- 社区建设:开源项目需要社区的支持,而建立一个活跃的社区需要时间、资金和人员投入。
- 文档和教程:为了让用户能够有效使用开源软件,企业往往需要投入大量资源制作文档、教程、示例代码和开发工具。
- 开发者生态系统:很多公司会通过开源建立强大的开发者生态系统,这样可以在未来通过收取支持、咨询费用、举办培训等方式获利。
4. 间接盈利和市场控制
有些公司可能不会直接从开源软件本身盈利,而是通过开源获得更多的市场控制权或客户资源。例如:
- 市场领导地位:通过开源,某家公司可以在某一领域建立市场领导地位,使得其他公司不得不采用他们的产品或服务,间接创造盈利机会。
- 数据和分析:通过开源,企业可以获得大量的使用数据和反馈,这有助于他们改进产品,甚至为其其他商业产品提供数据支持和创新。
5. 开源的潜在成本
- 竞争压力:开源可能会增加市场上的竞争,因为一旦源代码公开,任何人都可以修改并重用代码,从而可能影响原公司的市场份额。
- 开发和维护成本:持续开发和维护开源项目需要大量的人力和时间,尤其是当项目规模和社区活跃度增加时,这可能变成一项昂贵的长期投资。
开源软件是一种非常有效的商业战略,能够吸引大量用户并建立广泛的社区基础,但背后的成本往往是隐性的。虽然软件本身免费,但从商业角度来看,开源并不等于廉价,相关的技术支持、增值服务、品牌推广、社区建设和持续维护等方面的投入都可能让开源项目变得非常昂贵。
和维护成本**:持续开发和维护开源项目需要大量的人力和时间,尤其是当项目规模和社区活跃度增加时,这可能变成一项昂贵的长期投资。
开源软件是一种非常有效的商业战略,能够吸引大量用户并建立广泛的社区基础,但背后的成本往往是隐性的。虽然软件本身免费,但从商业角度来看,开源并不等于廉价,相关的技术支持、增值服务、品牌推广、社区建设和持续维护等方面的投入都可能让开源项目变得非常昂贵。
一个好的 Linux 软件生态应具备 丰富的软件选择、高效的包管理、稳定的版本、活跃的社区支持、良好的硬件兼容性、完善的安全机制和高度的灵活性。这样的生态能够为用户提供 易用、稳定、安全且自由 的操作环境,同时吸引更多开发者和用户参与,形成良性循环。
共勉