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

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

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

答案1

假设您已经下载了软件包列表(apt-get update将会这样做),您可以在那里看到该 PPA 为您的发行版提供了哪些软件包。

如果你想要一些 shell 代码,这应该可以解决问题:

PPA=ppa:something/amazing
less $(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!')

答案2

下面是一个基于这个答案

#!/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

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

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

相关内容