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