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

217

Ich kann alle auf meinem System installierten Pakete auflisten.

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

Ich weiß, dass ich mich mit /etc/apt/sources.listund befassen kann /etc/apt/sources.list.d, aber ich suche nach einer Möglichkeit, ein Skript zu generieren , das alle apt-add-repositoryBefehle auf einem neuen System ausführt (um alle Schlüssel zu erhalten).

Irgendwelche Ideen?

stwissel
quelle

Antworten:

106

Sie können alles zeigen mit:

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
wojox
quelle
13
Was ist mit egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*dem Entfernen von auskommentierten Zeilen und Leerzeilen?
3
kannst du bitte die verwendung von ^after grepin erläutern grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*?
4
@ vasa1 Das Caret ^ und das Dollarzeichen $ sind Metazeichen, die jeweils mit der leeren Zeichenfolge am Anfang und Ende einer Zeile übereinstimmen.
Wojox
4
Ich benutze grep ^ [^ #] ... - Es versteckt automatisch alle
Ross Aiken
12
Wenn Sie nichts herausfiltern wollen, ist es nicht einfacher, einfach auszuführencat /etc/apt/sources.list /etc/apt/sources.list.d/*
jbo5112
99

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 listppa > installppa.sheinem Skript aufrufen, können Sie es auf einen neuen Computer kopieren, um alle PPA neu zu installieren.

Nächster Stopp: Tun Sie 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 zum Superuser , um den richtigen regulären Ausdruck herauszufinden.

stwissel
quelle
1
In Ihrem grep -oBeispiel, das \` in [a-z0-9\-]nicht zu tun , was Sie erwarten. Es entspricht tatsächlich einem wörtlichen Backslash . Sie brauchen nicht zu entkommen das , -wenn es am Anfang oder Ende der ist []Liste; Eigentlich können Sie sich dem nicht entziehen ! .. In diesem Fall verursacht das \`(wahrscheinlich) kein Problem, da Sie (hoffentlich) keinen Backslash im debEintrag finden.
Peter.O
2
Beachten Sie, dass PPA-Namen Punkte enthalten können. Ich denke, Sie möchten Ihren regulären http://ppa.launchpad.net/[a-z0-9-]\+/[a-z0-9.-]\+
Ausdruck
Nein, wollen Sie die Regex ändern, [[:graph:]] statt , [a-z...blah.anything]weil das wird jede alphanumerischen + Interpunktionszeichen übereinstimmen - das ist , was die PPA Namen bestehen.
MichalH
Ich nehme an, Sie sollten debam Anfang jeder Repository-Zeile ein Wort einfügen, wenn dies nicht in der ppa:$USER/$PPAForm angegeben ist.
jarno
@stwissel hast du einen bestimmten grund benutzt und dann grep gefunden? Sie können problemlos einen Glob erstellen, den die Shell analysiert, und ihn an grep übergeben. grep -Po "(?<=^deb\s).*?(?=#|$)" /etc/apt/{sources.list,sources.list.d/*.list} | while read ENTRY ; do echo $ENTRY; doneBeachten Sie, dass dies, wie geschrieben, den Dateinamen anzeigt, von dem jeder Eintrag stammt, sodass Sie vom Anfang des Ergebnisses bis zum ersten Doppelpunkt einen Zuschnitt vornehmen müssen. Sie können es auch durchgehen, uniqwenn Sie nicht mehrere Einträge für dieselbe Quelle möchten (z. B. wenn Sie Google Chrome Stable / Beta / Dev installiert haben).
Dragon788
23

Ich bin überrascht, dass der einfachste, aber effektivste Weg, alle aktivierten binären Softwarequellen zusammen mit der Datei, in der sie angegeben sind, zu erhalten, noch nicht veröffentlicht wurde:

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

Aus allen verarbeiteten Dateien wird jede Zeile gedruckt, die mit beginnt deb. Dies schließt kommentierte Zeilen sowie deb-srcZeilen zum Aktivieren von Quellcode-Repositorys aus.

Es werden wirklich nur alle *.listDateien durchsucht , die analysiert werden apt, aber zB keine *.list.saveDateien, die für die Sicherung verwendet werden, oder andere mit unzulässigen 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 durchsucht (einschließlich aller /etc/apt/sources.list*Dateien und Verzeichnisse, nicht nur /etc/apt/sources.listund `/etc/apt/sources.list.d/*), können Sie dies auch tun benutze das:

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

Sofern keine Dateien vorhanden sind, die nicht vorhanden sein sollten, ist die Ausgabe dieselbe.


Eine Beispielausgabe auf meinem Computer wäre:

/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, lass 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
Byte Commander
quelle
1
Ausgehend von der akzeptierten Antwort scheint es, dass OP wollte, dass PPAs in dem ppa:<user>/<project>Formular angezeigt werden.
muru
Die Frage lautet eigentlich, ein Skript zu generieren, das alle Repositorys installiert / aktiviert. Im Titel der Frage geht es jedoch nur darum, sie aufzulisten. Auch die zweithöchste Antwort listet sie nur mit auf, aber sie listet viel zu viel auf.
Byte Commander
Schön, aber ich hatte bereits abgestimmt. : D
muru
Sie können die Option -h für grep verwenden, um die Dateinamen wegzulassen.
Jarno
11

Führen Sie den folgenden Befehl aus:

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

Quelle

Nikos
quelle
1
Hinweis: apt-cache policyZeigt die Repos erst an, nachdem Sie sie ausgeführt haben apt-get update. Wenn Sie gerade ein Repo mit hinzugefügt haben add-apt-repository, wird es apt-cache policyerst apt-get update
angezeigt,
Per @wisbucky: sudo apt update > /dev/null 2>&1 && sudo apt-cache policy | grep http | awk '{print $2 $3}' | sort -ufunktioniert gut. gist.github.com/bmatthewshea/229da822f1f02157bff192a2e4a8ffd1
bshea
4

Ich benutze diesen Befehl, um alle konfigurierten Softwarequellen (Repositorys) aufzulisten, einschließlich der derzeit deaktivierten :

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 zur Fehlerbehebung; Dies kann sicherlich in Skripte integriert werden, aber Sie möchten sich möglicherweise darauf beschränken /etc/apt/sources.list.d/*, /etc/apt/sources.list.d/*.listdass Sie nur aktuell aktivierte Softwarequellen erhalten.

Eliah Kagan
quelle
Danke für das Feedback. cat listet die Dateien so auf, wie sie sind, und ich müsste sie manuell bearbeiten, um ein Skript zu generieren (wie in der Frage angegeben). Die Herausforderung bei Repositorys: Wenn Sie nur die Dateien aus / etc / apt kopieren, erhalten Sie die Repository-Schlüssel nicht. Aus diesem Grund möchte ich ein Skript, das sie für uns abholt
stwissel
2

Also haben wir ein bisschen gegraben AptPkg::Class.

So können perlwir mit etwas einfachem wie diesem vorgehen.

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

Dadurch erhalten wir eine Liste aller AptPkg::Class::PkgFilePakete. Damit könnten Sie wahrscheinlich die apt-add-repositoryBefehle generieren .

Evan Carroll
quelle
2

Unter https://repogen.simplylinux.ch/ erhalten Sie eine Liste aller PPAs für Ihre Ubuntu-Version. Hier ist eine generierte Liste ohne Quelldateien und ohne 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
Richard W. Seitz
quelle
2

Hier ist mein Skript " list-apt-repositories", das alle Repositorys in " /etc/sources.list"und" /etc/sources.list.d/*.list" auflistet . Sie können hinzufügen --ppa-only, dass nur die PPAs angezeigt werden. PPAs werden automatisch in das ppa:USER/REPOFormat umgewandelt.

Die relevanten Teile sind die 5 Zeilen in list_sourcesund list_ppaFunktionen, der Rest ist nur Boilerplate, um es in einem handlichen Shell-Skript zu verpacken.

list-apt-repositories:

#!/bin/sh

usage () {
  cat >&2 <<USAGE
$0 [--ppa-only]

Options:
  --ppa-only            only list PPAs
USAGE
  exit $1
}

list_sources () {
  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'
}

list_ppa () {
  list_sources | grep '^ppa:'
}

generate=list_sources

while test -n "$1"
do
  case "$1" in
    -h|--help) usage 1;;
    --ppa-only) generate=list_ppa;;
    *)
      printf -- "Unknown argument '$1'\n" >&2
      usage 2
    ;;
  esac
  shift
done

$generate

Und um ein Installationsskript zu erstellen, " make-apt-repository-install-script" leiten Sie es in ein anderes Skript . Das generierte Skript unterstützt das Argument -y/ --yesfür die nicht interaktive Verwendung (siehe add-apt-repository(1)).

make-apt-repository-install-script:

#!/bin/sh

if test -n "$1"
then
  cat >&2 <<USAGE
Usage: $0 < PATH_TO_LIST_OF_REPOS
       list-apt-repositories [--ppa-only] | $0

No options recognized.

Reads list of repositories from stdin and generates a script to install them
using \`add-apt-repository(1)\`. The script is printed to stdout.

The generated script supports an optional
\`-y\` or \`--yes\` argument which causes the \`add-apt-repository\` commands
to be run with the \`--yes\` flag.
USAGE
  exit 1
fi

cat <<INSTALL_SCRIPT
#!/bin/sh
y=
case "\$1" in
  -y|--yes) y=\$1;;
  '') y=;;
  *)
    printf '%s\n' "Unknown option '\$1'" "Usage: \$0 [{-y|--yes}]" >&2
    exit 1
  ;;
esac
INSTALL_SCRIPT

xargs -d'\n' printf "add-apt-repository \$y '%s'\n"

Auch hier ist der wichtigste Teil der xargsBefehl in der letzten Zeile, der Rest ist Boilerplate.

ejm
quelle
1

Fügen Sie dazu ppa.launchpad.net-Zeilen als ppa hinzu: $ USER / $ PPA. Fügen Sie andere Repositorys mit ihrer vollständigen Zeile aus * .list-Dateien hinzu. Keine falschen Zeilen.

#! / bin / bash
# Mein ~ / bin / mk_repositories_restore_script
mkdir -p ~ / bin 
x = ~ / bin / restore_repositories
echo \ # \! / bin / bash> $ x
chmod u + x $ x
(
 für APT in $ (finde / etc / apt / -name \ *. liste)
    do sed -n -e '/ ^ deb / {
     /ppa. launchpad / s / : \ 2 / p;
     /ppa\.launchpad/!s / \ (deb [\ t] * \) \ (. * $ \) / sudo apt-add-repository \ 2 / p;
    } '$ APT
 getan
) | sortieren | uniq | tee -a ~ / bin / restore_repositories
BobDodds
quelle
0

Vielen Dank, BobDodds!
Wenn sich jemand dafür interessiert, habe ich Ihren Code ein wenig aktualisiert (ich hoffe, es macht Ihnen nichts aus).
Dieses Skript gibt nur vom Benutzer hinzugefügte PPAs aus (/etc/apt/sources.list.d).

    #!/bin/bash
    # My ~/bin/mk_repositories_restore_script
    mkdir -p ~/bin
    x=~/bin/restore_repositories
    echo \#\!/bin/bash > $x
    chmod u+x $x
    (
    for APT in $( find /etc/apt/ -name \*.list )
    do sed -n -e '/^deb /{
          /ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;                                                                                                                                                                                       
        }' $APT
    done
    ) | sort | uniq | tee -a ~/bin/restore_repositories
Martin Bortel
quelle
0
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*

Dabei werden jedoch keine Befehle zum Aktivieren möglicher Quell-Repositorys (deb-src) generiert.

jarno
quelle
-1

Installieren ppa-purge

apt install ppa-purge

Dann holen Sie sich die PPA-Liste per Tab-Vervollständigung ...

ppa-purge -o( Tabzweimal drücken)

Jason Nosaj
quelle
2
Das ist ein bisschen rückwärts. Wie schlagen Sie vor, dass OP die Shell-Abschlussausgabe für die Speicherung oder Verarbeitung sammelt? Hat ppa-purgeauch kein -oFlag entsprechend seiner Manualpage . -1
David Foerster