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.