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.

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

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


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.