Categories
DailyOps

How to improve apt download times

Improve apt download times by using apt-fast a shell-script wrapper for apt, apt-get or aptitude.

At first install debconf utilities.

$ sudo apt-get install debconf-utils 

Preconfigure apt-fast, all configuration options will be mentioned later.

$ cat << EOF | sudo debconf-set-selections
apt-fast	apt-fast/aptmanager	select	apt
apt-fast	apt-fast/maxdownloads	string	4
apt-fast	apt-fast/dlflag		boolean	true
EOF

Search for apt-fast package – it is not present in official repository.

$ apt search apt-fast
Sorting... Done
Full Text Search... Done

Import Launchpad PPA key for apt-fast.

$ sudo apt-key --keyring /etc/apt/trusted.gpg.d/apt-fast.gpg adv --no-default-keyring --keyserver keyserver.ubuntu.com --recv-keys 1EE2FF37CA8DA16B
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.AZ6M7fo1s4/gpg.1.sh --no-default-keyring --keyserver keyserver.ubuntu.com --recv-keys 1EE2FF37CA8DA16B

gpg: key 1EE2FF37CA8DA16B: public key "Launchpad PPA for apt-fast" imported
gpg: Total number processed: 1
gpg:               imported: 1

Define repository.

$ cat << EOF | sudo tee  /etc/apt/sources.list.d/apt-fast.list
deb [signed-by=/etc/apt/trusted.gpg.d/apt-fast.gpg ] http://ppa.launchpad.net/apt-fast/stable/ubuntu $(lsb_release --codename --short) main 
deb-src [signed-by=/etc/apt/trusted.gpg.d/apt-fast.gpg ] http://ppa.launchpad.net/apt-fast/stable/ubuntu $(lsb_release --codename --short) main
EOF
deb [signed-by=/etc/apt/trusted.gpg.d/apt-fast.gpg ] http://ppa.launchpad.net/apt-fast/stable/ubuntu impish main 
deb-src [signed-by=/etc/apt/trusted.gpg.d/apt-fast.gpg ] http://ppa.launchpad.net/apt-fast/stable/ubuntu impish main

Update package index.

$ sudo apt update

Search for apt-fast.

$ apt search apt-fast
Sorting... Done
Full Text Search... Done
apt-fast/impish,impish 1.9.12-1~ubuntu21.10.1 all
  shellscript wrapper for apt-get or aptitude

Get apt-fast description.

$ apt info apt-fast
Package: apt-fast
Version: 1.9.12-1~ubuntu21.10.1
Priority: optional
Section: admin
Maintainer: Dominique Lasserre
Installed-Size: 128 kB
Depends: debconf (>= 0.5) | debconf-2.0, aria2, coreutils (>= 8.21-1.1) | readlink
Suggests: aptitude, zsh, bash-completion, fish
Download-Size: 37.4 kB
APT-Sources: http://ppa.launchpad.net/apt-fast/stable/ubuntu impish/main amd64 Packages
Description: shellscript wrapper for apt-get or aptitude
 apt-fast is a shellscript wrapper for apt-get that can drastically improve apt
 download times by downloading packages in parallel, with multiple connections
 per package.

Install apt-fast.

$ sudo DEBIAN_FRONTEND=noninteractive apt install apt-fast

Display debconf database configuration. Use dpkg-reconfigure utility after altering these settings.

