come verificare se PPA è già stato aggiunto all'elenco delle fonti apt in uno script bash


11

Qualcuno sa come verificare se un PPA è già stato aggiunto al mio sistema prima di aggiungerlo con il add-apt-repositorycomando in a shell script.

Questo sarebbe molto utile.

Grazie.

Risposte:


11

Puoi fare qualcosa del genere:

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

Appunti:

  • grep esce correttamente se trova una corrispondenza
  • I !nega questo, quindi i comandi vengono eseguiti se non esiste alcuna corrispondenza = ppa non aggiunto
  • La -qbandiera diventa grep silenziosa , quindi non stampa le linee abbinate. Sarebbe solo rumore, dobbiamo solo sapere se c'è una corrispondenza o meno, per cui il codice di uscita è perfetto
  • Il ^deb .*prefisso è assicurarsi che la riga corrispondente inizi con deb, per escludere le righe commentate

A quanto pare, questo troverà ppas che sono stati commentati, ma voglio trovare PPA che non sono stati commentati, e la risposta di @ Ten-Coins lo fa.
Taytay,

2

Apri il tuo terminale e digita questo comando

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

sostituire il nebulizzatore con il nome PPA.

inserisci qui la descrizione dell'immagine


1
bello vedere che frogger è ancora vivo, suppongo che grep non sia la solitudine giusta per un'istruzione if all'interno di uno script di shell
Josh,

puoi anche cercare un campo con awk. piuttosto veloce.
rɑːdʒɑ

Non ho familiarità con Awk, ma se hai una soluzione non esitare a pubblicare il tuo Ansawre e ottenere la tua ripetizione. Ps. Mi piacciono molto le fodere
Josh

dato che sono in vacanza non riesco a pubblicare post senza effettuare correttamente i test. a cosa serve quel downvote?
rʒɑdʒɑ

Lo testerò con un'istruzione if più tardi quel giorno. Ci scusiamo per il downvote. Non riuscivo a leggere questi messaggi a tarda notte. Immagino che dovrebbe funzionare e risponderà più tardi se ho testato il comando.
Josh,

0

Rimozione di list.save file, fonti, assicurare solo le linee deb e contarlo per "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

Questo trova anche le debrighe che sono commentate, a partire da # deb, e le righe da file come foo-ppa.list.distUpgrade- è previsto?
Volker Siegel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.