Quando temos vários servidores com a mesma distribuição, é interessante criar um repositório de cache local, de modo que, uma vez que um pacote é baixado de um repositório oficial, todos os outros servidores irão baixar do repositório local, não sendo mais necessário realizar novamente o cansativo download dos pacotes que já foram baixados.
Ainda mais quando trabalhamos com
Linux e precisamos realizar o "apt-get upgrade" em todos os servidores, não seria nada agradável ter que baixar da internet os mesmos pacotes que já foram baixados em outro servidor. ;-)
Para isso, mais uma vez o Debian se destaca com a ferramenta
apt-cacher, sendo a instalação e configuração muito simples.
Instalação
O ideal é que o apt-cacher seja executado de um servidor que esteja conectado diretamente na internet.
# apt-get install apt-cacher
Configuração
O principal arquivo de configuração é o
/etc/apt-cacher/apt-cacher.conf. É importante mudar o parâmetro allowed_hosts, pois por padrão todos os hosts estão autorizados a utilizar o cache.
Um exemplo do arquivo de configuração (sem os comentários).
cache_dir=/var/cache/apt-cacher
admin_email=andre.facina@localhost
daemon_port=3142
group=www-data
user=www-data
allowed_hosts=192.168.1.0/24
denied_hosts=
allowed_hosts_6=fec0::/16
denied_hosts_6=
generate_reports=1
clean_cache=1
offline_mode=0
logdir=/var/log/apt-cacher
expire_hours=0
use_proxy=0
use_proxy_auth=0
limit=0
debug=0
path_map = debian ftp.uni-kl.de/pub/linux/debian ftp2.de.debian.org/debian ; ubuntu archive.ubuntu.com/ubuntu ; security security.debian.org/debian-security ftp2.de.debian.org/debian-security
Uma opção interessante é a "path_map", onde é possível definir aliases para diferentes repositórios.
Ativando o apt-cacher na inicialização:
# vi /etc/default/apt-cacher
AUTOSTART=1
Reiniciar o apt-cacher:
# /etc/init.d/apt-cacher restart
Reiniciar o apache (observe que foi criado um arquivo de configuração para o Apache "/etc/apache2/conf.d/apt-cacher.conf"):
# /etc/init.d/apache2 restart
Utilização
Para as máquinas que utilizarão o cache é preciso editar o arquivo de configuração de repositórios do apt,
/etc/apt/sources.list. É preciso remover todos os repositórios e reconfigurá-los na seguinte sintaxe:
deb http://ip_do_servidor_de_cache:porta/apt-cacher/repositorio_debian/debian unstable main contrib non-free
Exemplo:
deb http://192.168.1.1/apt-cacher/ftp.br.debian.org/debian lenny main contrib non-free
Lembra-se da opção "path_map", onde definimos os aliases? Ao invés de passarmos o repositório completo do Debian, podemos apenas passar o alias que definimos no arquivo de configuração, por exemplo:
deb http://192.168.1.1:3142/apt-cacher/security
Agora em outra máquina, após editar o sources.list, execute o "apt-get update" e baixe um pacote, logo em seguida, logue no servidor de cache e veja o conteúdo do diretório /var/cache/apt-cacher, eis aí os pacotes baixados. ;-)
Importando os packages de /var/cache/apt/archives/ para o repositório do apt-cacher
As funcionalidades do apt-cacher não param por aí. Imagine que em seu servidor você já tenha baixado centenas de pacotes, mas sem utilizar o apt-cacher. Então por padrão eles ficaram armazenados no diretório de cache do apt (/var/cache/apt/archives/). É possível importá-los para o repositório do apt-cacher com a ferramenta apt-cacher-import.pl.
Exemplo:
# /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives/ -r
Simples e rápido, ele importará todos os pacotes para o novo repositório.
Gerando relatório de utilização do cache
Também é possível gerar um relatório simples da utilização do cache. Se você deixou a opção "generate_reports=1" no arquivo de configuração (/etc/apt-cacher/apt-cacher.conf), o próprio apt-cacher se encarregará de gerar o relatório todos os dias. Senão pode executá-lo manualmente.
# /usr/share/apt-cacher/apt-cacher-report.pl
Para acessar o relatório digite -> http://ip_do_servidor_de_cache/apt-cacher/report
Para outras informações acesse -> http://ip_do_servidor_de_cache/apt-cacher
O apt-cacher lhe será muito útil se você tiver muitos servidores com a mesma distribuição (Debian, Ubuntu), vai lhe poupar tempo e largura de banda e não veremos o chefe reclamando que a internet está lenta quando estivermos instalando muitos e muitos pacotes nos servidores. :-)
andre.facina:/etc/apt-cacher#
apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...