![通过命令行方式查看有关 PPA 的信息?](https://linux22.com/image/832118/%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%96%B9%E5%BC%8F%E6%9F%A5%E7%9C%8B%E6%9C%89%E5%85%B3%20PPA%20%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%9F.png)
假设我添加了一个名为的存储库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 中所有软件包的详细信息,就像在原始答案中一样。