🖥️ 第07章 · 包管理与软件安装
apt apt-get dpkg
包管理与软件安装¶
这一章讲怎么在 Ubuntu 上安装、更新、卸载软件。Debian 系用 apt / apt-get,底层是 dpkg;安装来源还有"官方仓库"与"第三方脚本"之分。学会这章,你就能在这台服务器上装齐一切依赖。
先理解"仓库 + 包管理器"¶
Linux 装软件大多不靠"下载 exe",而是靠软件仓库:
| 概念 | 说明 |
|---|---|
| 软件仓库 (repo) | 一个集中存放软件包、带版本号的服务器 |
| 包 (package) | 一种打包好的软件单元,.deb |
| 包管理器 | 负责下载、解析依赖、安装、卸载的软件 |
| 依赖 (dependencies) | 一个包运行所需的其它包,通常自动处理 |
apt 会从 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 里的仓库地址拉取软件。它解决了"我装了 A,但缺 B,C 依赖"的连锁问题——自动帮你装齐。
提示 安装前先确认来源可信。Ubuntu 官方仓库(xenial/focal/jammy/noble 等)最稳;第三方 PPA 或外网脚本(pip、npm、官方 .sh)虽然装得新,但风险高、还可能在系统里留残骸。
更新软件源 apt update¶
apt update 会从仓库刷新索引,告诉系统现在有哪些可用包。它不升级软件,只是同步清单。
sudo apt update
注意 很多新手装不上包,第一反应是"包不存在",其实往往是没先
apt update,本地索引太旧、找不到新版本。装任何东西前,先跑一遍apt update。
安装 apt install¶
sudo apt install nginx # 安装 nginx
sudo apt install -y mysql-server # -y 自动回答 yes,不依赖交互
在这台服务器上,nginx、MySQL 8、certbot 等很多软件都是这么装的。
升级 apt upgrade && dist-upgrade¶
| 命令 | 作用 |
|---|---|
apt upgrade |
升级所有已装包到仓库里的最新版 |
apt dist-upgrade |
升级并处理包之间的依赖变更(可能装/删新包) |
sudo apt update
sudo apt upgrade -y
警告 生产环境升级前务必先备份。
dist-upgrade可能移除旧包甚至改变内核,服务器上跑着生产服务(bangdream、lovelive 等),盲目升级可能拖垮正在运行的应用。升级窗口要挑业务低峰。
搜索与查看 apt search / show / list¶
| 命令 | 作用 |
|---|---|
apt search 关键词 |
搜索仓库里匹配的包 |
apt show 包名 |
查看包的详细信息(版本、依赖、说明) |
apt list --installed |
列出所有已安装的包 |
apt list --installed \| grep 包名 |
确认某包是否已装 |
apt search nginx | grep -i install
apt show nginx
apt list --installed | grep -E "nginx|mysql"
卸载与清理¶
sudo apt remove 包名 # 卸载包,但保留配置文件
sudo apt purge 包名 # 卸载包并删除配置文件
sudo apt autoremove # 自动移除不再需要的依赖
sudo apt clean # 清理本地下载的 .deb 缓存
提示 想彻底"抹掉"一个软件,用
purge(连配置一起删);只想"停用"就用remove。autoremove能顺手清掉那些"我再也用不到的依赖",保持系统干净。
底层工具 dpkg¶
apt 是高层封装,dpkg 是它背后真正处理 .deb 的程序。用到 dpkg 的场景:安装了本地下载的 .deb 文件。
sudo dpkg -i 软件.deb # 安装本地包
dpkg -l | grep 包名 # 列出并确认包
dpkg -L nginx # 列出包安装了哪些文件
dpkg -S /usr/bin/nginx # 查某个文件是哪个包安装的
注意
dpkg -i 本地.deb不会自动补依赖。如果报"依赖未满足"错误,安装完后先sudo apt -f install自动修复依赖。
在 Ubuntu 24.04 上,一部分软件要通过官方脚本或其它方式安装,而不是 apt。比如:
- Node.js(npm/pnpm/Node 本体):官方安装脚本,装进
/usr/local(所以node、npm在/usr/local/bin); - pnpm:
corepack prepare或npm i -g pnpm; - Xray、RustDesk 等:官方 release 二进制或脚本;
- Prometheus 等:官方 .tar.gz 解包即用(第 5 章)。
提示 用官方脚本装的软件,不走 apt 管理。所以
apt list --installed里看不到 node;这类软件要手动升级、手动清理,别指望apt autoremove帮你删。
常用对比表¶
| 命令 | 作用 | 示例 |
|---|---|---|
apt update |
刷新仓库索引 | sudo apt update |
apt install |
安装包 | sudo apt install -y nginx |
apt upgrade |
升级所有包 | sudo apt upgrade -y |
apt search |
搜索包 | apt search nginx |
apt show |
包详情 | apt show nginx |
apt remove / purge |
卸载(留/删配置) | sudo apt purge nodejs |
apt autoremove |
清孤立依赖 | sudo apt autoremove |
dpkg -i |
装本地 .deb | sudo dpkg -i pkg.deb |
apt list --installed |
列出已装 | apt list --installed |
易错点¶
- 忘了
apt update:索引太旧,装不上新包。 - 不备份就
upgrade:生产升级可能拖垮服务。 apt remove后配置还在:想彻底清除用purge。dpkg -i会缺依赖:装完跑sudo apt -f install。- 官方脚本装的软件不归 apt 管:升级、清理要另想办法。
- 别用 root 裸跑安装:强烈建议
sudo而非su,装坏了有据可查。
相关命令¶
apt、apt-get、apt-cache、dpkg、dpkg-query、snap(另一包管理器)、flatpak、corepack(Node 生态)。