Ubuntu apt软件安装与卸载

介绍

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

常见问题

  1. E: Could not get lock /var/lib/dpkg/lock
    有另一个apt进程在跑(软件商店/另一个终端),关掉再执行;或者强制解锁(谨慎)
    sudo rm /var/lib/dpkg/lock-frontend
    sudo rm /var/lib/dpkg/lock
    
  2. apt search 找不到软件
    软件源不全,需要修改 /etc/apt/sources.list,或者软件名字不对。
  3. dpkg安装deb报依赖错误
    执行 sudo apt -f install 修复依赖。

原文出处:/show_1GW47JgImYdN.html