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.

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

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


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.