使用 pacman 获取有关已安装和远程软件包的信息

Mat*_*aun 25 arch-linux pacman

pacman在 Arch Linux 上使用5.0.1,我想获取有关安装在我的机器上的软件包以及远程存储库中的软件包的信息。

信息应包括包的描述、大小和构建日期。

Mat*_*aun 38

使用 --info

vi获取其本地安装包使用信息为例

pacman -Q --info vi
Run Code Online (Sandbox Code Playgroud)

这产生

Name            : vi
Version         : 1:070224-2
Description     : The original ex/vi text editor
Architecture    : x86_64
URL             : http://ex-vi.sourceforge.net/
Licenses        : custom:ex
Groups          : base
Provides        : None
Depends On      : ncurses
Optional Deps   : s-nail: used by the preserve command for notification [installed]
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 290.00 KiB
Packager        : Evangelos Foutras <evangelos@foutrelis.com>
Build Date      : Sun 06 Sep 2015 09:34:15 PM CEST
Install Date    : Mon 03 Oct 2016 07:18:13 PM CEST
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature
Run Code Online (Sandbox Code Playgroud)

或者使用较短的-i选项:

pacman -Qi vi
Run Code Online (Sandbox Code Playgroud)

为了只获取特定包属性的值,让我们说描述,有很好的旧 grep 来过滤输出:

pacman -Qi vi | grep -Po '^Description\s*: \K.+'
Run Code Online (Sandbox Code Playgroud)

哪个打印

原始的 ex/vi 文本编辑器

对上述grep命令的简短说明:

  • -P 激活 Perl 兼容的正则表达式
  • -o 只打印匹配行的匹配部分,而不是整行
  • ^Description\s*: \K.+是正则表达式:该行必须以“描述”开头,后跟任意数量的空白字符,后跟“:”。然后:
    • \K重置比赛的起点。以“Description”开头的匹配字符不包含在最终匹配中
    • 最后,.+匹配之后的所有内容,即包描述

这是关于如何从行中删除已知前缀的一般答案


远程存储库获取信息的工作方式类似:

pacman -Si vi
Run Code Online (Sandbox Code Playgroud)

当您只知道包名称的一部分时,请使用以下-s选项:

pacman -Ss jdk
Run Code Online (Sandbox Code Playgroud)

要找出哪些包依赖于某个包——例如,如果你想知道为什么一个包存在于你的系统上——你可以使用pactree

pactree -r intel-media-driver
Run Code Online (Sandbox Code Playgroud)

这产生了一个很好的依赖树:

intel-media-driver
??intel-media-sdk
  ??ffmpeg
    ??electron6
    ? ??code
    ??firefox
    ??freerdp
    ? ??wlroots
    ?   ??sway
    ??qt5-webengine
    ? ??python2-pyqtwebengine
    ?   ??calibre
    ??unpaper
    ? ??ocrmypdf
    ??vlc
    ??wf-recorder-git
Run Code Online (Sandbox Code Playgroud)