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.

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

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


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

Dies findet auch debZeilen, die auskommentiert sind, beginnend mit # debund Zeilen aus Dateien wie foo-ppa.list.distUpgrade- ist das beabsichtigt?
Volker Siegel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.