Linux基础开发工具(一):软件安装与包管理器实战

发布时间:2026/7/28 14:28:55

Linux基础开发工具(一):软件安装与包管理器实战 目录前言一、Linux软件安装与操作系统生态体系解析1.1 Linux软件安装的三种方式1.1.1 源代码安装1.1.2 RPM包安装1.1.3 包管理器yum/apt安装1.2 包管理器的工作原理1.2.1 yum/apt的本质1.2.2 工作流程1.2.3 配置文件的作用1.3 软件依赖问题的深度解析1.3.1 什么是软件依赖1.3.2 依赖列表的概念1.3.3 包管理器如何解决依赖问题1.4 Linux操作系统生态体系1.4.1 如何评估一款操作系统的好坏1.4.2 为什么要有完善的生态系统1.4.3 开源的本质是一种商业模式1.5 为什么要配置国内镜像源二、Linux软件管理实战YUM与APT2.1 开篇如何优雅地管理软件2.1.1 认清你的系统你是谁2.2、两大阵营YUM vs APT2.2.1 CentOS 阵营YUM2.2.1.1 搜索软件2.2.1.2 安装与卸载2.2.2 Ubuntu 阵营APT2.2.2.1 关于 apt-get 的小插曲2.2.2.2 搜索软件2.2.2.3 安装与卸载2.3、核心概念软件是从哪来的2.3.1 软件安装的真相2.3.2 软件源Repository是什么2.3.3 配置文件在哪里2.4、进阶操作换源与缓存清理2.4.1 为什么要换源2.4.2 换源的步骤以 CentOS 为例2.4.3 清理缓存结语 云泽Q个人主页 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》《笔试算法》《AI赋能》《STM32》⛺️遇见安然遇见你不负代码不负卿~前言大家好啊我是云泽Q欢迎阅读我的文章一名热爱计算机技术的在校大学生喜欢在课余时间做一些计算机技术的总结性文章希望我的文章能为你解答困惑~在这篇文章之前的所有Linux相关的内容是让大家了解Linux系统及其操作模式认识指令和权限细节更重要的是理解Linux的目录结构、绝对路径与相对路径、管道操作、重定向操作以及权限配套的指令集。掌握这些后就能在Linux中进行基本的指令操作就像在Windows下用鼠标单击、双击打开页面或软件一样。然而仅仅会操作是不够的。我们还需要在Linux中安装和卸载软件甚至进行编程——编写C/C代码、编译和调试代码。后面我们将重点讲解Linux下的开发工具链包括软件安装命令、文本编辑器、GCC编译器、Makefile自动化编译以及如何编写第一个小程序如进度条。一、Linux软件安装与操作系统生态体系解析1.1 Linux软件安装的三种方式1.1.1 源代码安装原理获取开源软件的源代码通过配套的编译和安装脚本自行编译安装。缺点对初学者不友好因为软件可能依赖其他库即便编译成功也可能因缺少依赖而无法运行。1.1.2 RPM包安装原理类似于Windows的安装包由发行版如CentOS 7将源代码在特定系统上编译后打包成RPM格式用户通过rpm -ivh等命令安装。缺点RPM包不自动解决依赖关系若软件A依赖B、C则需手动安装所有依赖。1.1.3 包管理器yum/apt安装原理推荐方式能自动查找、下载、安装软件并自动解决依赖问题极大简化安装流程。优势类似手机上的App Store或Windows应用商店背后有对应的软件包服务器服务端存储了大量预编译好的软件包。用户通过包管理器向服务器发起请求下载并安装软件。1.2 包管理器的工作原理1.2.1 yum/apt的本质yumYellow Dog Updater Modified和aptAdvanced Package Tool本质上是Linux下的“应用商店”客户端类似于手机上的App Store或Windows应用商店。其背后有对应的软件包服务器服务端存储了大量预编译好的软件包。用户通过包管理器向服务器发起请求下载并安装软件。1.2.2 工作流程查找包管理器根据配置文件中的URL或IP地址向软件包服务器发起查找请求。下载找到目标软件包后下载到本地。自动解析依赖包管理器会自动解析软件的依赖关系并下载所有依赖的软件包。安装将所有软件包安装到系统中。1.2.3 配置文件的作用包管理器通过本地的配置文件获知软件包服务器的地址URL或IP。例如CentOS默认指向国外官方源如centos.orgUbuntu指向其官方源。用户可以通过修改配置文件一般也不需要自己配置我们购买了国内的云服务器时对应的云服务器厂商就会默认把这个配置文件替换为指向国内镜像源的文件将软件包服务器地址替换为国内镜像源如阿里云、腾讯云以加速下载速度。比如我这里使用的是阿里云的服务里阿里云官方修改的配置文件就是指向国内镜像源的1.3 软件依赖问题的深度解析1.3.1 什么是软件依赖软件依赖是指一个软件在运行时需要依赖其他库或组件才能正常工作。例如一个软件可能依赖C语言标准库libc.so、SSL加密库ssl.so、网络库libhttpplib.so等。如果只安装了目标软件而没有安装其依赖的库软件将无法运行。1.3.2 依赖列表的概念软件依赖的关系可以形成一个依赖列表。例如软件A依赖B和C而B又依赖DC依赖E那么安装A时需要同时安装B、C、D、E。在Windows下安装包通常会将所有依赖打包在一起用户无需关心依赖问题。而在Linux下用户需要手动处理依赖或者使用包管理器自动解决。1.3.3 包管理器如何解决依赖问题包管理器在安装软件时会自动解析其依赖关系并下载所有依赖的软件包。用户只需执行一条命令即可完成所有软件的安装。例如使用yum install或apt install命令安装软件时包管理器会自动处理依赖问题确保软件能够正常运行。1.4 Linux操作系统生态体系1.4.1 如何评估一款操作系统的好坏不仅要看系统本身的性能、安全性和稳定性Linux内核各发行版基本一致更关键的是考察其生态系统是否完善。优秀操作系统的标准包括社区活跃、官方文档齐全中英文、软件体系丰富、更新维护及时、有大量目标用户群体如大公司开发者。1.4.2 为什么要有完善的生态系统操作系统作为产品核心目标是“被使用”。若无人使用则无法形成正向循环。完善的生态系统可以吸引更多用户和开发者从而推动操作系统的发展。例如CentOS和Ubuntu被腾讯、阿里等大公司广泛采用社区成熟可降低公司技术风险和评估成本。1.4.3 开源的本质是一种商业模式开源的本质是一种商业模式通过提供免费的操作系统吸引大量用户和开发者从而形成庞大的生态系统。在这个生态系统中社区论坛、官网文档、软件体系、维护更新速度、操作系统自身、富有针对性的客户群体等要素相互作用共同推动操作系统的发展。1.5 为什么要配置国内镜像源默认的国外软件包服务器在国内访问速度较慢甚至可能出现连接失败的情况。配置国内镜像源可以显著提高软件下载速度提升用户体验。二、Linux软件管理实战YUM与APT2.1 开篇如何优雅地管理软件接下来我会演示怎么在Linux下搜索、安装、卸载软件的过程我会用两个最主流的平台——CentOS代表 Red Hat 系和Ubuntu代表 Debian 系来给大家演示。只要掌握了这两个市面上绝大多数 Linux 发行版你都能通吃。2.1.1 认清你的系统你是谁在动手之前你得先搞清楚用的是什么系统。怎么查看系统版本呢这里教大家一个通用的命令cat /etc/os-releaseCentOS 7你会看到NAMECentOS Linux版本号是VERSION_ID7。它的内核其实源自 Red Hat Enterprise Linux (RHEL)所以我们可以把它理解为 RHEL 的社区版。Ubuntu 20.04你会看到NAMEUbuntu版本号是VERSION20.04 LTS (Focal Fossa)。它属于 Debian 体系。记住这两个特征以后不管拿到什么机器先跑一下这个命令心里就有底了。2.2、两大阵营YUM vs APTLinux 世界主要分为两大阵营它们的包管理工具不同但逻辑是一样的。2.2.1 CentOS 阵营YUMCentOS、RHEL、Fedora 这些系统使用的是YUM包管理器。2.2.1.1 搜索软件如果你想找某个软件比如我们要找一个叫lrzsz的工具用于文件传输你可以直接列出所有软件并过滤yum list|greplrzsz注意yum list会列出成千上万个软件包速度可能会稍微慢一点因为它要去阿里云或者华为云的源里去匹配。如果卡住了按Ctrl C取消即可。2.2.1.2 安装与卸载找到名字后安装非常简单sudoyuminstall-ylrzsz这里的-y参数很重要它表示自动确认安装省得系统问你“Is this ok [y/N]”你还要手动输个 y。如果要卸载就把install换成removesudoyum remove lrzsz2.2.2 Ubuntu 阵营APTUbuntu、Debian 这些系统使用的是APT包管理器。2.2.2.1 关于 apt-get 的小插曲老资历兄弟可能见过apt-get这个命令。它是老版本的命令。现在 Ubuntu 推荐直接使用apt它整合了常用功能界面更友好。虽然apt-get还能用但我们今天要讲的是新标准apt。2.2.2.2 搜索软件在 Ubuntu 下搜索软件命令更直观aptsearch lrzsz或者你想看某个软件的详细信息比如版本、依赖关系aptshow lrzsz2.2.2.3 安装与卸载安装命令如下sudoaptinstall-ylrzsz卸载命令sudoaptremove lrzsz重点总结CentOS:yum install,yum remove,yum list | grepUbuntu:apt install,apt remove,apt search无论哪个系统普通用户都没有权限往系统目录写文件所以必须加sudo提权。2.3、核心概念软件是从哪来的很多兄弟只会敲命令但不知道背后的原理。这部分才是最重要的2.3.1 软件安装的真相当你执行yum install或apt install时系统到底在干什么简单来说就是下载二进制程序然后拷贝到系统的特定目录通常是/usr/bin或/bin。一次安装全员可用因为软件被装在了公共目录所以这台机器上的所有用户都可以使用这个软件不需要每个人都装一遍。锁机制YUM 和 APT 都有一个特性就是同一时间只能运行一个安装任务。如果你正在装软件 A这时候又去装软件 B系统会报错告诉你数据库被锁定了。这是为了防止文件冲突。2.3.2 软件源Repository是什么既然要下载那从哪下载这就是软件源。你可以把软件源想象成一个巨大的“应用商店服务器”。稳定源Base/Main这里面放的软件都是经过长期测试、非常稳定的。就像手机出厂自带的那些 APP。扩展源EPEL/Universe有些软件比较新或者比较小众官方觉得不够稳定或者维护精力有限就会放在扩展源里。比如 CentOS 的 EPEL 源Ubuntu 的 Universe 源。2.3.3 配置文件在哪里包管理器怎么知道去哪个服务器下载软件呢因为它有配置文件。CentOS 的配置文件位于/etc/yum.repos.d/目录下。你可以进去看看里面有很多.repo结尾的文件比如CentOS-Base.repo。打开它你会看到baseurl后面跟着一串网址那就是下载地址。Ubuntu 的配置文件主文件是/etc/apt/sources.list。你可以用vim打开它里面列出了一堆deb http://...的地址。2.4、进阶操作换源与缓存清理这部分是很多新手最容易踩坑的地方请仔细看2.4.1 为什么要换源默认情况下虚拟机里的镜像下配置的源是国外的服务器。问题在国内访问国外服务器由于国情原因下载速度会很慢甚至经常超时连不上。解决我们需要把配置文件里的地址替换成国内的镜像站比如阿里云、腾讯云、华为云或者清华源。特别提示如果你用的是阿里云、腾讯云买的云服务器它们初始化时通常已经自动配好了内网源这种情况下你不需要手动换源只有你自己装的虚拟机才需要操心这个事。2.4.2 换源的步骤以 CentOS 为例假设我们要把源换成阿里云的备份原文件养成好习惯动配置前先备份。比如下面先重命名sudomv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新文件使用wget命令从阿里云下载新的配置文件。sudowget-O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo含义是从后面的网址下载前面的文件到/etc/yum.repos.d路径下2.4.3 清理缓存首先要清楚为什么要“清理缓存”很多人会遇到这种情况明明我已经把配置文件换成阿里云了为什么执行 yum install 还是报错或者下载的还是很慢这就是因为本地缓存的问题。原理 YUM/APT 为了加快速度会把远程服务器的软件列表信息下载到本地缓存起来。当你修改了配置文件换了源之后本地的缓存依然是旧的指向旧地址的。后果 此时直接安装工具可能还会尝试去连旧的地址导致失败。解决方案 必须手动清理掉旧的缓存强制工具重新从新的源获取信息。那么如何清理与重建呢清理旧缓存CentOS: sudo yum clean allUbuntu:sudo apt clean(清理安装包)重建新缓存让新配置生效CentOS:sudo yum makecache这一步非常关键它会去新源拉取最新的元数据makecache会根据新的配置文件重新去服务器上拉取软件列表并建立本地索引。。Ubuntu:sudo apt update。结语

相关新闻