перечислите все репозитории ppa, добавленные в мою систему

21

Как я могу перечислить все репозитории ppa, добавленные в мою систему, и сохранить их в .txtфайл, чтобы я не хотел тратить свое время на поиск ppa для новых установок, и я могу просто выбрать строку ppa в моем .txtфайле и добавить в команду sudo add-apt-repository? Также есть ли другие способы сделать это, в которых я не хочу давать ключи gpg вручную?

супремумом
источник

Ответы:

19

Из Как я могу получить список всех репозиториев и PPA из командной строки в сценарий установки?

Часть ответа, похоже, имеет то, что вы ищете:

#! /bin/sh 
# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in `find /etc/apt/ -name \*.list`; do
    grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        echo sudo apt-add-repository ppa:$USER/$PPA
    done
done

Сохранить это как listppa.sh

listppa.sh > installppa.sh

Это создает скрипт, который вы можете создать резервную копию где-нибудь, а затем запустить, чтобы добавить ваши PPA на новую установку, просто запустив:

installppa.sh
NGRhodes
источник
20

Для тех, кто просто хочет проверить установленные PPA, не делая с ними ничего автоматически, вы можете сделать:

$ apt-cache policy

В моей системе вот что показано:

% apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main Translation-en
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-ubuntu-toolchain-r-test,a=precise,n=precise,l=Toolchain test builds,c=main
     origin ppa.launchpad.net
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-ubuntu-toolchain-r-test,a=precise,n=precise,l=Toolchain test builds,c=main
     origin ppa.launchpad.net
 500 http: ppa.launchpad.net/rael-gc/scudcloud/ubuntu/ precise/main Translation-en
 500 http: ppa.launchpad.net/rael-gc/scudcloud/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-rael-gc-scudcloud,a=precise,n=precise,l=ScudCloud - Linux client for Slack,c=main
     origin ppa.launchpad.net
...

Цитируется здесь :

[ apt-cache policy] возвращает приоритеты, связанные с каждым ресурсом репозитория. По его выводу вы можете вывести список всех доступных репозиториев и PPA.

Источник: http://ask.xmodulo.com/list-installed-repositories-ppas-ubuntu.html

Romário
источник
5
Это красиво и просто, однако вывод также включает базовые репозитории Ubuntu. Если вы собираетесь делать , что вы можете также использовать полную, окончательную команду , используемую в ссылке , которую вы дали в качестве источника: apt-cache policy | grep http | awk '{print $2 $3}' | sort -u. Вывод лучше организован и проще на глазах.
ПСР
Примечание: apt-cache policyрепо будут показаны только после того, как вы запустите apt-get update. Если вы только что добавили репо add-apt-repository, он не будет отображаться до apt-cache policyтех пор, пока вы не запустите apt-get update.
Висбуки
0

Из моего ответа на Как я могу получить список всех репозиториев и PPA из командной строки в сценарий установки?

Список PPA в ppa:USER/REPOформате:

grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
  cut -f2- -d: |\
  cut -f2 -d' ' |\
  sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g' |\
  grep '^ppa:'

Перечислите все репозитории, включая PPA, в ppa:USER/REPOформате:

Просто удалите последний grep(не забудьте удалить |\из предыдущей строки после sedкоманды).

Смотрите мой ответ на другой вопрос для полных сценариев, которые вы можете сохранить и использовать, включая создание сценария установки.

EJM
источник