查看有关 PPA 的信息的命令行方式?

pil*_*cks 5 command-line ppa

假设我添加了一个名为 的存储库ppa:something/amazing,但我忘记了 PPA 的全部内容,并且 PPA 的名称太模糊或者 PPA 非常大。我想在不使用 Internet 浏览器和访问 Launchpad 网站的情况下检查它是什么。有没有办法从命令行查看有关 PPA 的信息?我主要有兴趣查看 PPA 中包含的软件包列表。

iBe*_*eve 3

这是一个基于此答案的 shell 脚本:

#!/bin/bash

if [ $# -eq 1 ]; then
    CMD=s
    PPA=$1  
else
    CMD=$1
    PPA=$2
fi

case "$CMD" in
"-f" | "f")
    cat $(echo "$PPA"|sed -e 's!/!_!' -e 's!^ppa:!/var/lib/apt/lists/ppa.launchpad.net_!' -e 's!$!_ubuntu_dists_'$(lsb_release -sc)'_main_binary-'$(dpkg --print-architecture)'_Packages!') | less
    ;;
"-s" | "s")
    cat $(echo "$PPA"|sed -e 's!/!_!' -e 's!^ppa:!/var/lib/apt/lists/ppa.launchpad.net_!' -e 's!$!_ubuntu_dists_'$(lsb_release -sc)'_main_binary-'$(dpkg --print-architecture)'_Packages!') | grep 'Package:' | sed 's/Package: //'
    ;;
*)
    echo "Usage: $0 [mode] PPA"
    echo ""
    echo "mode:"
    echo "  -f:  Displays detailed information about each package in the PPA"
    echo "  -s:  Displays only the names of the packages in the PPA"
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

将其保存到文件中,例如ppa-info,并确保它位于系统路径内并且可执行。

当您仅使用 PPA 的名称(或选项-s)运行此命令时,它只会打印 PPA 中所有包的名称列表。但是,如果您使用选项运行它-f,它将打印有关 PPA 中所有包的详细信息,就像原始答案中一样。