从零开始
目录

02 · 操作系统 · Linux

Linux 包管理

本篇你将学到

  • 软件包和软件源是什么
  • Ubuntu 上用 apt 装、更新、卸载软件
  • 其他发行版的 dnf、pacman 长什么样
  • Snap、Flatpak 和 deb 有什么不同
  • 下载慢时怎么换国内镜像

软件包和软件源:Linux 的“应用商店仓库”

一个程序要正常运行,往往需要成百上千个文件,各自放到正确的位置。Ubuntu 把一个程序需要的东西打成一个软件包(package),里面还带着安装脚本,负责把文件放好、配置好[1]。

很多程序会共用一些零件,这些零件单独做成包。一个包需要另一个包才能运行,这就叫依赖[1]。

软件源(repository,仓库)就是存放这些软件包的服务器。包管理器会去软件源查目录、下载,自动把依赖一起装上。跟 Mac 上的 Homebrew 是一个思路(见 02-13):你说要什么,它负责“送货上门”。

Ubuntu:apt

日常最常用的几条命令[2]:

命令 作用
sudo apt update 从所有软件源下载最新的软件目录(不装任何东西)
sudo apt upgrade 把已装的软件全部升级到目录里的新版本
apt search 关键词 在软件目录里搜索
sudo apt install 包名 安装
sudo apt remove 包名 卸载
sudo apt autoremove 清理当初作为依赖装上、现在没人用的包

几点说明:

  • 先 update,再 upgrade 或 install。update 只是“刷新菜单”,拿到最新目录,后面的操作都基于这份目录[2]。
  • 安装、卸载、升级会改动整个系统,所以要加 sudo(见 02-17)。搜索不用。
  • autoremove 列出要删的包时看一眼,别把你想留的软件也删了[2]。
  • 不想敲命令的话,Ubuntu 自带图形化的“App Center”(应用中心),搜索后点“安装”,输入密码即可[3]。

其他发行版

不同发行版的命令不一样,但概念相同:

发行版 安装 全部升级
Ubuntu、Debian、Mint sudo apt install 包名 sudo apt update && sudo apt upgrade
Fedora sudo dnf install 包名[4] sudo dnf upgrade[5]
Arch Linux sudo pacman -S 包名[6] sudo pacman -Syu[6]

Arch 只支持整个系统一起升级,不支持只升级一部分[6]。

Snap、Flatpak 和 deb

除了传统的 deb 包,Ubuntu 上还有 snap:

deb snap
版本 大多跟着 Ubuntu 版本走,LTS 上可能偏旧[1] 独立于 Ubuntu 版本,总是作者发布的最新版[1]
更新 安全更新默认自动安装[1] 默认每天自动更新[1]
权限 总是能访问全部资源[1] 通常在沙盒里,可以限制它能访问什么[1]

App Center 默认优先显示 snap[1]。沙盒好比给应用一个单独的小房间,它想用摄像头、文件等,要经过你同意。

Flatpak 是另一套跨发行版的应用分发方式,同样在沙盒里运行,可以用命令或 GNOME Software 等图形工具安装[7]。

第三方软件源要小心:它们不经 Ubuntu 检查,可能包含有害软件;启用一个源,等于把系统的一部分控制权交给源的主人。能用 snap 的话,优先用 snap[8]。

换国内镜像

默认的软件源在国外,有时很慢。可以换成国内大学的镜像。以中国科学技术大学镜像站为例,它推荐新手用图形界面[9]:

  1. 打开“软件和更新”。
  2. 在“下载自”里选“其他站点”。
  3. 在“中国”下面选 mirrors.ustc.edu.cn,关闭窗口,按提示重新载入(相当于 sudo apt update)。

手动修改的话,Ubuntu 24.04 起软件源配置在 /etc/apt/sources.list.d/ubuntu.sources,把里面的 archive.ubuntu.com 换成镜像地址即可[9]。注意:

  • 改之前先备份这个文件[9]。
  • 镜像同步有延迟,镜像站不建议替换安全更新源(security)[9]。
  • Arm 版 Ubuntu(比如 Apple 芯片 Mac 的虚拟机里)用的是 ubuntu-ports,地址不同,按镜像站对应页面操作[9]。

动手试一试

模拟的 Ubuntu 终端,命令不会真的执行。先故意不加 sudo 试一次,再按正确顺序更新、安装、运行、升级、卸载。

模拟实操 · apt 装软件纯模拟,命令不会真的执行

    可以直接打字,也可以点上面的命令按钮把命令填进去,再按回车(或点“运行”)。↑ 键翻出上一条命令。输入 help 看看支持哪些命令。

    小结

    • 软件包 = 程序 + 安装脚本;依赖由包管理器自动处理;软件源是存包的仓库。
    • Ubuntu:先 sudo apt update,再 install / upgrade / remove。
    • Fedora 用 dnf,Arch 用 pacman -S 和 pacman -Syu。
    • snap 新、自动更新、有沙盒;deb 跟系统版本走。第三方源要谨慎。
    • 下载慢:在“软件和更新”里选国内镜像,安全更新源保持官方。

    参考资料

    1. [1]Snap and deb packages · Ubuntu Desktop documentation
      https://documentation.ubuntu.com/desktop/en/latest/explanation/snap-and-deb-packages/
    2. [2]apt(8) · Ubuntu Manpages (26.04 LTS resolute)
      https://manpages.ubuntu.com/manpages/resolute/en/man8/apt.8.html
    3. [3]Install an application · Ubuntu Desktop documentation
      https://documentation.ubuntu.com/desktop/en/latest/how-to/software/install-an-application/
    4. [4]Install Command · DNF5 documentation
      https://dnf5.readthedocs.io/en/latest/commands/install.8.html
    5. [5]Upgrade Command · DNF5 documentation
      https://dnf5.readthedocs.io/en/latest/commands/upgrade.8.html
    6. [6]pacman · ArchWiki
      https://wiki.archlinux.org/title/Pacman
    7. [7]Introduction to Flatpak · Flatpak documentation
      https://docs.flatpak.org/en/latest/introduction.html
    8. [8]Add a software repository · Ubuntu Desktop documentation
      https://documentation.ubuntu.com/desktop/en/latest/how-to/software/add-a-software-repository/
    9. [9]Ubuntu 源使用帮助 · USTC Mirror Help(中国科学技术大学 LUG)
      https://mirrors.ustc.edu.cn/help/ubuntu.html