apt-get mass install packages from a file?
Something along these lines ought to do the trick.
apt-get install $(grep -vE "^\s*#" filename | tr "\n" " ")
The $(something) construction runs the something command, inserting its output in the command line.
The grep command will exclude any line beginning with a #, optionally allowing for whitespace before it. Then the tr command replaces newlines with spaces.
The following command is a (slight) improvement over the alternative because sudo apt-get install
is not executed when the package list is empty.
xargs -a <(awk '! /^ *(#|$)/' "$packagelist") -r -- sudo apt-get install
Note that the -a
option reads items directly from a file instead of standard input. We don't want to pipe a file into xargs
because stdin must remain unchanged for use by apt-get
.
Given a package list file package.list
, try:
sudo apt-get install $(awk '{print $1'} package.list)