apt · 软件仓库管家
上游:sudo(apt 需要管理员权限)· ls(查看安装了什么) 下游:unzip(解压工具)·
tree(目录树)· curl(网络工具)· nano(文本编辑器) 参见:find(找到 apt 安装的文件去了哪里)
一句话是什么
apt 是 Ubuntu 的软件管家——你告诉它软件名字,它帮你从互联网上找到、下载、安装好,
一条命令搞定,不需要你打开浏览器,不需要你知道软件在哪台服务器上。
为什么需要它
你还记得那次想解压 Minecraft 服务器文件,结果 unzip 命令不存在吗?
$ unzip bedrock-server.zip
Command 'unzip' not found在 Windows 上你会打开浏览器搜索 “unzip 下载”,然后找到一个网页, 点下载,等安装包,双击安装,一路 Next Next Finish。
在 Linux 上,这一切只需要一行:
sudo apt install unzip为什么 Linux 能做到?
因为 Ubuntu 背后有一个巨大的软件仓库(Repository),
里面存放了 6 万多个经过审核的软件包,全部免费。
apt 就是你通往这个仓库的直通车。
你的电脑 Ubuntu 软件仓库(全球镜像)
│ │
│ sudo apt install unzip │
│──────────────────────────────▶│ 找到 unzip 软件包
│ │
│◀─────────────────────────────│ 下载 + 安装
│ │
unzip 可以用了
核心用法
公式
sudo apt [动作] [软件名]
sudo = 以管理员身份执行(安装软件需要权限,就像学校机房要老师开机一样)
常用动作表
| 动作 | 命令 | 干了什么 |
|---|---|---|
| 刷新仓库列表 | sudo apt update | 告诉 apt “去仓库看看有没有新版本”(不会安装任何东西) |
| 安装软件 | sudo apt install <名字> | 下载并安装 |
| 卸载软件 | sudo apt remove <名字> | 删除软件(保留配置文件) |
| 彻底卸载 | sudo apt purge <名字> | 删除软件 + 配置文件 |
| 搜索软件 | apt search <关键词> | 在仓库里搜索(不需要 sudo) |
| 查看已装 | apt list --installed | 列出所有已安装的软件 |
| 升级全部 | sudo apt upgrade | 把已安装的软件都升级到新版本 |
记忆口诀
先 update,再 install
就像先看菜单,再点菜
拟人化拆解 · sudo apt install tree 装一个程序的全过程
apt install tree 看起来只是一行,实际是包管家走了 6 个房间、动了 4 个文件夹的复杂任务。
我们慢放跟着 apt 走一遍。
这一行命令里的每个参数
sudo:拿到 root 权限。装软件要往系统目录写文件,普通用户没钥匙apt:包管家程序本体install:动作是”装”(不是 update / remove / search / list)tree:目标包名——注意是包名,不是命令名(多数时候相同,但有例外,见下文坑 1)
第一步 · 翻”已装登记册”看是不是已经装过
管家先查 /var/lib/dpkg/status——这是 dpkg(更底层的包工具)维护的账本。
- 已经在登记册里 → 直接退出,提示
tree is already the newest version - 不在 → 继续往下走
第二步 · 查”软件源索引”找 tree 在哪个货架
查 /var/lib/apt/lists/*Packages
→ 找到 tree 的元数据:版本号、架构、依赖、下载 URL
→ URL 例如:http://archive.ubuntu.com/.../tree_2.1.0-1_amd64.deb
这份索引是 apt update 时下载的清单副本。
所以隔太久没 apt update,索引会过时——管家拿着旧地图去仓库可能找不到包。
第三步 · 解析依赖——tree 自己装不下,要不要带朋友来
tree 比较简单,可能只依赖 libc6(系统标准库,肯定已经在)。
但如果是装 vim,会拖来 5–10 个依赖(vim-common、vim-runtime、libgpm2…)。
管家把所有”还没装的依赖”加进购物清单,连同 tree 一起从仓库下载。
第四步 · 把 .deb 文件下载到缓存
存到:/var/cache/apt/archives/tree_2.1.0-1_amd64.deb
.deb 是 Debian/Ubuntu 的安装包格式(类似 Windows 的 .exe 安装器,但更规范)。
这一步会显示进度条——Get:1 archive.ubuntu.com tree amd64 ... [42 kB]。
第五步 · 拆包 + 把文件摆进各自的房间
.deb 文件本质是个压缩归档。管家拆开,按 Linux 文件系统标准(FHS)摆放:
| 文件类型 | 摆放位置 | 例子 |
|---|---|---|
| 可执行程序 | /usr/bin/ | /usr/bin/tree |
| 帮助手册 | /usr/share/man/man1/ | tree.1.gz(man tree 时读这个) |
| 文档/版权 | /usr/share/doc/tree/ | README、changelog.gz |
| 配置(如果有) | /etc/ | tree 没有;但比如 nginx 会摆 /etc/nginx/ |
第六步 · 在登记册补一笔
管家回到 /var/lib/dpkg/status 写一条:“tree 2.1.0-1 已装,文件清单见 /var/lib/dpkg/info/tree.list”。
下次跑 apt list --installed,就能看到 tree 了。
跟着脚步验证 · 你能亲眼看到这些文件
# 1. 程序真的在 /usr/bin/ 里?
which tree
# /usr/bin/tree
# 2. 登记册真的写了?
dpkg -l tree
# ii tree 2.1.0-1 amd64 ascii display of files in directory
# 3. 这个包总共动了哪些文件?(apt 留下的"账单")
dpkg -L tree
# /usr/bin/tree
# /usr/share/man/man1/tree.1.gz
# /usr/share/doc/tree/README
# ...变数 · 不同包行为差异极大
| 包名 | .deb 大小 | 依赖数量 | 装完后落地多少文件 |
|---|---|---|---|
tree | 42 KB | ≈ 1 | 5–6 个 |
htop | 180 KB | ≈ 3 | 10+ 个 |
nginx | 2 MB | ≈ 8 | 50+ 个,含 /etc/nginx/ 整套配置 |
texlive-full | 4+ GB | ≈ 200 | 几万个,装一次去喝杯水 |
这就是为什么有时装一个小工具会”拖来一堆东西”—— Linux 把共享的库代码只装一份,所有需要它的程序都共用同一份, 省空间但代价是依赖链复杂。
Aaron 常见踩坑
坑 1 · 包名 ≠ 命令名:
sudo apt install python3-pip
# 装好了,但命令叫什么?不是 python3-pip,是 pip3
# 用 dpkg -L python3-pip | grep bin 看真正的命令名坑 2 · 装完命令找不到:开新终端,或运行 hash -r(让 shell 重扫 PATH)。
坑 3 · 装到了 /usr/sbin/(系统管理工具目录),普通用户 PATH 不含这个路径——要么用 sudo 命令,要么写完整路径 /usr/sbin/命令。
例题精讲
📗 初探 Starter — 装一个能用的工具
任务:安装 tree 命令,然后用它看看自己的学习基地长什么样。
# 第一步:刷新软件仓库(养成好习惯)
sudo apt update
# 第二步:安装 tree
sudo apt install tree
# 系统会问你 "Do you want to continue? [Y/n]"
# 输入 Y 然后 Enter
# 第三步:用起来
tree ~/学习基地预期输出(大概是这样):
/home/aaron/学习基地
├── 第1周-我的地盘
│ ├── 任务A-画地图.md
│ └── 任务B-建造基地.md
└── 第2周-搬家和复制
└── 任务A-创建战术卡片.md
2 directories, 3 files
你学到了什么:tree 让文件夹结构一眼看清楚,比 ls 更直观。
这个命令以前 Ubuntu 没有,现在你装上了。
📘 应用 User — 先搜索,再决定装不装
任务:你听说有个叫 htop 的工具可以看电脑的 CPU 和内存,
但不确定名字对不对。先搜索确认,再安装。
# 搜索关键词
apt search htop输出会很长,找到这一行:
htop/noble,now 3.2.2-1 amd64
interactive processes viewer
确认有这个包,而且它的描述是 “interactive processes viewer”(交互式进程查看器)。
# 安装
sudo apt install htop
# 运行它
htop你会看到:一个彩色的实时界面,显示每个 CPU 核心的使用率,
还有所有正在运行的程序(进程)。按 q 退出。
你学到了什么:安装前先搜,确认软件名和描述。
apt search 不需要 sudo,因为搜索不改变系统。
📙 管理 Admin — 系统维护,像给机器做保养
任务:完整执行一次系统更新流程。
# 第一步:刷新仓库(看看有哪些更新可用)
sudo apt update
# 输出的最后一行大概是:
# 42 packages can be upgraded. Run 'apt list --upgradable' to see them.
# 第二步:看看有哪些可以升级
apt list --upgradable 2>/dev/null
# 第三步:全部升级
sudo apt upgrade
# 系统会列出所有要升级的包,问你确认
# 输入 Y 然后 Enter,然后等它完成
# 完成后,查看 apt 安装的日志
cat /var/log/apt/history.log | tail -30最后一条命令的意思:
/var/log/apt/history.log— apt 把所有操作都记在这个日志文件里tail -30— 显示最后 30 行(最近的操作)
你学到了什么:update 是刷新列表,upgrade 是真正安装更新。
这两步结合,是服务器管理员每周都做的事。
官方文档参考
man apt # 完整手册
apt --help # 快速选项列表
apt= Advanced Package Tool,为普通用户封装了 apt-get / apt-cache。 在线:https://manpages.ubuntu.com/apt
节点链接
上游(需要先了解这些)
同层(一起使用的搭档)
下游(apt 装好之后,这些命令就可用了)
- unzip ← 解压 .zip 文件
tree← 显示目录树(apt install tree)- curl ← 下载和请求网络(apt install curl)
- nano ← 命令行文本编辑器(apt install nano)
htop← 实时系统监控(apt install htop,Tier 5 节点)
通向(学会 apt 之后,这些更大的概念更好理解)
- 软件仓库与信任 ← 为什么 apt 的软件是安全的?
- Minecraft-Bedrock-Server ← 全英文阅读:BDS 官方安装文档