comment vérifier si PPA est déjà ajouté à la liste des sources apt dans un script bash

11

Est-ce que quelqu'un sait comment vérifier si un PPA est déjà ajouté à mon système avant de l'ajouter avec la add-apt-repositorycommande dans a shell script.

Ce serait très utile.

Je vous remercie.

Josh
la source

Réponses:

11

Vous pouvez faire quelque chose comme ça:

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

Remarques:

  • grep quitte avec succès s'il trouve une correspondance
  • Le !nie cela, donc les commandes seront exécutées s'il n'y a pas de correspondance = ppa non ajouté
  • Le -qdrapeau est grep silencieux , il n'imprime donc pas les lignes correspondantes. Ce ne serait que du bruit, il suffit de savoir s'il y a correspondance ou non, pour lequel le code de sortie est parfait
  • Le ^deb .*préfixe est de s'assurer que la ligne correspondante commence par deb, d'exclure les lignes commentées
janos
la source
En fin de compte, cela trouvera les ppas qui ont été commentés, mais je veux trouver les PPA qui n'ont pas été commentés, et la réponse @ Ten-Coins le fait.
Taytay
2

Ouvrez votre terminal et tapez cette commande

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

remplacer le brumisateur par le nom PPA.

entrez la description de l'image ici

rɑːdʒɑ
la source
1
agréable de voir que la grenouille est toujours en vie, je suppose que grep n'est pas le bon soluthion pour une instruction if dans un script shell
Josh
vous pouvez également rechercher un champ avec awk. assez vite.
rɑːdʒɑ
Je ne connais pas awk mais si vous avez une solution n'hésitez pas à poster votre ansawre et à obtenir votre répétition. Ps. J'aime beaucoup les doublures
Josh
car je suis en vacances, je ne peux pas poster maintenant sans tester correctement. à quoi sert ce downvote?
rɑːdʒɑ
Je testerai cela avec une instruction if plus tard dans la journée. Désolé pour le downvote. Je ne devrais pas lire ces messages tard dans la nuit. Je pense que cela devrait fonctionner et je répondrai plus tard si j'ai testé la commande.
Josh
0

Supprimer les fichiers list.save, les sources, assurer uniquement les lignes deb et les compter pour le 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
la source
Cela trouve également les deblignes commentées, en commençant par # deb, et les lignes de fichiers comme foo-ppa.list.distUpgrade- est-ce prévu?
Volker Siegel