$ sudo debconf-get-selections | grep ^apt-fast
apt-fast	apt-fast/downloader	select	aria2c
apt-fast	apt-fast/aptmanager	select	apt
# Suppress apt-fast confirmation dialog?
apt-fast	apt-fast/dlflag	boolean	false
apt-fast	apt-fast/tmpdownloadlist	string	/tmp/apt-fast.list
apt-fast	apt-fast/tmpdownloaddir	string	/var/cache/apt/apt-fast
apt-fast	apt-fast/maxconpersrv	string	10
apt-fast	apt-fast/maxdownloads	string	4
apt-fast	apt-fast/maxconperfile	string	8
apt-fast	apt-fast/minsplitsize	string	1M
apt-fast	apt-fast/downloadcmd	string	aria2c --no-conf -c -j ${_MAXNUM} -x ${_MAXCONPERSRV} -s ${_SPLITCON} --min-split-size=${_MINSPLITSZ} --stream-piece-selector=${_PIECEALGO} -i ${DLLIST} --connect-timeout=600 --timeout=600 -m0 --header "Accept: */*"
apt-fast	apt-fast/aptcache	string	/var/cache/apt/archives
apt-fast	apt-fast/piecealgo	select	default

Display configuration file. which was populated using above-mentioned settings.

$ cat /etc/apt-fast.conf 
###################################################################
# CONFIGURATION OPTIONS
###################################################################
# Every item has a default value besides MIRRORS (which is unset).

# Use aptitude, apt-get, or apt?
# Note that apt-get is used as a fallback for outputting the
# package URI list for e.g. aptitude, which can't do this
# Optionally add the FULLPATH to apt-get or apt-rpm or aptitude
# e.g. /usr/bin/aptitude
#
# Default: apt-get
#
_APTMGR=apt


# Enable DOWNLOADBEFORE to suppress apt-fast confirmation dialog and download
# packages directly.
#
# Default: dialog enabled
#
DOWNLOADBEFORE=


# Choose mirror list to speed up downloads from same archive. To select some
# mirrors take a look at your distribution's archive mirror lists.
# Debian: http://www.debian.org/mirror/list
# Ubuntu: https://launchpad.net/ubuntu/+archivemirrors
#
# It is required to add mirrors in the sources.list to this array as well, so
# apt-fast can destinguish between different distributions.
#
# Examples:
#
# Different distributions (as in operating systems):
#
# sources.list:
# deb http://deb.debian.org/debian/ unstable main non-free contrib
# deb http://de.archive.ubuntu.com/ubuntu/ bionic main universe
#
# apt-fast.conf:
# MIRRORS=( 'http://deb.debian.org/debian','http://ftp.debian.org/debian,http://ftp2.de.debian.org/debian,http://ftp.de.debian.org/debian,ftp://ftp.uni-kl.de/debian'
#           'http://archive.ubuntu.com/ubuntu,http://de.archive.ubuntu.com/ubuntu,http://ftp.halifax.rwth-aachen.de/ubuntu,http://ftp.uni-kl.de/pub/linux/ubuntu,http://mirror.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu/' )
#
#
# Single distribution:
#
# sources.list:
# deb http://fr.archive.ubuntu.com/ubuntu/ bionic main
# deb http://fr.archive.ubuntu.com/ubuntu/ artful main
#
# apt-fast.conf:
# MIRRORS=( 'http://fr.archive.ubuntu.com/ubuntu,http://bouyguestelecom.ubuntu.lafibre.info/ubuntu,http://mirror.ovh.net/ubuntu,http://ubuntu-archive.mirrors.proxad.net/ubuntu' )
#
# Default: disabled
#
#MIRRORS=( 'none' )


# Maximum number of connections
# You can use this value in _DOWNLOADER command. Escape with ${}: ${_MAXNUM}
#
# Default: 5
#
_MAXNUM=4


# Maximum number of connections per server
# Default: 10
#
_MAXCONPERSRV=10


# Download file using given number of connections
# If more than N URIs are given, first N URIs are used and remaining URIs are used for backup.
# If less than N URIs are given, those URIs are used more than once so that N connections total are made simultaneously.
#
_SPLITCON=8


# Split size i.e. size of each piece
# Possible Values: 1M-1024M
#
_MINSPLITSZ=1M


# Piece selection algorithm to use
# Available values are: default, inorder, geom
# default: selects piece so that it reduces the number of establishing connection, reasonable for most cases
# inorder: selects pieces in sequential order starting from first piece
# geom: selects piece which has minimum index like inorder, but it exponentially increasingly keeps space from previously selected pieces
#
_PIECEALGO=default


