Frage Wie kann ich eine Liste aller Repositorys und PPAs von der Befehlszeile in ein Installationsskript bekommen?


Ich weiß wie listet alle Pakete auf auf meinem System installiert.

Aber wie kann ich eine Liste aller Repositorys und PPAs in ein Skript bekommen, das ich auf einem neuen Rechner ausführen kann, um das Repository-Setup einschließlich der Schlüssel zu replizieren?

Ich weiß, dass ich nachsehen kann /etc/apt/sources.list und /etc/apt/sources.list.d, aber ich suche nach einem Weg generieren ein Skript, das alle ausführt apt-add-repository Befehle auf einem neuen System (das sortiert alle Schlüssel erhalten).

Irgendwelche Ideen?


184
2018-06-10 11:30


Ursprung


Mögliches Duplikat: askubuntu.com/questions/28644/how-can-i-backup-my-ppas - Glutanimate
Eigentlich eine Obermenge. Meine Frage bezieht sich auf ein Skript, das das Wiederherstellungsscript generiert und nicht nur ein Backup - stwissel


Antworten:


Danke für die Hinweise. Mit ein wenig Aufräumen bekam ich ein Skript, das die PPAs auflistet, aber kein anderes Repository:

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

Wenn Sie es mit anrufen listppa > installppa.sh Sie erhalten ein Skript, das Sie auf einem neuen Computer kopieren können, um alle PPA neu zu installieren.

Nächster Stopp: Mach das für die anderen Repositories:

#! /bin/sh
# Script to get all the PPA installed on a system
for APT in `find /etc/apt/ -name \*.list`; do
    grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
        HOST=`echo $ENTRY | cut -d/ -f3`
        USER=`echo $ENTRY | cut -d/ -f4`
        PPA=`echo $ENTRY | cut -d/ -f5`
        #echo sudo apt-add-repository ppa:$USER/$PPA
        if [ "ppa.launchpad.net" = "$HOST" ]; then
            echo sudo apt-add-repository ppa:$USER/$PPA
        else
            echo sudo apt-add-repository \'${ENTRY}\'
        fi
    done
done

Dies sollte den Trick machen. Ich brauchte eine Frage auf Superuser um die richtige Regex herauszufinden.


89
2018-06-10 13:49



