jak sprawdzić, czy PPA jest już dodane do listy apt apt w skrypcie bash

11

Czy ktoś wie, jak sprawdzić, czy PPA jest już dodany do mojego systemu, zanim dodam go za pomocą add-apt-repositorypolecenia w shell script.

To byłoby bardzo pomocne.

Dziękuję Ci.

Josh
źródło

Odpowiedzi:

11

Możesz zrobić coś takiego:

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

Uwagi:

  • grep kończy się sukcesem, jeśli znajdzie dopasowanie
  • W !neguje tego, więc polecenia zostaną wykonane, jeśli nie ma odpowiednika = PPA nie dodano
  • -qFlag sprawia, grep spokój , więc nie drukuje dopasowane linie. Byłby to tylko szum, musimy tylko wiedzieć, czy istnieje dopasowanie, czy nie, dla którego kod wyjścia jest idealny
  • ^deb .*Prefiks jest upewnienie się, dopasowana linia zaczyna się deb, aby wykluczyć, że linie są wykomentowane
janos
źródło
Jak się okazuje, znajdziesz ppas, które zostały skomentowane, ale chcę znaleźć PPA, które nie zostały skomentowane, a odpowiedź @ Ten-Coins robi to.
Taytay
2

Otwórz terminal i wpisz to polecenie

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

zamień zamgławiacz na nazwę PPA.

wprowadź opis zdjęcia tutaj

rɑːdʒɑ
źródło
1
miło widzieć, że Frogger wciąż żyje, myślę, że grep nie jest właściwym rozwiązaniem dla instrukcji if w skrypcie powłoki
Josh
możesz także przeszukiwać pole za pomocą awk. całkiem szybciej.
rɑːdʒɑ
Nie jestem zaznajomiony z awk, ale jeśli masz rozwiązanie, nie wahaj się opublikować odpowiedzi i uzyskać powtórzenie. Ps. Bardzo podoba mi się jeden liniowiec
Josh
ponieważ jestem na wakacjach, nie mogę teraz pisać bez testowania. po co to głosować?
rɑːdʒɑ
Przetestuję to za pomocą instrukcji if później tego dnia. Przepraszam za opinię. Nie mogłem czytać takich postów późno w nocy. Myślę, że to powinno zadziałać i odpowie później, jeśli przetestowałem polecenie.
Josh
0

Usuwając pliki list.save, źródła, upewnij się, że tylko linie deb i policz je jako ppa „fogger”:

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
źródło
Znajduje to również debwiersze, które są komentowane, zaczynające się od # deb, oraz wiersze z plików takich jak foo-ppa.list.distUpgrade- czy to jest zamierzone?
Volker Siegel,