Usare un file per installare i pacchetti con apt-get


9

Trovo molto conveniente installare pacchetti su una nuova macchina attraverso file di pacchetti come brewfile, caskfile, dockerfile, package.json ecc.

Esiste un'alternativa a questo per apt-get poiché lo uso ancora
attraverso la riga di comando con

apt-get install pkg1 pkg2 pkg3…

?


2
Ne ha bisogno? È possibile utilizzare xargs: xargs -P1 apt-get install < list-of-packages.
Muru,

@muru bene non so davvero come funzioni xargs (leggendo man ora) ma non penso che sia una soluzione per centralizzare i pacchetti in un file? Dovrei comunque elencare manualmente i file dopo <poiché l'uso di un file .txt con tre pacchetti non funziona con questo comando (testato su Debian)
thibmaek,

1
la <è reindirizzamento shell. Per più file, utilizzare:cat file1 file2 .. | xargs -P1 apt-get install
muru

Risposte:


13

Come specificato nei commenti della tua domanda, puoi creare un semplice file di testo, chiamato packages.txt, che elenca i pacchetti da installare:

iceweasel
terminator
vim

e quindi eseguire il comando seguente:

cat packages.txt | xargs sudo apt-get install

xargs viene utilizzato per passare i nomi dei pacchetti dal packages.txtfile alla riga di comando. Dalla pagina man:

xargs legge gli elementi dall'input standard, delimitato da spazi (che possono essere protetti con virgolette doppie o singole o una barra rovesciata) o newline ed esegue il comando (il default è / bin / echo) una o più volte con qualsiasi argomento iniziale seguito dagli articoli letti dallo standard input.


9

Migliorando un po 'la risposta di @ ortomala-lokni, puoi dare direttamente il file come argomento a xargs:

xargs -a packages.txt sudo apt-get install

Opzionalmente puoi dare xargsla -rpossibilità di impedire l' apt-getesecuzione della chiamata se packages.txtnon contiene caratteri non bianchi.


Questo può essere una peculiarità di Alpine / BusyBox, ma -al'arg non è stato documentato e non sembra funzionare lì: xargs: unrecognized option: a. L'output della mia versione mostrato èBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston,

L'uso della risposta accettata ha comportato l'interruzione di una query Y / n di apt. Usando questo ha funzionato. Grazie!
Ok Letsdothis,

1

inserisci qui la descrizione dell'immagine

funziona in entrambi i modi per me, assicurati di avere gli xargs più recenti, oppure controlla se ha l'opzione -a oppure no con l'opzione help (xargs --help)


5
Questa risposta ha problemi di accessibilità: il testo in immagini, non può essere letto da persone non vedenti.
ctrl-alt-delor

0

Oltre alle soluzioni di scripting più generali, è possibile creare un pacchetto deb.

avrai bisogno

  • equivs-build, per creare il deb. Il deb può contenere solo dipendenze. Questo è un generatore di deb semplificato.
  • gdebi per installare il deb.

Funzionerà su tutti i sistemi basati su debian (sistemi che usano file apt / deb).

Il vantaggio di farlo con i file deb, al contrario di uno script di shell, è che è molto più facile annullare, è possibile disinstallare un deb o riconfigurare un deb e reinstallarlo (questo farà sì che i file siano aggiunto e rimosso).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.