apt-get pacotes de instalação em massa de um arquivo?

29

Eu tenho um arquivo de texto com muitos nomes de pacotes.

package1
package2

# comment
# installing package3 because it was needed for...
package 3

package 4

Como posso instalar todos os pacotes em massa dentro do arquivo de texto sem remover os comentários?

    
por James Mitch 08.02.2013 / 14:23

3 respostas

40

Algo ao longo destas linhas deve fazer o truque.

apt-get install $(grep -vE "^\s*#" filename  | tr "\n" " ")

A construção $ (alguma coisa) executa o comando algo , inserindo sua saída na linha de comando.

O comando grep excluirá qualquer linha que comece com #, permitindo, opcionalmente, espaços em branco antes dele. Então o comando tr substitui as novas linhas por espaços.

    
por andol 08.02.2013 / 14:30
11

O seguinte comando é uma (pequena) melhoria em relação à alternativa porque sudo apt-get install não é executado quando a lista de pacotes está vazia.

xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install

Observe que a opção -a lê itens diretamente de um arquivo em vez da entrada padrão. Não queremos canalizar um arquivo para xargs porque o stdin deve permanecer inalterado para uso por apt-get .

    
por Six 13.08.2015 / 12:59
3

Dado um arquivo de lista de pacotes package.list , tente:

sudo apt-get install $(awk '{print $1'} package.list)
    
por cmcginty 11.05.2018 / 08:21