# Downloadmanager listfile
# You can use this value in _DOWNLOADER command. Escape with ${}: ${DLLIST}
#
# Default: /tmp/apt-fast.list
#
DLLIST='/tmp/apt-fast.list'


# Download command to use. Temporary download list is designed for aria2. But
# you can choose another download command or download manager. It has to
# support following input file syntax (\t is tab character):
#
# # Comment
# MIRROR1\tMIRROR2\tMIRROR3...
#  out=FILENAME1
# MIRROR1\tMIRROR2\tMIRROR3...
#  out=FILENAME2
# ...
#
# Examples:
# aria2c with a proxy (set username, proxy, ip and password!)
# _DOWNLOADER='aria2c --no-conf -c -j ${_MAXNUM} -x ${_MAXCONPERSRV} -s ${_SPLITCON} --min-split-size=${_MINSPLITSZ} --stream-piece-selector=${_PIECEALGO} --http-proxy=http://username:password@proxy_ip:proxy_port -i ${DLLIST} --connect-timeout=600 --timeout=600 -m0 --header "Accept: */*"'
#
# Default: _DOWNLOADER='aria2c --no-conf -c -j ${_MAXNUM} -x ${_MAXCONPERSRV} -s ${_SPLITCON} --min-split-size=${_MINSPLITSZ} --stream-piece-selector=${_PIECEALGO} -i ${DLLIST} --connect-timeout=600 --timeout=600 -m0 --header "Accept: */*"'
#
_DOWNLOADER='aria2c --no-conf -c -j ${_MAXNUM} -x ${_MAXCONPERSRV} -s ${_SPLITCON} --min-split-size=${_MINSPLITSZ} --stream-piece-selector=${_PIECEALGO} -i ${DLLIST} --connect-timeout=600 --timeout=600 -m0 --header "Accept: */*"'


# Temporary download folder for download manager.
#
# Default: /var/cache/apt/apt-fast
#
DLDIR='/var/cache/apt/apt-fast'


# APT archives cache directory
#
# Default /var/cache/apt/archives
# (APT configuration items Dir::Cache and Dir::Cache::archives)
#
APTCACHE='/var/cache/apt/archives'


# apt-fast colors
# Colors are disabled when not using a terminal.
#
# Default colors are:
#  cGreen='\e[0;32m'
#  cRed='\e[0;31m'
#  cBlue='\e[0;34m'
#  endColor='\e[0m'

Execute apt-fast the same way you use defined apt manager (apt, apt-get, or aptitude).

$ apt-fast --help
apt 2.3.9 (amd64)
Usage: apt [options] command

apt is a commandline package manager and provides commands for
searching and managing as well as querying information about packages.
It provides the same functionality as the specialized APT tools,
like apt-get and apt-cache, but enables options more suitable for
interactive use by default.

Most used commands:
  list - list packages based on package names
  search - search in package descriptions
  show - show package details
  install - install packages
  reinstall - reinstall packages
  remove - remove packages
  autoremove - Remove automatically all unused packages
  update - update list of available packages
  upgrade - upgrade the system by installing/upgrading packages
  full-upgrade - upgrade the system by removing/installing/upgrading packages
  edit-sources - edit the source information file
  satisfy - satisfy dependency strings

See apt(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).
                                        This APT has Super Cow Powers.

Update package index. No change here.

$ apt-fast update
Hit:1 http://pl.archive.ubuntu.com/ubuntu impish InRelease
Hit:2 http://pl.archive.ubuntu.com/ubuntu impish-updates InRelease                     
Hit:3 http://pl.archive.ubuntu.com/ubuntu impish-backports InRelease                                  
Hit:4 http://ppa.launchpad.net/apt-fast/stable/ubuntu impish InRelease                                       
Hit:6 http://security.ubuntu.com/ubuntu impish-security InRelease                                            
Hit:5 https://deb.librewolf.net impish InRelease  
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
8 packages can be upgraded. Run 'apt list --upgradable' to see them.

