Centos和Ubuntu虽然都是Linux系统,但它们的软件包管理工具不同,因此安装软件的命令也有所区别
核心区别如下:
- Centos:使用yum或dnf命令,包格式为.rpm
- Ubuntu:使用apt命令,包格式为.deb
包格式就是Linux系统中软件安装包的"文件类型"或"压缩包格式",它决定了软件该如何打包、分发以及被系统识别和安装。
.exe是在Windows中,从"文件类型"上说它是可执行文件,它包含了能让CPU直接执行的机器码。任何.exe文件双击后"运行"是它的本质属性。从"功能"上说,.exe文件可以是一个游戏、一个文本编辑器,也可以是一个"安装引导程序"(我们常说的安装包)。Windows为了方便用户而做的一个设计选择:合并了"安装工具"和"运行程序",运行一个.exe文件实现两种截然不同的逻辑(应用程序如notepad.ext、安装引导程序如setup.exe)
在Linux中,.rpm/.edb是软件包文件,本质上是一种压缩包(类似于.zip),里面包含了软件的文件和安装指令,它们不能被运行,只能被包管理工具(如rmp)去"解包"和"安装"
Linux 的设计哲学是"一个程序只做一件事,并做好它"。所以角色分工极其明确:
| 文件类型 | 能不能直接"运行"? | 它的作用是什么? | 谁来处理它? |
|---|---|---|---|
应用程序 (如 /usr/bin/vim) |
能。双击或输入命令就能用。 | 提供功能(编辑文字、浏览网页)。 | 用户直接使用。 |
软件包 (如 vim.rpm) |
不能。双击会报错。 | 提供"安装应用程序所需的材料"。 | 包管理器 (yum/apt) 负责处理。 |
简单总结:
-
.exe:是一个可执行程序 的通用后缀。它既可以是一个"应用程序" (如notepad.exe),也可以是一个"安装引导程序" (如setup.exe)。 -
.rpm/.deb:是软件包 的后缀。它们不是可执行程序,而是**"安装材料包"**。它们本身不能运行,必须由系统的包管理器来解包和安装。
1.yum
yum是CentOS7及更早版本中的核心包管理工具,它会自动处理软件依赖关系,让你从"手动找包、解决依赖"的繁琐工作中解放出来。
如果你是CentOS8或更高版本,yum命令只是一个指向dnf的连接,作为yum的下一代版本,dnf提供了更好的性能和依赖解析能力,虽然你仍可以输入yum,但实际指向的是dnf的功能
yum的语法格式:
bash
yum [选项] [命令] [软件包名称...]
常用:
bash
yum [-y] [install | remove | rearch] 软件名称
bash
[root@master /]# wget
-bash: /usr/bin/wget: No such file or directory
-
[root@master /]#:提示符,意思是root用户在名为master的服务器上,当前位于根目录(/)。 -
wget:你输入的命令,希望执行wget程序。 -
-bash: /usr/bin/wget: No such file or directory:Bash解释器 (命令行程序)的报错。它找遍了系统环境变量PATH中定义的所有目录(如/usr/bin),发现wget这个程序根本不存在。
bash
[root@master /]# yum search wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
======================================================================================= N/S matched: wget ========================================================================================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
Name and summary matches only, use "search all" for everything.
-
yum search wget:你使用yum在软件仓库中搜索包含wget关键词的软件包。 -
Loaded plugins: fastestmirror:yum加载了一个插件,用于选择最快的镜像源,是正常信息。 -
Loading mirror speeds from cached hostfile:yum正在读取缓存的镜像站速度信息。
-
N/S matched: wget:N/S代表Name/Summary (名称和简介都匹配)。yum找到了匹配的结果。 -
wget.x86_64:这是软件包的完整名称。-
wget:软件名。 -
x86_64:软件架构,适用于64位的Intel/AMD处理器。
-
-
: A utility for retrieving files using the HTTP or FTP protocols:软件包简介,"一个用于使用HTTP或FTP协议获取文件的工具"。 -
最后一行:这是
yum的一个提示:刚才只搜索了软件包的"名称"和"简介"。如果想搜索更详细的描述(如软件包的说明文档),可以使用yum search all wget。
bash
[root@master /]# yum install wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
c7-media | 3.6 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7_6.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================================================
Installing:
wget x86_64 1.14-18.el7_6.1 c7-media 547 k
Transaction Summary
==================================================================================================================================================================================================
Install 1 Package
Total download size: 547 k
Installed size: 2.0 M
Is this ok [y/d/N]:
当 yum 询问 Is this ok [y/d/N]: 时,它提供了三种选项,分别代表了不同的确认行为。
核心回答
-
y(yes) :确认执行。yum会按照计划开始下载和安装。 -
d(download only) :仅下载。yum只会把软件包下载到本地缓存中(通常是/var/cache/yum/),不进行安装。下载完成后就退出。 -
N(No) :取消操作。yum会放弃本次安装任务,不做任何更改,并返回到命令提示符。
注意提示符 [y/d/N] 中,N 是大写的 。这在 Linux 提示中是一个标准惯例:大写字母表示默认选项。
-
如果你直接按 回车键 (Enter) 而不输入任何字母,系统会默认选择
N,即取消本次操作。 -
这是为了安全考虑,防止你因误触回车键而执行了不想执行的操作。
CTRL C将运行过程停止(中断当前正在运行的命令,对系统没有影响,因为此时yum还没有开始下载和安装任何东西,它只是生成了一个"安装计划"并正在等待你的确认,CTRL C只是让它放弃这个计划),来看看-y选项的作用
yum -y install wget 的作用:告诉yum,自动对一切问题回到yes,静默地完成安装。
-y这个选项代表"yes",会自动回答所有yum可能提出的交互式问题
bash
[root@master /]# yum -y install wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7_6.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================================================
Installing:
wget x86_64 1.14-18.el7_6.1 c7-media 547 k
Transaction Summary
==================================================================================================================================================================================================
Install 1 Package
Total download size: 547 k
Installed size: 2.0 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : wget-1.14-18.el7_6.1.x86_64 1/1
Verifying : wget-1.14-18.el7_6.1.x86_64 1/1
Installed:
wget.x86_64 0:1.14-18.el7_6.1
Complete!
[root@master /]# wget
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.
[root@master /]# which wget
/usr/bin/wget
📋 yum 命令速查表
这是 yum 最常用、最核心的命令,可以保存下来随时查阅:
| 功能类别 | 命令示例 (yum 开头) |
说明 |
|---|---|---|
| 更新软件源 | sudo yum update |
推荐首先执行,刷新仓库信息,并将已安装的软件包升级到最新版。 |
| 安装软件 | sudo yum install <软件名> |
最常用的安装方式,会自动解决依赖。 |
sudo yum install -y <软件名> |
-y 参数跳过"确认"步骤,直接安装。 |
|
sudo yum localinstall <本地包.rpm> |
安装从网上下载的 .rpm 文件,并用网络仓库解决其依赖。 |
|
| 搜索查询 | yum search <关键词> |
在软件名称、描述中搜索关键词。 |
yum info <软件名> |
显示软件的详细信息,如版本、大小、简介等。 | |
yum list installed |
列出系统上所有已安装的软件包。 | |
yum provides <文件路径/命令> |
反向查找,当你知道某个文件或命令但不知道包名时使用。 | |
| 卸载软件 | sudo yum remove <软件名> |
卸载软件,但依赖项会保留。 |
sudo yum autoremove |
清理在 remove 后变得不再需要的"孤儿"依赖包。 |
|
| 维护与清理 | sudo yum clean all |
常用,清除所有已下载的软件包和元数据缓存,能解决很多奇怪的安装问题,并释放磁盘空间。 |
yum history |
查看 yum 所有操作的记录,可用于回滚。 |
|
| 包组管理 | yum group list |
列出可用的软件包组(如 "Development Tools")。 |
sudo yum group install "<组名>" |
安装整个包组。 |
2.apt
apt命令是 Ubuntu 和 Debian 系统中的核心包管理工具,相当于 CentOS 中的 yum。
会自动处理软件的依赖关系,让你能轻松地安装、更新和卸载软件。
📋 apt 命令速查表
这是 apt 最常用、最核心的命令,可以保存下来随时查阅:
| 功能类别 | 命令示例 (sudo apt 开头) |
说明 |
|---|---|---|
| 更新软件源 | sudo apt update |
极度重要,每次安装前建议先执行。从互联网仓库刷新软件包列表,让系统知道有哪些软件可以安装或更新。 |
| 升级已装软件 | sudo apt upgrade |
将系统中所有已安装的软件升级到最新版本。 |
sudo apt full-upgrade |
更智能的升级,如果升级某个包需要删除其他冲突的包,它会自动处理。 | |
| 安装软件 | sudo apt install <软件名> |
最常用的安装方式,会自动解决依赖。 |
sudo apt install -y <软件名> |
-y 参数跳过"确认"步骤,直接安装。 |
|
sudo apt install ./<本地包.deb> |
安装从网上下载的 .deb 文件,并用网络仓库解决其依赖。 |
|
| 搜索查询 | apt search <关键词> |
在软件名称和描述中搜索关键词。 |
apt show <软件名> |
显示软件的详细信息,如版本、大小、依赖、简介等。 | |
apt list --installed |
列出系统上所有已安装的软件包。 | |
apt list --upgradable |
列出所有可以升级的软件包。 | |
| 卸载软件 | sudo apt remove <软件名> |
卸载软件,但会保留配置文件。 |
sudo apt purge <软件名> |
彻底卸载,连配置文件一起删除。 | |
sudo apt autoremove |
常用,自动清理那些因依赖关系被安装、但现在不再被任何软件需要的孤立的包。 |
3.yum与wget的区别
它们的核心区别是:wget 是"下载工具",而 yum 是"包管理工具"。
打个比方:
-
wget就像你浏览器里的 "另存为..." 功能。它只管把网上的文件(比如一个网页、一张图片、一个软件包)下载到你的电脑硬盘里,之后的事它就不管了。 -
yum则像一个 "智能应用商店" 。你告诉它要装什么软件,它会自动去网上的仓库把软件包和相关依赖都下载下来,然后自动帮你安装好,甚至以后还能帮你更新和卸载。
下面我们来详细拆解一下。
核心区别对比表
| 特性 | wget |
yum |
|---|---|---|
| 本质 | 一个非交互式网络下载器 | 一个包管理工具 |
| 主要功能 | 从 HTTP、HTTPS、FTP 协议下载文件 | 自动安装、升级、卸载软件,并处理依赖关系 |
| 处理依赖 | 不会。只下载你指定的那个文件 | 会。自动下载并安装所有依赖 |
| 安装软件 | 不会 。下载完后,你需要手动安装 (如 rpm -ivh) |
会。下载后自动安装 |
| 软件来源 | 需要你提供精确的 URL 地址 | 连接到配置好的 软件仓库 (repository) |
| 常用场景 | 下载网页、图片、压缩包、源码、公共数据集 | 安装、更新或卸载系统软件,如 nginx, python3, vim |
什么时候用哪个?
-
用
yum的场景 (90% 的情况):-
你想安装、更新或卸载一个标准的系统软件。
-
你希望软件能被系统统一管理,方便后续维护。
-
这是 CentOS 上安装软件的首选和标准方式。
-
-
用
wget的场景 (特殊需求):-
你想下载一个
yum仓库里没有的第三方.rpm包,然后手动用rpm安装。 -
你想下载一个软件的源码压缩包 (
.tar.gz),准备手动编译安装 (执行./configure && make && make install)。 -
你想从网上备份一个网页或文件:
wget https://www.example.com/index.html -
你需要下载一个很大的文件,并且希望支持断点续传 (
wget -c)。 -
在写 Shell 脚本时,需要从某个 URL 获取内容或文件。
-