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.

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

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


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

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.