Upgrade operating system.

$ apt-fast upgrade
04/02 16:05:17 [NOTICE] Downloading 8 item(s)

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/python3-problem-report_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/python3-problem-report_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/ubuntu-drivers-common_1%3a0.9.2.4~0.21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/ubuntu-drivers-common_1%3a0.9.2.4~0.21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libnetplan0_0.104-0ubuntu2~21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/libnetplan0_0.104-0ubuntu2~21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/netplan.io_0.104-0ubuntu2~21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/netplan.io_0.104-0ubuntu2~21.10.1_amd64.deb

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/python3-apport_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/python3-apport_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:17 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/apport-gtk_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:17 [NOTICE] Download complete: /var/cache/apt/apt-fast/apport-gtk_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:18 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/apport_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:18 [NOTICE] Download complete: /var/cache/apt/apt-fast/apport_2.20.11-0ubuntu71.1_all.deb

04/02 16:05:18 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libfprint-2-2_1%3a1.90.7+git20210222+tod1-0ubuntu4~21.10.3_amd64.deb

04/02 16:05:18 [NOTICE] Download complete: /var/cache/apt/apt-fast/libfprint-2-2_1%3a1.90.7+git20210222+tod1-0ubuntu4~21.10.3_amd64.deb

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
1b7074|OK  |   1.3MiB/s|/var/cache/apt/apt-fast/python3-problem-report_2.20.11-0ubuntu71.1_all.deb
a18ac8|OK  |   1.0MiB/s|/var/cache/apt/apt-fast/ubuntu-drivers-common_1%3a0.9.2.4~0.21.10.1_amd64.deb
dbc1eb|OK  |   1.1MiB/s|/var/cache/apt/apt-fast/libnetplan0_0.104-0ubuntu2~21.10.1_amd64.deb
3f86d9|OK  |   1.0MiB/s|/var/cache/apt/apt-fast/netplan.io_0.104-0ubuntu2~21.10.1_amd64.deb
aaa484|OK  |   1.1MiB/s|/var/cache/apt/apt-fast/python3-apport_2.20.11-0ubuntu71.1_all.deb
05ad7b|OK  |   3.0MiB/s|/var/cache/apt/apt-fast/apport-gtk_2.20.11-0ubuntu71.1_all.deb
5339e2|OK  |   2.2MiB/s|/var/cache/apt/apt-fast/apport_2.20.11-0ubuntu71.1_all.deb
b95757|OK  |   1.9MiB/s|/var/cache/apt/apt-fast/libfprint-2-2_1%3a1.90.7+git20210222+tod1-0ubuntu4~21.10.3_amd64.deb

Status Legend:
(OK):download completed.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  libfwupdplugin1
Use 'sudo apt autoremove' to remove it.
The following packages will be upgraded:
  apport apport-gtk libfprint-2-2 libnetplan0 netplan.io python3-apport python3-problem-report ubuntu-drivers-common
