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/ftp.de.debian.org/debian, and the Ubuntu repository will be in /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu. 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/clean.sh script. That's what we do now:
/bin/bash /var/spool/apt-mirror/var/clean.sh
The output will look like this:
server1:~# /bin/bash /var/spool/apt-mirror/var/clean.sh
Removing 157 unnecessary files [13316096 bytes]...
[0%]................done.
Removing 18 unnecessary directories...
[0%]..................done.
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
again.
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 http://192.168.0.100/debian and http://192.168.0.100/ubuntu (in this tutorial 192.168.0.100 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/ftp.de.debian.org/debian /var/www/debian
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu
Remember to adjust these commands if you use different mirrors than ftp.de.debian.org and de.archive.ubuntu.com.
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/ftp.de.debian.org/debian/dists
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/ftp.de.debian.org/debian/dists
ln -s sarge/ stable
Remember to adjust this command if you use a different mirror than ftp.de.debian.org.
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/ftp.de.debian.org/debian/dists
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.
Sub pages
Suggested articles
7 Comment(s)
Comments
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.
sudo su - apt-mirror -c apt-mirror
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
[20]...
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
Hello,
how do I configure apt-mirror to mirror more than one architecture? Is it even possible?
Thanks!
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
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..
English |
Deutsch