ubuntu apt 命令

🕒 2025-09-12 📁 其他 👤 laumy 🔥 7 热度

介绍

apt是ubuntu/debian的包管理工具,主要用于安装、更新、卸载和管理系统软件,他是对apt-get和apt-cache的简化整合,输出更直观。

常用的apt命令

  • sudo apt update:从 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 指定的镜像源获取最新软件包列表。只更新索引信息,不会更新软件。
  • sudo apt upgrade:升级所有已安装软件到新版本,但不会移除/替换已有包。
  • sudo apt full-upgrade:更彻底,会移除或替换包以完成升级(系统大版本升级时常用)
  • sudo apt install 包名:安装软件包
  • sudo apt remove 包名:卸载软件包但保留配置文件。
  • sudo apt purge 包名:卸载软件并删除配置文件。
  • apt search 关键字:搜索关键字的软件包。
  • apt show 包名:显示软件包的版本、依赖、来源等详细信息。
  • sudo apt autoremove:自动卸载系统中不再需要的依赖包。
  • sudo apt clean:清空 /var/cache/apt/archives/ 下的缓存 .deb 文件。
  • sudo apt autoclean:只删除无效的缓存文件(已经在源里不存在的旧版本)。

apt安装执行流程

以安装vim为例

sudo apt install vim

(1)解析请求

apt 会先确认你输入的命令(如 install),以及指定的软件包名称。它会调用 libapt-pkg 库 来处理包依赖关系和软件源信息。

(2)查询软件源信息

apt读取本地缓存文件,/var/lib/apt/lists/ 下的索引文件(来自 /etc/apt/sources.list 和 /etc/apt/sources.list.d/)。如果缓存过期或你执行了 apt update,apt 会先通过 HTTP/HTTPS 向镜像源服务器拉取最新的软件包索引。

(3)依赖解析
apt 会分析你要安装的软件包需要哪些依赖(Dependencies)。依赖可能有必须依赖(必装),推荐依赖(默认安装),建议依赖(不自动安装,只提示)。apt通过SAT求解器选择最佳依赖组合。

(4)下载软件包
apt 确定要安装的 .deb 包后,从配置的镜像源下载对应的文件。下载位置:/var/cache/apt/archives/。apt 内部通过 Acquire 系统(支持 HTTP、HTTPS、FTP 等协议)拉取数据,并验证 GPG 签名 确保包没有被篡改。

(5)安装与配置
apt 把下载好的 .deb 包调用dpkg(Debian package manager) 处理。

dpkg -i xxx.deb

dpkg 负责解压 .deb,把文件放到系统目录里(如 /usr/bin、/etc/ 等),并运行包的安装脚本(preinst、postinst、prerm、postrm)。apt 会在这个过程中自动处理依赖包的安装顺序。

(6)触发系统更新

完成安装后,apt 可能会调用:ldconfig 更新共享库缓存、update-initramfs 更新内核启动镜像、systemctl daemon-reload 重载 systemd 服务。

软件源

软件源是apt update/install时定义系统如何找到、解析和使用软件仓库的。

旧版

软件源的配置在如下地址。

/etc/apt/sources.list
/etc/apt/sources.list.d/*.list

一条软件源的格式大致如下:

deb http://mirrors.aliyun.com/ubuntu jammy main restricted universe multiverse

  • deb:二进制包仓库(还有 deb-src 表示源码包)。
  • http://mirrors.aliyun.com/ubuntu:镜像源地址。
  • jammy:发行版代号(Ubuntu 22.04 LTS = jammy)。
  • main restricted universe multiverse:启用的组件。

新版

从 Ubuntu 22.04 LTS(部分更新后)和 23.04 起,apt 引入了一个新的配置格式,新格式(.sources YAML 格式):

Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: jammy
Components: main restricted universe multiverse

新格式的文件存放路径在

/etc/apt/sources.list.d/ubuntu.sources

内容如下:

Types: deb
URIs: http://cn.archive.ubuntu.com/ubuntu/
Suites: oracular oracular-updates oracular-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: oracular-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

第一段为主源+更新+回溯、第二段为安全更新源。

add-apt-repository

add-apt-repository是用于添加/删除 APT 软件源(包括 PPA 和官方仓库组件)。这个命令由 software-properties-common 包提供。其目的简化对软件包源 /etc/apt/sources.list 和 /etc/apt/sources.list.d/x.list 文件的修改。

要使用add-apt-repository命令,需要安装software-properties-common工具,该工具包含了add-apt-repository命令。

sudo apt install software-properties-common

add-apt-repository的语法为:

sudo add-apt-repository [选项] <repository>

常见 repository类型:
– PPA(个人/团队维护):ppa:用户名/仓库名。
– 官方仓库组件:universe、multiverse、restricted
– 完整仓库地址:deb http://url distro component

PPA

PPA (Personal Package Archive)是个人/团队维护的软件,作用是提供官方仓库里没有的软件,或者比官方更快更新的版本。命名规则:ppa:用户名/仓库名。如下:

sudo add-apt-repository ppa:deadsnakes/ppa
  • deadsnakes → 维护者的用户名
  • ppa → 这个维护者创建的一个仓库,里面放了多个 Python 新版本
  • 功能:能让你在 Ubuntu 上安装 Python 3.12、3.13 等官方仓库还没有的版本。

PPA 就像是别人开的小摊位,卖的是他们自己编译打包的软件。你可以信任并从那买,而不必等官方超市上架。

使用步骤:

  • 添加PPA:sudo add-apt-repository ppa:<用户名>/<仓库名>;sudo apt update
  • 安装软件:sudo apt install <软件包名>
  • 删除PPA:sudo add-apt-repository -r ppa:<用户名>/<仓库名>;sudo apt update

示例 1:安装新版 Python,Ubuntu 自带的 Python 可能偏旧,如果想安装较新的 Python(比如 Python 3.12)

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12

示例 2:安装新版 FFmpeg,官方仓库里的 FFmpeg 版本可能很老,如果你需要更新:

sudo add-apt-repository ppa:savoury1/ffmpeg4
sudo apt update
sudo apt install ffmpeg

示例 3:移除 PPA 安装的软件并恢复官方版本,假如你安装了 PPA 版本的 VLC,后来想回退到 Ubuntu 官方版本:

sudo add-apt-repository -r ppa:videolan/stable-daily
sudo apt update
sudo apt install ppa-purge
sudo ppa-purge ppa:videolan/stable-daily

官方仓库

组件 维护者 软件许可 举例 默认启用?
main Ubuntu 官方团队 100% 开源、免费 bash、apt、systemd ✅ 默认启用
universe 社区志愿者维护 开源,但官方不保证支持 vim、ffmpeg ❌ 默认关
restricted 官方维护,但包含闭源驱动 通常是硬件驱动 NVIDIA/AMD 驱动 ❌ 默认关
multiverse 可能受限(版权/专利) 不完全自由,可能有法律限制 MP3 解码器、某些编解码器 ❌ 默认关
sudo add-apt-repository universe
sudo add-apt-repository restricted
sudo add-apt-repository multiverse
sudo apt update

这几条命令分别启用:

  • universe → 更多社区软件(开源,但官方不负责)
  • restricted → 闭源驱动(主要是显卡、WiFi 驱动)
  • multiverse → 可能有版权问题的软件(比如 DVD 解码器、某些编解码器)

总结

  • apt update → 更新索引
  • apt upgrade/full-upgrade → 升级系统
  • apt install/remove/purge → 安装和卸载软件
  • apt search/show → 查询软件
  • apt autoremove/clean/autoclean → 清理

发表你的看法

\t