8 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/716 kB of archives.
After this operation, 72.7 kB of additional disk space will be used.
Do you want to continue? [Y/n]  
Preconfiguring packages ...
(Reading database ... 279961 files and directories currently installed.)
Preparing to unpack .../0-ubuntu-drivers-common_1%3a0.9.2.4~0.21.10.1_amd64.deb ...
Unpacking ubuntu-drivers-common (1:0.9.2.4~0.21.10.1) over (1:0.9.2.3) ...
Preparing to unpack .../1-libnetplan0_0.104-0ubuntu2~21.10.1_amd64.deb ...
Unpacking libnetplan0:amd64 (0.104-0ubuntu2~21.10.1) over (0.103-0ubuntu7.2) ...
Preparing to unpack .../2-netplan.io_0.104-0ubuntu2~21.10.1_amd64.deb ...
Unpacking netplan.io (0.104-0ubuntu2~21.10.1) over (0.103-0ubuntu7.2) ...
Preparing to unpack .../3-python3-problem-report_2.20.11-0ubuntu71.1_all.deb ...
Unpacking python3-problem-report (2.20.11-0ubuntu71.1) over (2.20.11-0ubuntu71) ...
Preparing to unpack .../4-python3-apport_2.20.11-0ubuntu71.1_all.deb ...
Unpacking python3-apport (2.20.11-0ubuntu71.1) over (2.20.11-0ubuntu71) ...
Preparing to unpack .../5-apport_2.20.11-0ubuntu71.1_all.deb ...
Unpacking apport (2.20.11-0ubuntu71.1) over (2.20.11-0ubuntu71) ...
Preparing to unpack .../6-apport-gtk_2.20.11-0ubuntu71.1_all.deb ...
Unpacking apport-gtk (2.20.11-0ubuntu71.1) over (2.20.11-0ubuntu71) ...
Preparing to unpack .../7-libfprint-2-2_1%3a1.90.7+git20210222+tod1-0ubuntu4~21.10.3_amd64.deb ...
Unpacking libfprint-2-2:amd64 (1:1.90.7+git20210222+tod1-0ubuntu4~21.10.3) over (1:1.90.7+git20210222+tod1-0ubuntu4~21.10.2) ...
Setting up ubuntu-drivers-common (1:0.9.2.4~0.21.10.1) ...
Setting up python3-problem-report (2.20.11-0ubuntu71.1) ...
Setting up libnetplan0:amd64 (0.104-0ubuntu2~21.10.1) ...
Setting up python3-apport (2.20.11-0ubuntu71.1) ...
Setting up netplan.io (0.104-0ubuntu2~21.10.1) ...
Setting up libfprint-2-2:amd64 (1:1.90.7+git20210222+tod1-0ubuntu4~21.10.3) ...
Setting up apport (2.20.11-0ubuntu71.1) ...
apport-autoreport.service is a disabled or a static unit, not starting it.
Setting up apport-gtk (2.20.11-0ubuntu71.1) ...
Processing triggers for desktop-file-utils (0.26-1ubuntu2) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for libc-bin (2.34-0ubuntu3.2) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for dbus (1.12.20-2ubuntu2) ...
Processing triggers for udev (248.3-1ubuntu8.2) ...
Processing triggers for mailcap (3.69ubuntu1) ...

Install a package.

$ apt-fast install -y heroes
04/02 16:10:07 [NOTICE] Downloading 13 item(s)

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libfluidsynth2_2.1.7-1.1_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libfluidsynth2_2.1.7-1.1_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libinstpatch-1.0-2_1.1.6-1_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libinstpatch-1.0-2_1.1.6-1_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/heroes-data_1.5-4_all.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/heroes-data_1.5-4_all.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libmad0_0.15.1b-10ubuntu1_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libmad0_0.15.1b-10ubuntu1_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libsndio7.0_1.5.0-3_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libsndio7.0_1.5.0-3_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libopenal-data_1%3a1.19.1-2_all.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libopenal-data_1%3a1.19.1-2_all.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libmikmod3_3.3.11.1-6_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libmikmod3_3.3.11.1-6_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libsdl-mixer1.2_1.2.12-16build1_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libsdl-mixer1.2_1.2.12-16build1_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/heroes_0.21-18_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/heroes_0.21-18_amd64.deb

