cómo verificar si PPA ya está agregado a la lista de fuentes apt en un script bash

11

¿Alguien sabe cómo verificar si un PPA ya está agregado a mi sistema antes de agregarlo con el add-apt-repositorycomando en a shell script.

Eso sería muy util.

Gracias.

Josh
fuente

Respuestas:

11

Puedes hacer algo como esto:

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

Notas:

  • grep sale con éxito si encuentra una coincidencia
  • Esto !niega esto, por lo que los comandos se ejecutarán si no hay coincidencia = ppa no agregado
  • La -qbandera se grep silencia , por lo que no imprime las líneas coincidentes. Sería solo ruido, solo necesitamos saber si hay una coincidencia o no, para lo cual el código de salida es perfecto
  • El ^deb .*prefijo es asegurarse de que la línea coincida comience deb, para excluir las líneas que están comentadas
janos
fuente
Como resultado, esto encontrará ppas que se han comentado, pero quiero encontrar PPA que no se hayan comentado, y la respuesta de @ Ten-Coins lo hace.
Taytay
2

Abre tu terminal y escribe este comando

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

reemplace el nebulizador con el nombre de PPA.

ingrese la descripción de la imagen aquí

rɑːdʒɑ
fuente
1
Es bueno ver que Frogger todavía está vivo, supongo que grep no es la solución correcta para una declaración if dentro de un script de shell
Josh
puedes buscar campo con awk también. Bastante más rápido.
rɑːdʒɑ
No estoy familiarizado con awk, pero si tiene una solución, no dude en publicar su ansawre y obtener su repetición. PD. Me gustan bastante las camisas
Josh el
como estoy de vacaciones no puedo publicar ahora sin realizar las pruebas correctamente. ¿para qué es ese voto negativo?
rɑːdʒɑ
Probaré esto con una declaración if más tarde ese día. Perdón por el voto negativo. No debería leer tales publicaciones a altas horas de la noche. Supongo que esto debería funcionar y responderá más tarde si he probado el comando.
Josh
0

Eliminando archivos list.save, fuentes, asegúrese solo de líneas deb y cuente para 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
fuente
Esto también encuentra deblíneas que están comentadas, comenzando con # deb, y líneas de archivos como foo-ppa.list.distUpgrade: ¿está destinado?
Volker Siegel