How To Create A Local Debian/Ubuntu Mirror With apt-mirror - Page 2

5 Create The Local Repositories

Now that apt-mirror is configured, it's time to run it for the first time and download all the packages that form the local Debian and Ubuntu repository. All we have to do is type

su - apt-mirror -c apt-mirror

apt-mirror tells you how many GB it must download. This can take a few hours, so be patient. The packages will be stored in subdirectories of the /var/spool/apt-mirror/mirror directory, so make sure the partition that holds that directory has enough disk space left.

The Debian repository will be in /var/spool/apt-mirror/mirror/, and the Ubuntu repository will be in /var/spool/apt-mirror/mirror/ If you used different mirrors in chapter 4, the paths will be a little bit different for you.


6 Clean Up The Local Repositories

After apt-mirror has finished downloading all packages, it will most likely tell you can free up some disk space with the /var/spool/apt-mirror/var/ script. That's what we do now:

/bin/bash /var/spool/apt-mirror/var/

The output will look like this:

server1:~# /bin/bash /var/spool/apt-mirror/var/
Removing 157 unnecessary files [13316096 bytes]...

Removing 18 unnecessary directories...

As you see, some MB have been freed.


7 Update The Local Repositories / Create A Daily Cron Job

Updating the local mirror is easy. Simply run

su - apt-mirror -c apt-mirror


If you don't want to do it manually, you can create a daily cron job for it. Simply edit /etc/cron.d/apt-mirror and uncomment the last line in it so that it looks like this:

vi /etc/cron.d/apt-mirror
# Regular cron jobs for the apt-mirror package
0 4     * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

This will make apt-mirror run at 4.00h each day, and it will log to /var/spool/apt-mirror/var/cron.log.


8 Make The Local Mirrors Accessible Over HTTP

The default Apache document root under Debian and Ubuntu is /var/www, but our repositories are stored in /var/spool/apt-mirror/mirror. In order to make our repositories accessible by and (in this tutorial is the IP address of our local mirror), we create the symlinks /var/www/debian and /var/www/ubuntu that point to the real repositories:

ln -s /var/spool/apt-mirror/mirror/ /var/www/debian
ln -s /var/spool/apt-mirror/mirror/ /var/www/ubuntu

Remember to adjust these commands if you use different mirrors than and

The next thing to consider is that you can refer to Debian Sarge as sarge, but also as stable (at the time of this writing Debian Sarge is stable and the upcoming Debian Etch still testing). When you run

ls -l /var/spool/apt-mirror/mirror/   

you will see that there is a directory called sarge, but not stable. If you use stable instead of sarge in /etc/apt/sources.list or install a new Debian system with the local mirror, this is a problem (the Debian Sarge installer also refers to stable instead of sarge). The solution is to create a symlink:

cd /var/spool/apt-mirror/mirror/
ln -s sarge/ stable

Remember to adjust this command if you use a different mirror than

At the time Debian Etch becomes stable and you decide to mirror Etch as well, don't forget to change the stable symlink, e.g. like this:

cd /var/spool/apt-mirror/mirror/
rm -f stable
ln -s etch/ stable

We don't have this problem with Ubuntu as there's no stable, only breezy, dapper, edgy, etc.

Share this page:

7 Comment(s)

Add comment

Please register in our forum first to comment.



Note that su - apt-mirror -c apt-mirror will not work on Ubuntu if you have not set a root password. But sudo apt-mirror -c apt-mirror will always give:

apt-mirror: invalid config file specified at /usr/bin/apt-mirror line 101.

There is almost NO information regarding this error but found that the ArsGeek  Blog uses sudo apt-mirror /etc/apt/mirror.list which works perfectly! Only way I could start downloading the repo's.

By: Anonymous

sudo su - apt-mirror -c apt-mirror

By: aussieseb

This worked for me on ubuntu 9.04

sudo apt-mirror

Downloading 48 index files using 20 threads...
Begin time: Thu Jun  4 00:22:02 2009
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Thu Jun  4 00:25:19 2009

Proceed indexes: [PPP]

24.2 GiB will be downloaded into archive.
Downloading 27083 archive files using 20 threads...
Begin time: Thu Jun  4 00:25:23 2009

By: Anonymous

sudo chown -R apt-mirror /var/spool/apt-mirror

# to be sure that user apt-mirror is the owner

sudo chmod -R u+w /var/spool/apt-mirror

# to be sure that user apt-mirror has write access

sudo -u apt-mirror apt-mirror

# to launch the command apt-mirror as user apt-mirror



By: nbensa


how do I  configure apt-mirror to mirror more than one architecture? Is it even possible?



By: Anonymous

Hi, yes you can have multiple architectures. I use apt-mirror to mirror the current ubuntu release with i386 and the proxmox repos with amd64. Simply use deb-amd64 instead of deb in the mirror list file. Niels

By: Anonymous

nbensa I had the same problem as you. By typing sudo apt-mirror the command executed for me but for some reason the command with -c in it in the tutorial didn't work for me..