wypisz wszystkie repozytoria ppa dodane do mojego systemu

21

Jak mogę wyświetlić listę wszystkich repozytoriów PPA dodanych do mojego systemu i zapisać je w .txtpliku, aby nie chciałem tracić czasu na szukanie PPA dla nowych instalacji i mogę po prostu wybrać wiersz PPA w moim .txtpliku i dołączyć do polecenia sudo add-apt-repository? Czy są też inne sposoby na zrobienie tego, w którym nie chcę ręcznie dawać kluczy gpg?

supremum
źródło

Odpowiedzi:

19

Od Jak mogę uzyskać listę wszystkich repozytoriów i PPA z wiersza poleceń w skrypcie instalacyjnym?

Część odpowiedzi wydaje się mieć to, czego szukasz:

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

Zapisz to jako listppa.sh

listppa.sh > installppa.sh

Spowoduje to utworzenie skryptu, który można gdzieś wykonać kopię zapasową, a następnie uruchomić, aby dodać pliki PPA w nowej instalacji, po prostu uruchamiając:

installppa.sh
NGRhodes
źródło
20

Dla tych, którzy chcą tylko sprawdzić zainstalowane PPA bez faktycznego robienia z nimi automatycznie, możesz:

$ apt-cache policy

W moim systemie oto trochę tego, co pokazuje:

% 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
...

Cytowany stąd :

[ apt-cache policy] pobiera priorytety powiązane z każdym zasobem repozytorium. Z jego danych wyjściowych można wywnioskować listę wszystkich dostępnych repozytoriów i umów PPA.

Źródło: http://ask.xmodulo.com/list-installed-repositories-ppas-ubuntu.html

Romário
źródło
5
Jest to przyjemne i proste, ale dane wyjściowe obejmują również podstawowe repozytoria Ubuntu. Jeśli masz zamiar zrobić, że można także korzystać z pełnej, końcowe polecenie używane w linku, który podałeś jako źródło: apt-cache policy | grep http | awk '{print $2 $3}' | sort -u. Rezultat jest lepiej zorganizowany i łatwiejszy dla oczu.
pjd
Uwaga: apt-cache policypokaże repo dopiero po uruchomieniu apt-get update. Jeśli właśnie dodałeś repozytorium z add-apt-repository, nie pojawi się z nim, apt-cache policydopóki nie uruchomisz apt-get update.
wisbucky
0

Z mojej odpowiedzi na temat: Jak uzyskać listę wszystkich repozytoriów i umów PPA z wiersza poleceń w skrypcie instalacyjnym?

Wyświetl listę PPA w ppa:USER/REPOformacie:

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:'

Wyświetl wszystkie repozytoria, w tym PPA, w ppa:USER/REPOformacie:

Po prostu usuń ostatni grep(nie zapomnij usunąć |\poprzedniego wiersza po sedpoleceniu).

Zobacz moją odpowiedź na inne pytanie, aby uzyskać pełne skrypty, które możesz zapisać i użyć, w tym wygenerować skrypt instalacyjny.

ejm
źródło