介绍
Ubuntu 主流包管理:apt(推荐,Debian系官方),还有 dpkg(本地deb包)、snap、flatpak。
下面以 Ubuntu 20.04 / 22.04 / 24.04 通用命令为主。
一、前置:更新软件源索引
Ubuntu 的 apt 不会每次都实时联网查询软件信息,而是在本地维护一份清单:
- 有哪些软件包
- 每个包叫什么名字
- 版本号是多少
- 依赖关系是什么
- 包是否可用
类比
软件源服务器是书店,apt update 只是把书店最新的图书目录下载到你电脑;
不更新直接安装的结果
- 安装软件:能装,但可能装到旧版本
- 软件源里已经移除的包:提示找不到包,直接报错:
Unable to locate package xxx。 - 升级(apt upgrade):不会升级到最新版本
- 依赖报错、版本冲突(企业服务器高频坑)
更新源索引(推荐)
安装前建议更新,只更新包信息,不升级软件
sudo apt update
更新系统所有已安装软件(升级版本)
sudo apt upgrade -y
解释:
sudo:管理员权限-y:所有确认选项自动选 yes
二、apt 安装软件(在线源)
1. 搜索软件
不知道完整包名时搜索:
apt search 关键词
# 示例:搜索nginx
apt search nginx
2. 安装软件
sudo apt install 包名
例子:安装nginx
sudo apt install nginx
一次性安装多个软件
sudo apt install nginx mysql-server
3. 安装指定版本
sudo apt install 包名=版本号
示例
sudo apt install nginx=1.18.0-0ubuntu1.3
三、apt 卸载软件
3种程度
1. remove:删除程序文件,保留配置文件(常用)
sudo apt remove 包名
示例
sudo apt remove nginx
适合以后可能重装,想保留配置的场景。
2. purge:删除程序 + 连同配置文件一起删掉(彻底卸载)
sudo apt purge 包名
例子
sudo apt purge nginx
3. autoremove:清理不再依赖的残留依赖包(企业不推荐)
当你卸载软件后,很多依赖包不再被使用,清理:
sudo apt autoremove
清理时一并删除残留配置
sudo apt autoremove --purge
企业不推荐
autoremove 会自动删除所有标记为自动安装且无依赖的包,在复杂业务服务器(装了很多组件、依赖链错综复杂),有可能误删业务需要的底层依赖包,引发事故。
四、dpkg:本地离线包安装
比如下载的谷歌浏览器、微信 .deb 包
dpkg 不会自动处理依赖!缺依赖会报错,需要 apt 修复。
安装deb包
sudo dpkg -i 文件名.deb
# 示例
sudo dpkg -i google-chrome-stable_current_amd64.deb
如果提示依赖缺失,执行这条自动修复依赖:
sudo apt -f install
用 dpkg 卸载deb安装的软件
sudo dpkg -r 包名 # remove,保留配置
sudo dpkg -P 包名 # purge,删除配置
dpkg 查询已安装包
# 列出全部已安装软件
dpkg -l
# 查找某个软件是否安装
dpkg -l | grep nginx
五、查看软件信息
# 查看包详情
apt show nginx
# 查看软件安装位置、文件列表
dpkg -L nginx
清理缓存
apt下载的安装包会缓存在本地,占用磁盘:
# 删除所有缓存的安装包
sudo apt clean
# 删除旧版本缓存包
sudo apt autoclean
常见问题
- E: Could not get lock /var/lib/dpkg/lock
有另一个apt进程在跑(软件商店/另一个终端),关掉再执行;或者强制解锁(谨慎)sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lock - apt search 找不到软件
软件源不全,需要修改/etc/apt/sources.list,或者软件名字不对。 - dpkg安装deb报依赖错误
执行sudo apt -f install修复依赖。