Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
- 前言
- 一、 软件包管理器
- 1.1 传统安装方式的麻烦:从源代码说起
- 1.2 软件包:把“乐高”提前拼好的成品
- 1.3 包管理器:你的“软件应用商店”
- 1.4 常见的“商店”:不同Linux系统的选择
- 二、Linux下如何进行软件安装、升级、卸载
- 1. 主流Linux发行版软件安装、升级、卸载
- 1.1 Ubuntu/Debian系:APT
- 1.2 CentOS/RHEL系:YUM与DNF
- 1.3 其他发行版:
- 2.软件包依赖:
- 2.1 依赖管理的重要性
- 2.2 常见依赖问题与解决方案
- 3. 国内镜像源:
- 3.1 为什么选择国内镜像源?
- 3.2 主流国内镜像站推荐
- 3.3 镜像源配置步骤(以Ubuntu、CentOS为例)
- 3.3.1 Ubuntu/Debian系(以清华源为例)
- 步骤1:备份原配置
- 步骤2:替换为国内源(清华源)
- 步骤3:更新软件源索引
- 3.3.2 CentOS/RHEL系(以阿里云源为例)
- 步骤1:备份原配置(可选)
- 步骤2:替换为国内源(阿里云源)
- 步骤3:更新软件源缓存
前言
- 在前序博客中,我们系统讲解了 Linux 权限体系、基础操作指令,分步演示了 VMware 17 Pro 与 CentOS 9 Stream 的安装流程,并完成了 Vim 编辑器配置及 C++ 开发环境搭建。
- 本节博客将聚焦软件包管理体系,深入解析 Linux 环境下软件包的安装、升级及卸载机制,帮助读者掌握主流包管理工具的核心操作逻辑。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
一、 软件包管理器
对于刚接触Linux的我们来说,理解软件包和包管理器可以从我们熟悉的手机或电脑使用经验入手。
- 比如大家在手机上装App,很少会自己编写代码,而是直接去应用商店搜索下载,Linux里的“软件包”就相当于手机里的App安装包,“包管理器”则像应用商店,帮我们快速找到并安装这些“App”。
1.1 传统安装方式的麻烦:从源代码说起
假设你想在Linux里装一个聊天软件,如果按照最原始的方法,需要先找到这个软件的“源代码”(就像一堆工程图纸),然后自己用编译工具把它“组装”成可以直接运行的程序。这个过程就像自己动手拼乐高:
- 先要安装一堆编译工具(比如gcc、make),相当于准备好螺丝刀、胶水等工具;
- 编译过程中可能会遇到各种“依赖问题”,比如软件需要某个版本的插件,但你的电脑里没有,就得先手动找插件、安装,否则就拼不起来;
- 万一源代码有小错误,还得自己排查修改,对新手非常不友好。
这种方式就像“手动拼乐高”,虽然能学会原理,但太费时间,尤其对普通用户来说,只想快速用上软件,不想当“工程师”。
1.2 软件包:把“乐高”提前拼好的成品
于是有人想了个办法:把常用软件提前编译好,打包成一个“安装包”(类似Windows的.exe安装程序),里面不仅包含可直接运行的程序,还提前打包了它需要的所有“依赖插件”,就像工厂直接生产好的乐高成品套装。这个“安装包”就是软件包。
- 比如你想装微信Linux版,不需要自己编译,只要下载一个
.deb
或.rpm
格式的软件包(不同Linux版本格式不同),告诉包管理器“我要装这个”,它就会帮你把软件放到合适的位置,连带着它需要的所有“零件”都装好,再也不用手动处理依赖问题。
1.3 包管理器:你的“软件应用商店”
有了软件包,还需要一个“商店”来管理它们——这就是包管理器。它的作用就像手机的应用商店:
- 集中管理软件库:包管理器连接着官方或第三方的“软件仓库”,里面存着成千上万的软件包,你不需要自己去各个网站找安装包,直接在命令行输入软件名称(比如“微信”),包管理器就能从仓库里找到对应的安装包;
- 自动解决依赖:比如你装A软件需要B插件,装B插件需要C库,包管理器会一次性把A、B、C都装好,不用你操心“先装谁”;
- 方便升级和卸载:就像应用商店可以一键更新所有App,包管理器也能一键升级系统里的所有软件,或者彻底卸载某个软件,不会留下残留文件。
1.4 常见的“商店”:不同Linux系统的选择
不同的Linux“家族”(发行版)常用的“包管理器商店”不同:
- yum(代表系统:CentOS、RedHat、Fedora):比如你用的是CentOS系统,想装一个浏览器,打开终端输入
sudo yum install firefox
,yum就会从官方仓库下载Firefox的软件包并安装,全程自动。
- apt(代表系统:Ubuntu、Debian):如果你用Ubuntu,命令类似
sudo apt install firefox
,apt的优势是仓库更新快,对新手更友好,很多Linux服务器也常用它。
二、Linux下如何进行软件安装、升级、卸载
Linux生态的优越性,很大程度体现在软件包管理的成熟度上。一个优秀的操作系统,需具备:
- 标准化的包格式(如Debian的.deb、RedHat的.rpm),确保软件分发的规范性;
- 自动化依赖解析,避免手动处理复杂依赖关系;
- 完善的软件仓库,提供海量预编译软件包,降低用户编译成本;
- 便捷的版本控制,支持快速升级、降级或卸载,保障系统稳定性。
这些要素共同构成了操作系统的“软件生态基础设施”,而国内镜像源的建设,则进一步优化了这一基础设施的访问效率。
1. 主流Linux发行版软件安装、升级、卸载
1.1 Ubuntu/Debian系:APT
核心工具:apt-get
/apt
(命令行)、software-center
(图形界面)
安装流程:
- 更新软件源列表:
sudo apt update
,获取最新软件包索引; - 安装软件:
sudo apt install <软件名>
,自动解析并安装依赖; - 卸载软件:
sudo apt remove <软件名>
(保留配置文件)或sudo apt purge <软件名>
(彻底删除); - 升级系统:
sudo apt upgrade
(单个软件)或sudo apt dist-upgrade
(系统级升级)。
特色:支持“渐进式升级”,通过/etc/apt/sources.list
配置国内镜像源(如清华源、阿里源),显著提升下载速度。
1.2 CentOS/RHEL系:YUM与DNF
核心工具:yum
(CentOS 7及以下)、dnf
(CentOS 8+)
安装流程:
- 启用软件仓库:通过
rpm -ivh
安装repo文件,或直接编辑/etc/yum.repos.d/
下的配置文件; - 安装软件:
sudo yum install <软件名>
,依赖问题由YUM自动处理; - 卸载软件:
sudo yum remove <软件名>
; - 升级系统:
sudo yum update
(全系统升级)或指定软件升级。
进化:CentOS 8引入的DNF(Dandified YUM)优化了依赖解析算法,支持并行下载,效率更高。
1.3 其他发行版:
- Arch系(Arch/Manjaro):使用
pacman
,强调“滚动更新”,通过pacman -S <软件名>
安装,支持AUR(用户仓库)扩展生态; - Gentoo:基于Portage,通过
emerge
编译安装,用户可自定义软件配置(如CPU优化、功能裁剪); - SUSE:使用
zypper
,结合官方OBS仓库,适合企业级环境的稳定部署。
2.软件包依赖:
2.1 依赖管理的重要性
软件包通常依赖其他库或工具(如libc、GCC运行时),若依赖缺失或版本冲突,会导致安装失败或运行异常。包管理工具的核心价值,在于通过“依赖图”自动解析并安装所需组件。
2.2 常见依赖问题与解决方案
- 依赖缺失:
- 方案:通过包管理工具自动解决(如
apt -f install
修复破损依赖); - 特例:第三方软件可能需手动安装依赖(参考官方文档或使用容器化方案)。
- 方案:通过包管理工具自动解决(如
- 版本冲突:
- 方案:使用
apt policy <软件名>
查看版本优先级,通过apt install <软件名>=<版本号>
指定安装版本; - 进阶:利用Docker/Kubernetes等容器技术,实现“依赖隔离”。
- 方案:使用
- 跨发行版依赖:
- 挑战:Debian与RedHat系包格式不兼容;
- 解决方案:使用通用二进制(如Go语言编译的可执行文件)、容器镜像,或通过
alien
工具转换包格式(非推荐)。
3. 国内镜像源:
3.1 为什么选择国内镜像源?
- 速度优势:直接从国内服务器下载,避免国际链路延迟;
- 稳定性:国内镜像站同步频率高(多数每日更新),减少“源不可用”问题;
- 本地化支持:部分镜像站提供中文文档(如清华源的详细配置指南)。
3.2 主流国内镜像站推荐
-
阿里云镜像站(https://developer.aliyun.com/mirror/)
- 特色:覆盖几乎所有主流Linux发行版(Ubuntu/CentOS/Arch等),支持Docker镜像、编程语言包(如PyPI/NPM),企业级稳定性。
-
清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn/)
- 特色:教育网用户友好,提供IPv4/IPv6双栈支持,镜像列表清晰,附带详细的配置教程(如如何替换系统默认源)。
-
中国科学技术大学镜像站(http://mirrors.ustc.edu.cn/)
- 特色:同步速度极快,支持反向代理(如npm、Maven中央仓库),适合开发者使用,提供多线路解析(教育网/电信/联通)。
-
北京交通大学镜像站(https://mirror.bjtu.edu.cn/)
- 特色:专注于常用发行版和开发工具,状态监控清晰(显示每个镜像的同步状态),适合高校及科研机构。
-
网易镜像站(http://mirrors.163.com/)
- 特色:历史悠久,支持传统Linux发行版(如Debian老版本),提供便捷的搜索功能,快速定位所需软件包。
3.3 镜像源配置步骤(以Ubuntu、CentOS为例)
3.3.1 Ubuntu/Debian系(以清华源为例)
核心文件:/etc/apt/sources.list
(全局软件源配置)
适用系统:Ubuntu 16.04+、Debian 9+等
步骤1:备份原配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
作用:防止配置错误导致系统无法更新,便于恢复默认源。
步骤2:替换为国内源(清华源)
使用文本编辑器(如nano、vim)打开配置文件:
sudo nano /etc/apt/sources.list
清空原有内容,替换为以下镜像地址(根据Ubuntu版本选择对应分支,如jammy
为22.04,ubuity
为23.10):
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 如需使用测试版软件,取消注释以下行
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
注意:镜像地址需与系统版本匹配,可通过lsb_release -a
查看Ubuntu版本代号。
步骤3:更新软件源索引
sudo apt update
验证:若输出中无404 Not Found
或Failed to fetch
错误,说明配置成功。
3.3.2 CentOS/RHEL系(以阿里云源为例)
核心文件:/etc/yum.repos.d/
目录下的.repo
文件(每个仓库独立配置)
适用系统:CentOS 7/8、Rocky Linux、AlmaLinux等
步骤1:备份原配置(可选)
sudo mkdir -p /etc/yum.repos.d/bak && sudo cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
作用:备份官方仓库配置,避免误操作导致依赖问题。
步骤2:替换为国内源(阿里云源)
-
下载镜像站提供的repo文件(以CentOS 7为例):
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或手动编辑文件:
sudo nano /etc/yum.repos.d/CentOS-Base.repo
将所有
baseurl
字段替换为阿里云镜像地址:[base] name=CentOS-$releasever - Base baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$releasever - Updates baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/os/ # 其他仓库(如extras、centosplus)同理替换
关键参数:
$releasever
自动匹配系统版本,$basearch
为架构(x86_64/arm64等)。 -
启用EPEL仓库(可选,用于获取额外软件包):
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
步骤3:更新软件源缓存
sudo yum makecache # CentOS 7及以下
# 或
sudo dnf makecache # CentOS 8及以上(DNF工具)
验证:输出中显示Metadata Cache Created
,表示缓存生成成功。
通过以上步骤,可显著提升Ubuntu/CentOS系统的软件下载速度和稳定性,尤其适合国内用户环境。配置时建议选择与自身网络匹配的镜像站(如教育网选清华/中科⼤,企业网选阿里云/网易),并定期执行更新命令以获取最新软件包。
以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。
我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦 |