So überprüfen Sie, ob PPA bereits in einem Bash-Skript zur Liste der passenden Quellen hinzugefügt wurde

11

Sie jemand weiß , wie man überprüfen , ob ein PPA bereits zu meinem System hinzugefügt wird , bevor ich es mit dem Add - add-apt-repositoryBefehl in ein shell script.

Das wäre sehr hilfreich.

Danke.

Josh
quelle

Antworten:

11

Sie können so etwas tun:

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

Anmerkungen:

  • grep wird mit Erfolg beendet, wenn eine Übereinstimmung gefunden wird
  • Das !negiert dies, so dass die Befehle ausgeführt werden, wenn keine Übereinstimmung = ppa nicht hinzugefügt wird
  • Die -qFlagge wird grep leise , sodass die übereinstimmenden Zeilen nicht gedruckt werden. Es wäre nur Rauschen, wir müssen nur wissen, ob es eine Übereinstimmung gibt oder nicht, für die der Exit-Code perfekt ist
  • Das ^deb .*Präfix soll sicherstellen, dass die übereinstimmende Zeile mit beginnt deb, um auskommentierte Zeilen auszuschließen
Janos
quelle
Wie sich herausstellt, werden hier ppas gefunden, die auskommentiert wurden, aber ich möchte PPAs finden, die nicht auskommentiert wurden, und die Antwort von @ Ten-Coins tut dies.
Taytay
2

Öffnen Sie Ihr Terminal und geben Sie diesen Befehl ein

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

Nebelmaschine durch PPA-Namen ersetzen.

Geben Sie hier die Bildbeschreibung ein

rɑːdʒɑ
quelle
1
Schön zu sehen, dass Frogger noch lebt. Ich denke, Grep ist nicht die richtige Lösung für eine if-Anweisung in einem Shell-Skript
Josh
Sie können das Feld auch mit awk durchsuchen. ziemlich schneller.
rɑːdʒɑ
Ich bin nicht mit awk vertraut, aber wenn Sie eine Lösung haben, zögern Sie nicht, Ihre Antwort zu veröffentlichen und Ihre Wiederholung zu erhalten. Ps. Ich mag einen Liner ziemlich
Josh
Da ich im Urlaub bin, kann ich jetzt nicht ohne Tests posten. Wofür ist diese Ablehnung?
rɑːdʒɑ
Ich werde dies später am Tag mit einer if-Anweisung testen. Entschuldigung für die Ablehnung. Ich sollte solche Beiträge nicht spät in der Nacht lesen. Ich denke, das sollte funktionieren und werde später antworten, wenn ich den Befehl getestet habe.
Josh
0

Entfernen Sie list.save-Dateien, Quellen, stellen Sie nur Deb-Zeilen sicher und zählen Sie sie für "fogger" ppa:

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added
Bellera
quelle
Dies findet auch debZeilen, die auskommentiert sind, beginnend mit # debund Zeilen aus Dateien wie foo-ppa.list.distUpgrade- ist das beabsichtigt?
Volker Siegel