pacman

pacman

1- pacman

pacman 是 Arch Linux 及其衍生发行版的默认包管理器,主要功能是简化软件包的管理——无论是来自官方仓库,还是用户自行构建的软件包。

[!note] 说明
文中的「包名」「关键字」等均为占位符,使用时请替换为实际的软件包名称;命令直接在终端中执行。

2- 安装软件包

2.1- 安装单个软件包

pacman -S 包名

例如,安装 Firefox:

pacman -S firefox

2.2- 安装多个软件包

pacman -S 包名1 包名2 包名3

3- 更新系统

3.1- 同步包数据库并更新系统

pacman -Syu

这个命令会首先同步本地包数据库,然后更新所有已安装的软件包。

[!warning] 注意
不建议单独运行 pacman -Sy:它只同步数据库而不更新软件包,可能导致「部分升级」(partial upgrade)引发依赖问题。日常请始终使用 pacman -Syu。

3.2- 仅同步包数据库

pacman -Sy

3.3- 仅更新已安装的软件包

pacman -Su

4- 卸载软件包

4.1- 卸载单个软件包

pacman -R 包名

这个命令只会删除指定的软件包,不会删除其依赖。

4.2- 卸载软件包及其依赖

pacman -Rs 包名

这个命令会删除指定的软件包,以及不再被其他软件包需要的依赖。

4.3- 跳过依赖检查卸载(谨慎使用)

pacman -Rd 包名

跳过依赖检查直接卸载,可能破坏依赖关系,仅在某些特殊场景下使用。

5- 查询软件包

5.1- 查询所有已安装的软件包

pacman -Q

5.2- 查询特定软件包是否已安装

pacman -Q 包名

已安装则输出包名与版本号;未安装则提示未找到该软件包。

5.3- 搜索仓库中的可用软件包

pacman -Ss 关键字

5.4- 显示软件包信息

查看仓库中可用软件包的信息:

pacman -Si 包名

查看已安装软件包的信息:

pacman -Qi 包名

5.5- 搜索已安装的软件包

pacman -Qs 关键字

6- 清理系统

6.1- 清理未使用的包缓存

pacman -Sc

删除缓存中已不再安装的软件包文件。

6.2- 清理所有包缓存

pacman -Scc

清空整个缓存目录,同时删除不再需要的同步数据库。

7- 本地包管理

7.1- 安装本地包

pacman -U /path/to/package.pkg.tar.zst

7.2- 降级软件包

pacman -U /path/to/older/package.pkg.tar.zst

[!warning] 注意
降级属于「部分降级」,可能引发依赖问题,请先确认目标版本与当前系统兼容。

8- 其他常用命令

8.1- 显示帮助信息

pacman -h

8.2- 显示 pacman 版本

pacman -V

9- 新手常忽视的重要命令

9.1- 仅下载软件包但不安装

pacman -Sw 包名

当你需要提前下载软件包以便离线安装时非常有用。

9.2- 列出系统中的孤立包

pacman -Qdt

孤立包(orphan)指不再被任何已安装软件包依赖的软件包,清理它们可以释放磁盘空间。

9.3- 彻底卸载软件包及其依赖

pacman -Rns 包名

卸载软件包,同时删除不再被其他已安装软件包依赖的依赖项及其配置文件。

9.4- 查询某个文件属于哪个软件包

pacman -Qo /path/to/file

当你发现系统中有一个文件、却不确定它由哪个软件包安装时,可以用这个命令查询。

9.5- 查询哪个软件包提供某个文件

pacman -F 文件名

需要先运行 pacman -Fy 同步文件数据库。当你需要某个特定文件、但不知道哪个软件包提供它时,可以用这个命令查询。

9.6- 只安装缺失的软件包

pacman -S --needed 包名

已经是最新版本的软件包不会被重新安装。

9.7- 将已安装的软件包标记为依赖包

pacman -D --asdeps 包名

当你手动安装了一个包、但希望把它标记为依赖包以便更好地管理依赖关系时,可以使用这个命令(配合 --asexplicit 可反向标记为显式安装)。

10- 图表和示例

10.1- 流程图:pacman -Syu 执行流程

graph TD;
    A[开始] --> B[同步包数据库]
    B --> C[更新所有已安装的软件包]
    C --> D[完成]

10.2- 常用命令比较

命令 功能描述 示例命令
pacman -S 安装软件包 pacman -S firefox
pacman -R 卸载软件包 pacman -R firefox
pacman -Q 查询已安装的软件包 pacman -Q firefox
pacman -Ss 搜索仓库中的软件包 pacman -Ss firefox
pacman -Syu 同步数据库并更新系统 pacman -Syu

10.3- 分步拆解 pacman -Syu

# 同步包数据库并更新系统
pacman -Syu

# 1. 同步包数据库
pacman -Sy

# 2. 更新所有已安装的软件包
pacman -Su

10.4- 安装软件包后的系统结构

graph LR;
    A[系统] --> B[软件包仓库]
    B --> C[安装软件包]
    C --> D[系统中已安装的软件包]

10.5- 磁盘空间分配示例

pie
    title 磁盘空间分配
    "系统文件" : 40
    "用户文件" : 30
    "已安装软件包" : 20
    "空闲空间" : 10