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.