como verificar se o PPA já foi adicionado à lista de fontes apt em um script bash

11

Alguém sabe como verificar se um PPA já foi adicionado ao meu sistema antes de adicioná-lo com o add-apt-repositorycomando em a shell script.

Isso seria muito útil.

Obrigado.

Josh
fonte

Respostas:

11

Você pode fazer algo assim:

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 sai com sucesso se encontrar uma correspondência
  • O !nega isso, portanto os comandos serão executados se não houver nenhuma correspondência = ppa não adicionada
  • A -qbandeira fica grep silenciosa , para que não imprima as linhas correspondentes. Seria apenas ruído, precisamos apenas saber se existe uma correspondência ou não, para a qual o código de saída é perfeito
  • O ^deb .*prefixo é garantir que a linha correspondente comece com deb, excluir as linhas comentadas
janos
fonte
Como se vê, isso encontrará ppas que foram comentados, mas eu quero encontrar PPAs que não foram comentados e a resposta da @ Ten-Coins faz isso.
Taytay
2

Abra seu terminal e digite este comando

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

substitua o nebulizador pelo nome do PPA.

insira a descrição da imagem aqui

rɑːdʒɑ
fonte
11
bom ver que frogger ainda está vivo, eu acho grep não é o soluthion certo para uma instrução if dentro de um shell script
Josh
você pode pesquisar no campo com o awk também. bem mais rápido.
23413 rmdd
Eu não estou familiarizado com o awk, mas se você tiver uma solução, não hesite em postar sua mensagem e obter sua repetição. Ps. I como forros praticamente
Josh
como eu estou de férias não posso postar agora sem testar corretamente. o que é isso voto negativo?
rɑːdʒɑ
Vou testar isso com uma declaração if mais tarde naquele dia. Desculpe pelo voto negativo. Eu não podia ler essas postagens tarde da noite. Acho que isso deve funcionar e responderá mais tarde se eu testei o comando.
27413 Josh
0

Removendo list.save arquivos, fontes, assegure apenas linhas de deb e conte-o para o "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
Bellera
fonte
Isso também encontra deblinhas que são comentadas, começando com # debe linhas de arquivos como foo-ppa.list.distUpgrade- isso é pretendido?
Volker Siegel