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.

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

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í


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.