Monolune

Installing APT packages from a requirements file

Sometimes you need to install Debian or Ubuntu APT packages based on a list of packages listed in a file. There is no built-in support for this in APT (unlike python's pip where it is possible to specify a requirements file using pip3 install --requirement my-requirements-file.txt).

Here's how to install Debian or Ubuntu packages from a list using command line utilities (side note: this works in Raspbian too). This method has the benefit of allowing comments in the requirements file:

sed 's/#.*//' my-requirements-file.txt | xargs sudo apt-get install

The requirements file can be formatted like this:

# Tools.
git
httpie  # HTTP client.
geany  # Text editor.

# Interpreters.
python3
racket

  # It's okay for comments to be preceeded by whitespace.

Notice that comments start with the # character and can be either be inline or on their own line.

How it works

sed 's/#.*//' <file> reads the file and outputs the contents of the file with all occurrences of things starting with the character # substituted with nothing, effectively removing the comments.

The text that has been processed with sed is the piped (i.e. fed) into xargs, which constructs the arguments for sudo apt-get install using the text that was fed into xargs.

Hope this helps.