Pacman的基本使用

2022年11月06日我在处理ArchLinux的自动配置脚本时遇到了问题,需要对自动安装必备软件的函数进行升级维护,但是仔细分析后发现其实pacman已经做到了,需要我设置的只是将输出结果导入到/dev/null而已。同时本文也是为那些刚进入到ArchLinux的朋友提供一个管理软件的说明。

安装软件

命令 使用说明
pacman -S (软件名) 安装软件,若有多个软件包,空格分隔
pacman -S --needed (软件名) 安装软件,若存在,不重新安装最新的软件
pacman -Sy (软件名) 安装软件前,先从远程仓库下载软件包数据库
pacman -Sv (软件名) 输出操作信息后安装
pacman -Sw (软件名) 只下载软件包,而不安装
pacman -U (软件名.pkg.tar.gz) 安装本地软件包
pacman -U (http://www.xxx.com/xxx.pkg.tar.xz) 安装一个远程包

卸载软件

命令 使用说明
pacman -R (软件名) 只卸载软件包不卸载依赖的软件
pacman -Rv (软件名) 卸载软件,并输出卸载信息
pacman -Rs (软件名) 卸载软件,并同时卸载该软件的依赖软件
pacman -Rsc (软件名) 卸载软件,并卸载依赖该软件的程序
pacman -Ru (软件名) 卸载软件,同时卸载不被任何软件所依赖

搜索软件

命令 使用说明
pacman -Ss (关键字) 在仓库搜索包含关键字的软件包
pacman -Sl 显示软件仓库所有软件的列表
pacman -Qs (关键字) 搜索已安装的软件包
pacman -Qu 列出可升级的软件包
pacman -Qt 列出不被任何软件要求的软件包
pacman -Q (软件名) 查看软件包是否已安装
pacman -Qi (软件包) 查看某个软件包详细信息
pacman -Ql (软件名) 列出软件包所有文件安装路径

软件包组

命令 使用说明
pacman -Sg 列出软件仓库上所有软件包组
pacman -Qg 列出本地已经安装的软件包组和子软件包
pacman -Sg (软件包组) 查看软件包组所包含的软件包
pacman -Qg (软件包组) 查看软件包组所包含的软件包

更新系统

命令 使用说明
pacman -Sy 从服务器下载最新的软件包数据库到本地
pacman -Su 升级所有已安装的软件包
pacman -Syu 升级整个系统

清理缓存

命令 使用说明
pacman -Sc 清理未安装的软件包文件
pacman -Scc 清理所有的缓存文件

问题汇总

  1. 由于改用pacman来管理texlive,所以在更新时就会有相应的texlive更新,但是今天遇到了麻烦,描述如下:
1
2
3
4
5
6
7
8
9
10
11
12
arch# pacman -Syu
:: 正在同步软件包数据库...
core 已经是最新版本
extra 已经是最新版本
community 已经是最新版本
:: 正在进行全面系统更新...
正在解析依赖关系...
正在查找软件包冲突...
:: texlive-langchinese 与 texlive-local-ctex 有冲突。删除 texlive-local-ctex 吗? [y/N] y
:: texlive-core 与 texlive-local-xcolor 有冲突。删除 texlive-local-xcolor 吗? [y/N] y
错误:无法准备事务处理 (无法满足依赖关系)
:: 安装 texlive-core (2023.66587-1) 破坏依赖 'texlive-core<2023' (texlive-localmanager-git 需要)

解决方案为:

1
sudo pacman -Rdd texlive-localmanager-git texlive-localmanager-git && sudo pacman -Syu

请参考文章:ArchLinux近期更新依赖问题解决