04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/libopenal1_1%3a1.19.1-2_amd64.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/libopenal1_1%3a1.19.1-2_amd64.deb
[DL:7.1MiB][#5f2950 3.8MiB/5.1MiB(73%)][#7f2800 304KiB/328KiB(92%)][#e7befa 208KiB/0.9MiB(22%)]                                                                            
04/02 16:10:08 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/heroes-sound-effects_1.0-6_all.deb

04/02 16:10:08 [NOTICE] Download complete: /var/cache/apt/apt-fast/heroes-sound-effects_1.0-6_all.deb

04/02 16:10:09 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/timgm6mb-soundfont_1.3-5_all.deb

04/02 16:10:09 [NOTICE] Download complete: /var/cache/apt/apt-fast/timgm6mb-soundfont_1.3-5_all.deb

04/02 16:10:09 [NOTICE] Verification finished successfully. file=/var/cache/apt/apt-fast/heroes-sound-tracks_1.0-6_all.deb

04/02 16:10:09 [NOTICE] Download complete: /var/cache/apt/apt-fast/heroes-sound-tracks_1.0-6_all.deb

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
bbdfd4|OK  |   1.1MiB/s|/var/cache/apt/apt-fast/libfluidsynth2_2.1.7-1.1_amd64.deb
ac4737|OK  |   1.2MiB/s|/var/cache/apt/apt-fast/libinstpatch-1.0-2_1.1.6-1_amd64.deb
ab486b|OK  |   1.2MiB/s|/var/cache/apt/apt-fast/heroes-data_1.5-4_all.deb
7d4788|OK  |   5.4MiB/s|/var/cache/apt/apt-fast/libmad0_0.15.1b-10ubuntu1_amd64.deb
1ff8a1|OK  |   3.3MiB/s|/var/cache/apt/apt-fast/libsndio7.0_1.5.0-3_amd64.deb
00bbef|OK  |   1.3MiB/s|/var/cache/apt/apt-fast/libopenal-data_1%3a1.19.1-2_all.deb
90695a|OK  |   1.9MiB/s|/var/cache/apt/apt-fast/libmikmod3_3.3.11.1-6_amd64.deb
b65fd2|OK  |   1.2MiB/s|/var/cache/apt/apt-fast/libsdl-mixer1.2_1.2.12-16build1_amd64.deb
a0cb04|OK  |   1.6MiB/s|/var/cache/apt/apt-fast/heroes_0.21-18_amd64.deb
6bb84d|OK  |   1.0MiB/s|/var/cache/apt/apt-fast/libopenal1_1%3a1.19.1-2_amd64.deb
7f2800|OK  |   0.9MiB/s|/var/cache/apt/apt-fast/heroes-sound-effects_1.0-6_all.deb
5f2950|OK  |   4.3MiB/s|/var/cache/apt/apt-fast/timgm6mb-soundfont_1.3-5_all.deb
e7befa|OK  |   1.7MiB/s|/var/cache/apt/apt-fast/heroes-sound-tracks_1.0-6_all.deb

Status Legend:
(OK):download completed.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  heroes-data heroes-sound-effects heroes-sound-tracks libfluidsynth2 libinstpatch-1.0-2 libmad0 libmikmod3 libopenal-data libopenal1 libsdl-mixer1.2 libsndio7.0
  timgm6mb-soundfont
Suggested packages:
  libportaudio2 sndiod fluid-soundfont-gm
The following NEW packages will be installed:
  heroes heroes-data heroes-sound-effects heroes-sound-tracks libfluidsynth2 libinstpatch-1.0-2 libmad0 libmikmod3 libopenal-data libopenal1 libsdl-mixer1.2 libsndio7.0
  timgm6mb-soundfont
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/8597 kB of archives.
After this operation, 16.3 MB of additional disk space will be used.
Selecting previously unselected package heroes-data.
(Reading database ... 279962 files and directories currently installed.)
Preparing to unpack .../00-heroes-data_1.5-4_all.deb ...
Unpacking heroes-data (1.5-4) ...
Selecting previously unselected package libinstpatch-1.0-2:amd64.
Preparing to unpack .../01-libinstpatch-1.0-2_1.1.6-1_amd64.deb ...
Unpacking libinstpatch-1.0-2:amd64 (1.1.6-1) ...
Selecting previously unselected package timgm6mb-soundfont.
Preparing to unpack .../02-timgm6mb-soundfont_1.3-5_all.deb ...
Unpacking timgm6mb-soundfont (1.3-5) ...
Selecting previously unselected package libfluidsynth2:amd64.
Preparing to unpack .../03-libfluidsynth2_2.1.7-1.1_amd64.deb ...
Unpacking libfluidsynth2:amd64 (2.1.7-1.1) ...
Selecting previously unselected package libmad0:amd64.
Preparing to unpack .../04-libmad0_0.15.1b-10ubuntu1_amd64.deb ...
Unpacking libmad0:amd64 (0.15.1b-10ubuntu1) ...
Selecting previously unselected package libopenal-data.
Preparing to unpack .../05-libopenal-data_1%3a1.19.1-2_all.deb ...
Unpacking libopenal-data (1:1.19.1-2) ...
Selecting previously unselected package libsndio7.0:amd64.
Preparing to unpack .../06-libsndio7.0_1.5.0-3_amd64.deb ...
Unpacking libsndio7.0:amd64 (1.5.0-3) ...
Selecting previously unselected package libopenal1:amd64.
Preparing to unpack .../07-libopenal1_1%3a1.19.1-2_amd64.deb ...
Unpacking libopenal1:amd64 (1:1.19.1-2) ...
Selecting previously unselected package libmikmod3:amd64.
Preparing to unpack .../08-libmikmod3_3.3.11.1-6_amd64.deb ...
Unpacking libmikmod3:amd64 (3.3.11.1-6) ...
Selecting previously unselected package libsdl-mixer1.2:amd64.
Preparing to unpack .../09-libsdl-mixer1.2_1.2.12-16build1_amd64.deb ...
Unpacking libsdl-mixer1.2:amd64 (1.2.12-16build1) ...
Selecting previously unselected package heroes.
Preparing to unpack .../10-heroes_0.21-18_amd64.deb ...
Unpacking heroes (0.21-18) ...
Selecting previously unselected package heroes-sound-effects.
Preparing to unpack .../11-heroes-sound-effects_1.0-6_all.deb ...
Unpacking heroes-sound-effects (1.0-6) ...
Selecting previously unselected package heroes-sound-tracks.
Preparing to unpack .../12-heroes-sound-tracks_1.0-6_all.deb ...
Unpacking heroes-sound-tracks (1.0-6) ...
Setting up heroes-sound-effects (1.0-6) ...
Setting up heroes-sound-tracks (1.0-6) ...
Setting up heroes-data (1.5-4) ...
Setting up libsndio7.0:amd64 (1.5.0-3) ...
Setting up libmad0:amd64 (0.15.1b-10ubuntu1) ...
Setting up libopenal-data (1:1.19.1-2) ...
Setting up timgm6mb-soundfont (1.3-5) ...
update-alternatives: using /usr/share/sounds/sf2/TimGM6mb.sf2 to provide /usr/share/sounds/sf2/default-GM.sf2 (default-GM.sf2) in auto mode
update-alternatives: using /usr/share/sounds/sf2/TimGM6mb.sf2 to provide /usr/share/sounds/sf3/default-GM.sf3 (default-GM.sf3) in auto mode
Setting up libinstpatch-1.0-2:amd64 (1.1.6-1) ...
Setting up libopenal1:amd64 (1:1.19.1-2) ...
Setting up libfluidsynth2:amd64 (2.1.7-1.1) ...
Setting up libmikmod3:amd64 (3.3.11.1-6) ...
Setting up libsdl-mixer1.2:amd64 (1.2.12-16build1) ...
Setting up heroes (0.21-18) ...
Processing triggers for mailcap (3.69ubuntu1) ...
Processing triggers for desktop-file-utils (0.26-1ubuntu2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for libc-bin (2.34-0ubuntu3.2) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for install-info (6.7.0.dfsg.2-6) ...

These operations are where apt-fast shines as it downloads packages in parallel beforehand.