In deinem grep -o Beispiel, die \`  im [a-z0-9\-] tut nicht, was Sie erwarten. Es entspricht tatsächlich einem Literal umgekehrter Schrägstrich. Das musst du nicht Flucht das - wenn es am Anfang oder am Ende der [] Liste; Eigentlich kannst du nicht Flucht es! .. In diesem Fall die \` (wahrscheinlich) wird kein Problem verursachen, weil Sie (hoffentlich) nicht auf eine umgekehrter Schrägstrich in dem deb Eintrag. - Peter.O
Beachten Sie, dass PPA-Namen Punkte enthalten können, daher denke ich, dass Sie Ihre Regexp ändern möchten http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+ - kynan
Nein, Sie möchten die Regex in ändern [[:graph:]]  Anstatt von [a-z...blah.anything] weil das mit jedem alphanumerischen + Interpunktionszeichen übereinstimmt - das ist, woraus die PPA-Namen bestehen. - MichalH
Ich nehme an, du solltest mit einschließen deb Wort am Anfang jeder Repository-Zeile, falls nicht angegeben ppa:$USER/$PPA bilden. - jarno
@stwissel irgendeinen besonderen Grund den du benutzt findest und dann grep? Sie können leicht einen Glob, den die Shell analysiert, machen und ihn an grep übergeben. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; done Beachten Sie, dass Ihnen, wie geschrieben, der Name der Datei angezeigt wird, aus der die einzelnen Einträge stammen. Sie müssen also vom Anfang des Ergebnisses bis zum ersten Doppelpunkt schneiden, aber das ist nicht zu schwierig. Vielleicht möchten Sie es auch weitergeben uniq wenn Sie nicht mehrere Einträge für dieselbe Quelle wünschen (zB wenn Sie Google Chrome Stable / Beta / Dev installiert haben). - dragon788


Sie können alles zeigen mit:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*

80
2018-06-10 12:52



Wie wäre es mit egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/* Linien auskommentiert und Leerzeilen entfernen?
Könntest du bitte den Gebrauch erklären? ^ nach grep im grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
@ vasa1 Das Caret ^ und das Dollarzeichen $ sind Metazeichen, die jeweils mit der leeren Zeichenfolge am Anfang und Ende einer Zeile übereinstimmen. - wojox
Ich benutze grep ^ [^ #] ... - Es verbirgt alle auskommentierten Quellen automatisch - Ross Aiken
Wenn Sie nichts herausfiltern wollen, wäre es nicht einfacher, einfach zu rennen cat /etc/apt/sources.list /etc/apt/sources.list.d/* - jbo5112


Ich bin überrascht, dass die einfachste, aber effektivste Möglichkeit, alle aktivierten Binärsoftwarequellen zusammen mit der angegebenen Datei zu erhalten, noch nicht veröffentlicht wurde:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

Von allen verarbeiteten Dateien wird dies jede Zeile beginnend mit drucken deb. Dies schließt auskommentierte Zeilen sowie deb-src Zeilen zum Aktivieren von Quellcode-Repositories.

Es sucht wirklich nur alle *.list Dateien, die von analysiert werden aptaber z.B. Nein *.list.save Dateien für Backup oder andere mit illegalen Namen.


Wenn Sie eine kürzere, aber möglicherweise nur in 99,9% aller Fälle korrekte Ausgabe wünschen, die möglicherweise zu viele Dateien durchsuchen (enthält alle /etc/apt/sources.list* Dateien und Verzeichnisse, nicht nur /etc/apt/sources.list und `/etc/apt/sources.list.d/*) können Sie auch Folgendes verwenden:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list*

Wenn keine Dateien vorhanden sind, die nicht vorhanden sein sollten, ist die Ausgabe identisch.


Eine Beispielausgabe auf meiner Maschine wäre dies:

/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps

Wenn Sie eine schönere Ausgabe wünschen, lassen Sie es uns durchgehen sed:

grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'

Und wir werden das sehen:

deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps

14
2018-03-04 08:57



Nach der akzeptierten Antwort scheint es, dass OP PPAs in der ppa:<user>/<project> bilden. - muru
Die Frage fragt eigentlich nach einem Skript, das alle Repositories installiert / aktiviert. Aber der Titel der Frage besteht nur darin, sie aufzulisten. Auch die zweithöchste Bewertung listet sie nur auf, aber sie listet viel zu viel auf. - Byte Commander
Nett, aber ich war bereits auf den neuesten Stand. : D - muru


Ich benutze diesen Befehl, um alle konfigurierten Softwarequellen (Repositories) aufzulisten, einschließlich momentan deaktivierter:

cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done

Ich benutze dies hauptsächlich für die Fehlersuche; Dies kann sicherlich in Skripts integriert werden, aber Sie möchten vielleicht einschränken /etc/apt/sources.list.d/* zu /etc/apt/sources.list.d/*.list Sie erhalten also nur aktuell aktivierte Softwarequellen.


4
2018-06-12 08:57



Danke für die Rückmeldung. cat listet die Dateien so auf, wie sie sind, also müsste ich sie manuell bearbeiten generieren ein Skript (wie in der Frage angegeben). Die Herausforderung mit Repositories: Wenn Sie nur die Dateien aus / etc / apt kopieren, erhalten Sie nicht die Repository-Schlüssel. Deshalb möchte ich ein Skript, das sie für uns holt - stwissel


Führen Sie den folgenden Befehl aus:

apt-cache policy | grep http | awk '{print $2 $3}' | sort -u

Quelle


4
2018-06-12 11:43





Also, ein bisschen graben, haben wir AptPkg::Class.

Also benutzen perl wir können so etwas einfach machen ..

perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less

Dies bringt uns eine Liste aller AptPkg::Class::PkgFile Pakete. Sie könnten wahrscheinlich das generieren apt-add-repository Befehle damit.


2
2017-11-14 19:48





https://repogen.simplilinux.ch/ gibt Ihnen eine Liste aller PPAs für Ihre Version von Ubuntu. Hier ist eine generierte Liste ohne Quelldateien und kein Samsung Drucker ppa:

#------------------------------------------------------------------------------#
#                            OFFICIAL UBUNTU REPOS                             #
#------------------------------------------------------------------------------#


###### Ubuntu Main Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse 
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse 

###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu yakkety partner

#------------------------------------------------------------------------------#
#                           UNOFFICIAL UBUNTU REPOS                            #
#------------------------------------------------------------------------------#


###### 3rd Party Binary Repos

#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main

#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Run this command: sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main

#### Google Chrome Browser - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

#### Google Earth - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -
deb [arch=amd64] http://dl.google.com/linux/earth/deb/ stable main

#### Highly Explosive PPA - https://launchpad.net/~dhor/+archive/myway
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main

#### JDownloader PPA - https://launchpad.net/~jd-team
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main

#### Lazarus - http://www.lazarus.freepascal.org/
## Run this command:  gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F  && gpg --export --armor 0F7992B0  | sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe

#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main

#### MEGA Sync Client - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./

#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Run this command: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./

#### Mozilla Daily Build Team PPA - http://edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main

#### muCommander - http://www.mucommander.com/
## Run this command: sudo wget -O - http://apt.mucommander.com/apt.key | sudo apt-key add - 
deb http://apt.mucommander.com stable main non-free contrib  

#### Opera - http://www.opera.com/
## Run this command: sudo wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free

#### Oracle Java (JDK) Installer PPA - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/java/ubuntu yakkety main

#### PlayDeb - http://www.playdeb.net/
## Run this command: wget -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games

#### SABnzbd PPA - http://sabnzbd.org/
## Run this command:  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main

#### SimpleScreenRecorder PPA - http://www.maartenbaert.be/simplescreenrecorder/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main

#### Steam for Linux - http://store.steampowered.com/about/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [arch=i386] http://repo.steampowered.com/steam/ precise steam

#### Syncthing - https://syncthing.net/
## Run this command: curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release

#### Tor: anonymity online - https://www.torproject.org
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main

#### Unsettings PPA - http://www.florian-diesch.de/software/unsettings/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main

#### VirtualBox - http://www.virtualbox.org
## Run this command: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox_2016.asc -O- | sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib

#### Webmin - http://www.webmin.com
## Run this command: wget http://www.webmin.com/jcameron-key.asc -O- | sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib

#### WebUpd8 PPA - http://www.webupd8.org/
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main

#### Xorg Edgers PPA - https://launchpad.net/~xorg-edgers
## Run this command: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542  
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
here is a generated list without source files and no samsung printer ppa
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse

2
2017-11-16 06:28