Server Installation
1. Install apt-cacher and apache2 webserver
sudo apt-get install apt-cacher apache2
2. Enable apt-cacher
Edit /etc/default/apt-cacher and change autostart to 1
Note: I had problems doing this on a machine with apache already installed.
Added by JT: Restart apache if you already had it installed: sudo invoke-rc.d apache2 restart
Added by pablodav: I suggest to restart apt-cacher also: sudo invoke-rc.d apt-cacher restart
Then test by going to http://server/apt-cacher to verify that it's running. Added by pablodav: In Jaunty use http://server:3142 instead http://server/apt-cacher (this seems to be not working anymore with /apt-cacher).
Server Configuration
Edit /etc/apt-cacher/apt-cacher.conf if you want to change any options. The only one I changed was admin_email.
Import any existing apt-get cache:
- sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
Added
by pablodav: I strongly recommend to use -d option for symlinks, In
Jaunty I had to use sudo /usr/share/apt-cacher/apt-cacher-import.pl -s
/var/cache/apt/archives
Load Packages on Server from CD
Around
upgrade time, you may find it useful to get the CD image instead of
using the slow update servers, and populate your cache using that.
First, download your CD image(s) of choice (I'd recommend using bit-torrent).
Second, mount the CD image on the server running apt-cacher :
sudo mount -o loop /home/username_or_other_path/ubuntu-9.10-rc-alternate-i386.iso /media/cdrom0
Third,
run the import on the CD image, you need the -R is needed to recurse
into the CD directory structure, the -r just makes sure they are copied
to the cache instead of trying to link:
sudo /usr/share/apt-cacher/apt-cacher-import.pl -R -r /media/cdrom0
You should see the script saying that it is importing a lot of packages.
Client Configuration Options
There are two ways to configure your clients to use apt-cacher. Added
by pablodav: I don't recommend to change every line with step 1. In
Jaunty /apt-cache does not works. Jump to step 2 for Client
Configuration.
Modify your sources.list
In client /etc/apt/sources.list insert apt-cacher-server/apt-cacher/ in each line, ie
- deb http://archive.ubuntu.com/ubuntu/ dapper main restricted
becomes
- deb http://apt-cacher-server/apt-cacher/archive.ubuntu.com/ubuntu/ dapper main restricted
(Warning: The apt-cacher web page advises to also add ':3142' - this caused the system to fail for me)
Added by JT: on gutsy and hardy, I could not get this to work with server/apt-cacher/ but server:3142/ (NB: without the /apt-cacher/) worked fine. To clarify, use eg. deb http://apt-cacher-server:3142/archive.ubuntu.com/ubuntu/ hardy main restricted
Scientus: I think this is because apt-cacher is its own http server and this setup use apache
Then run
- apt-get update
Use as a proxy to APT
Static configuration
In a terminal, type:
sudo nano /etc/apt/apt.conf.d/01proxy
Inside your new file, add a line that says:
Acquire::http::Proxy "http://<IP address or hostname of the apt-cacher server>:3142";
"Roaming" mode
This method
is useful if you are alternating between office and home with a laptop
for example. It involves using the ping command to determine if the
apt-cacher server is available at boot-time and then configure the APT
proxy or not.
- Open /etc/rc.local (alt-F2, "gksu gedit /etc/rc.local")
- Change the top from "#!/bin/sh -e" to "#!/bin/bash"
- put this near the end (before "exit 0" if present) replacing "SERVER_NAME_HERE" with your server's resolvable name or it's IP:
. /lib/lsb/init-functions log_daemon_msg "Configuring APT cache proxy" "(based on SERVER_NAME_HERE's presence...)" ping -c 1 SERVER_NAME_HERE &> /dev/null if [ $? = "0" ]; then echo "Acquire::http::Proxy \"http://SERVER_NAME_HERE:3142\";" > /etc/apt/apt.conf.d/01SERVER_NAME_HEREproxy else rm /etc/apt/apt.conf.d/01SERVER_NAME_HEREproxy &> /dev/null fi log_end_msg 0
"Roaming" mode alternative solution
Added by "nuaimat": The
above method didn't work for me, so I created two sources.list
versions, one named sources.list.home and other one named
sources.list.work (both inside /etc/apt) I modified sources.list.home as mentioned above (Static configuration Section) then I login as root
sudo su -
then created a shell script (don't forget to replace "SERVER_NAME_HERE" with your server's resolvable name or it's IP ) :
. /lib/lsb/init-functions log_daemon_msg "Configuring APT cache proxy" "(based on SERVER_NAME_HERE's presence...)" unlink /etc/apt/sources.list ping -c 1 SERVER_NAME_HERE &> /dev/null if [ $? = "0" ]; then log_daemon_msg "found live $?" ln -s /etc/apt/sources.list.home /etc/apt/sources.list &> /dev/null for i in /etc/apt/sources.list.d/*.list; do local_online=`grep "SERVER_NAME_HERE" $i|wc -l` if [ $local_online = "0" ]; then sed -i 's|http://|http://SERVER_NAME_HERE/apt-cacher/|g' $i &> /dev/null fi; done; else log_daemon_msg "not found" ln -s /etc/apt/sources.list.work /etc/apt/sources.list &> /dev/null for i in /etc/apt/sources.list.d/*.list; do sed -i 's|http://SERVER_NAME_HERE/apt-cacher/|http://|g' $i &> /dev/null done; fi log_end_msg 0
- save it as /root/check-apt-cacher
- chmod +x /root/check-apt-cacher
- crontab -e
- using your favourite editor add the following line to the crontabs
*/1 * * * * /bin/bash /root/check-apt-cacherthis script will run each minute (*/1) you can change it as you see fit.
Referenced:
https://help.ubuntu.com/community/Apt-Cacher-Server
No comments:
Post a Comment
If you have any suggestion or clarification you send it via on this form.