Давайте представим, что у меня есть добавленное хранилище под названием ppa:something/amazing
, но я забыл, что такое PPA, и название PPA слишком расплывчато, или PPA очень большой. Я хочу проверить, что это такое, не используя интернет-браузер и не заходя на сайт Launchpad. Есть ли способ просмотреть информацию о PPA из командной строки? Я в основном заинтересован в просмотре списка пакетов, содержащихся в PPA.
Вот сценарий оболочки на основе этого ответа:
#!/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, так же, как в исходном ответе.
Предполагая, что вы загрузили список пакетов (apt-get update
сделает это), вы можете увидеть, какие пакеты доступны для вашего дистрибутива из этого PPA.
Если вам нужен какой-то шелл-код, это должно сработать:
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!')