Usando um arquivo para instalar pacotes com o apt-get

9

Acho muito conveniente instalar pacotes em uma nova máquina por meio de arquivos como brewfiles, caskfiles, dockerfiles, package.json etc.

Existe uma alternativa para isso no apt-get, pois eu ainda o uso
através da linha de comando com

apt-get install pkg1 pkg2 pkg3…

?

thibmaek
fonte
2
Precisa de um? Você poderia usar xargs: xargs -P1 apt-get install < list-of-packages.
Muru
@ muru bem, eu realmente não sei como o xargs funciona (lendo o homem agora), mas não acho que seja uma solução para ter os pacotes centralizados em um arquivo? Eu ainda teria de listar os arquivos manualmente após o <uma vez usando um arquivo .txt com três pacotes de ele não funciona com este comando (testado em Debian)
thibmaek
1
o <redirecionamento é shell. Para vários arquivos, use:cat file1 file2 .. | xargs -P1 apt-get install
muru

Respostas:

13

Conforme especificado nos comentários da sua pergunta, você pode criar um arquivo de texto simples, chamado packages.txt, listando os pacotes a serem instalados:

iceweasel
terminator
vim

e, em seguida, execute o seguinte comando:

cat packages.txt | xargs sudo apt-get install

xargs é usado para passar os nomes dos pacotes do packages.txtarquivo para a linha de comando. Na página do manual:

O xargs lê itens da entrada padrão, delimitados por espaços em branco (que podem ser protegidos com aspas duplas ou simples ou uma barra invertida) ou novas linhas e executa o comando (o padrão é / bin / echo) uma ou mais vezes com os argumentos iniciais seguidos por itens lidos da entrada padrão.

Ortomala Lokni
fonte
9

Melhorando um pouco a resposta de @ ortomala-lokni, você pode fornecer o arquivo diretamente como argumento para xargs:

xargs -a packages.txt sudo apt-get install

Opcionalmente, você pode dar xargsa -ropção de impedir que a apt-getchamada seja executada se o seu packages.txtnão contiver caracteres que não sejam espaços em branco.

quazgar
fonte
Esta pode ser uma peculiaridade do Alpine / BusyBox, mas o -aarg não foi documentada e não parecia trabalho lá: xargs: unrecognized option: a. Minha saída versão mostrada éBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston
O uso da resposta aceita resultou em uma consulta Y / n abortada do apt. Usando isso funcionou. Obrigado!
Ok Letsdothis
1

insira a descrição da imagem aqui

ele funciona nos dois sentidos para mim, verifique se você possui os xargs mais recentes ou verifique se ele tem a opção -a ou não com a opção de ajuda (xargs --help)

Chinni Diwakar
fonte
5
Esta resposta tem problemas de acessibilidade: Texto em imagens, não pode ser lido por pessoas cegas.
CTRL-ALT-DELOR
0

Além das soluções de script mais gerais, você pode criar um pacote deb.

você vai precisar

  • equivs-build, para construir o deb. O deb pode conter apenas dependências. Este é um construtor de deb simplificado.
  • gdebi para instalar o deb.

Isso funcionará em todos os sistemas baseados em debian (sistemas que usam apt / deb-files).

A vantagem de fazer isso com arquivos deb, ao contrário de um shell script, é que é muito mais fácil desfazer, você pode desinstalar um deb ou reconfigurar um deb e reinstalá-lo (isso fará com que os arquivos sejam adicionado e removido).

ctrl-alt-delor
fonte