How to speed up slow apt-get install on Debian or Ubuntu


If you feel that package installation by apt-get or aptitude is often too slow on your Debian or Ubuntu system, there are several ways to improve the situation. Have you considered switching default mirror sites being used? Have you checked the upstream bandwidth of your Internet connection to see if that is the bottleneck?
Nothing else, you can try this third option: use apt-fast tool. apt-fast is actually a shell script wrapper written aroundapt-get and aptitude, which can accelerate package download speed. Internally, apt-fast uses aria2 download utility which can download a file in "chunked" forms from multiple mirrors simultaneously (like in BitTorrent download).

Install apt-fast on Debian-based Linux

To install apt-fast on Debian:
$ sudo apt-get install aria2
$ wget https://github.com/ilikenwf/apt-fast/archive/master.zip
$ unzip master.zip
$ cd apt-fast-master
$ sudo cp apt-fast /usr/bin
$ sudo cp apt-fast.conf /etc
$ sudo cp ./man/apt-fast.8 /usr/share/man/man8
$ sudo gzip /usr/share/man/man8/apt-fast.8
$ sudo cp ./man/apt-fast.conf.5 /usr/share/man/man5
$ sudo gzip /usr/share/man/man5/apt-fast.conf.5
To install apt-fast on Ubuntu or Linux Mint:
$ sudo add-apt-repository ppa:apt-fast/stable
$ sudo apt-get update
$ sudo apt-get install apt-fast
During installation on Ubuntu/Mint, you will be asked to choose a default package manager (e.g., apt-getaptitude), and other settings. You can change the settings later by editing a configuration file.

Configure apt-fast

After installation, you need to configure a list of mirrors used by apt-fast in /etc/apt-fast.conf.
You can find a list of Debian/Ubuntu mirrors in the following locations.
Choose mirrors which are geographically close to your location, and add chosen mirrors to /etc/apt-fast.conf in the following format.
$ sudo vi /etc/apt-fast.conf
Debian:
MIRRORS=('http://ftp.us.debian.org/debian/,http://carroll.aset.psu.edu/pub/linux/distributions/debian/,http://debian.gtisc.gatech.edu/debian/,http://debian.lcs.mit.edu/debian/,http://mirror.cc.columbia.edu/debian/')
Ubuntu/Mint:
MIRRORS=('http://us.archive.ubuntu.com/ubuntu,http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive/,http://mirror.cc.vt.edu/pub2/ubuntu/,http://mirror.umd.edu/ubuntu/,http://mirrors.mit.edu/ubuntu/')
Individual mirrors for a given archive should be separated by commas as above. It is recommended that in the MIRRORS string, you include the default mirror site specified in /etc/apt/sources.list.

Install a Package with apt-fast

You can use apt-fast in the following format.
apt-fast [apt-get options and arguments]
apt-fast [aptitude options and arguments]
apt-fast { { install | upgrade | dist-upgrade | build-dep | download | source } [ -y | --yes | --assume-yes | --assume-no ] ... | clean }
To install a package with apt-fast:
$ sudo apt-fast install texlive-full
To download a package in the current directory:
$ sudo apt-fast download texlive-full
You can verify parallel downloads from multiple mirrors as follows.
Note that apt-fast does not make "apt-get update" faster. Parallel download gets triggered only for "install", "upgrade", "dist-upgrade" and "build-dep" operations. For other operations, apt-fast simply falls back to the default package manager (apt-get or aptitude).

How Fast is apt-fast?

To compare apt-fast and apt-get, I tried installing several packages using two methods on two identical Ubuntu instances. The following graph shows total package installation time (in seconds).
As you can see, apt-fast is substantially faster (e.g., 3--4 times faster) than apt-get, especially when a bulky package is installed.