Ordenação dos comandos usados para instalar de um ppa

3

Para instalar a partir de um ppa, você precisa usar os 3 comandos a seguir:

sudo add-apt-repository example/program
sudo apt-get update
sudo apt-get install example-program

Existe alguma razão para não fazer isso:

sudo add-apt-repository example/program
sudo apt-get update && sudo apt-get install example-program

ou isto:

sudo add-apt-repository example/program && sudo apt-get update
sudo apt-get install example-program

ou até mesmo isso:

sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program

Existe alguma diferença técnica entre todos eles?

    
por Tim 22.04.2015 / 21:28

3 respostas

5

O operador && executa o seguinte comando somente após o sucesso do comando / cadeia de comandos anterior.

Portanto, as implicações para esses casos são:

  1. O script executa todos os comandos, independentemente

  2. Os scripts executam sudo add-apt-repository example/program e sudo apt-get update independentemente e sudo apt-get install example-program apenas após o sucesso de sudo apt-get update

  3. Os scripts executam sudo add-apt-repository example/program , independentemente, sudo apt-get update apenas após o sucesso de sudo add-apt-repository example/program e sudo apt-get install example-program , independentemente

  4. Os scripts executam sudo add-apt-repository example/program , independentemente, sudo apt-get update apenas após o sucesso de sudo add-apt-repository example/program e sudo apt-get install example-program apenas após o sucesso de sudo add-apt-repository example/program

Então, para responder à sua pergunta, neste caso, basta encadear todos eles, já que você precisa de tudo para ter sucesso:

sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program

Além disso, add-apt-repository e apt-get podem ser configurados para responder automaticamente sim a todas as consultas usando o argumento -y para automatizar totalmente tudo:

sudo add-apt-repository -y example/program && sudo apt-get update && sudo apt-get install -y example-program
    
por kos 22.04.2015 / 21:40
4

Se ; for usado, eles serão iguais, mas && continuará somente se o comando anterior enviar um código de saída dizendo que ele saiu com êxito. Ele continuará automaticamente se tudo correr bem e só será interrompido para solicitar que o usuário pergunte se deseja adicionar o PPA e se deseja instalar o pacote. Também pode funcionar melhor do que o de três linhas se todos os códigos de saída produzidos pelos programas forem precisos, pois o usuário pode continuar a digitar os comandos e não notar a primeira ou a segunda falha.

Se você quiser percorrer todo o caminho de continuar automaticamente:

 sudo add-apt-repository -y example/ppa && sudo apt-get update && sudo apt-get install -y example-program

Se você quiser usá-lo, tudo bem (apenas esteja preparado que apt-get pode ter um hábito 'legal' de destruir coisas se não for usado com sabedoria, então não use um ppa estranho ou muito ao redor com dependências) , mas se você quiser documentar sobre a instalação de um programa eu recomendaria usar um dos dois ou três liners (sem -y ) , pois isso permite ao usuário maior controle sobre o que acontece, tornando-os mais felizes e evitando acidentes desagradáveis (e como @ Zacharee1 diz, é mais fácil entender, aprender e lembrar como linhas separadas - novos usuários podem não entender que podem separar as linhas, ou pode supor que, como o comando (s) em uma cadeia de caracteres são tão longos que, obviamente, podem fazer algo mal)

Alguns exemplos de && etc:

 $ true && echo "this will show output as that thing ← said it exited successfully"
this will show output as that thing ← said it exited successfully
 $ false && echo "this won't"
 $ false || echo "but this will"
but this will
 $ true || echo "weird init?"
 $ true ; echo " ← and this"
and this
 $ false ; echo "doesn't care"
doesn't care
 $ echo $?
0
 $ echo "previous exit code ↑" ; true
previous exit code ↑
 $ echo "previous exit code ↑"
previous exit code ↑
 $ 
    
por Wilf 22.04.2015 / 21:47
2

Tudo é a mesma coisa. Eu acho que a razão pela qual é normalmente listada do jeito que está é porque parece melhor e é mais fácil de lembrar, já que os comandos são divididos.

    
por TheWanderer 22.04.2015 / 21:41