terça-feira, 10 de fevereiro de 2015

Instalando e Configurando um servidor Apt-Cacher para Debian e Ubuntu + Instalação do Java 8



Escrito por Francies Silva de Lima

Olá a todos.

Recebi esta sugestão em uma entrevista de emprego. Então resolvi por em prática e ver analisar melhor esta ferramenta que acaba sendo muito útil quando o assunto é controle de banda.
Muitos chamam este serviço de WSUS do Gnu/Linux, visto que ele também suporta outros sistemas. Mas vou testar apenas com os sistemas Ubuntu e Debian por enquanto. =D

Imaginem que vocês migraram metade do parque de máquinas da empresa, usando Debian nos servidores e derivados do Ubuntu nas estações. E sempre que precisam atualizar o sistema é aquela lentidão. Pois dependendo do link, essa tarefa pode ser bem demorada.

E se você pudesse baixar os pacotes uma única vez e pudesse distribuir estes pacotes para todas as estações de trabalho da rede?

Não estou falando de utilizar o Squid para esta tarefa. Porque com o tempo, ele ia excluir os pacotes caso o tempo de permanência deles expirasse ou o cache ficasse cheio.

Existe um serviço chamado Apt-Cacher. Ele faz um cache dos pacotes e separa de acordo com a versão do sistema. Escolhi utilizar o Apt-Cacher NG para demonstração pelo fato de ele me parecer mais simples do que o Apt-Cacher original. É o meu ponto de vista. =P

Lembrando que todo o servidor deve possuir um IP fixo. Se você não sabe como fazer isso. Veja no meu tutorial sobre o SAMBA4, lá eu ensino como fixar um endereço IP e o DNS para o servidor.

Tentei separar, mas achei importante mostrar como instalar o Java 8 no Debian e no Ubuntu e como evitar possíveis problemas ao instalá-lo numa rede que usa Apt-Cacher. A dica está na parte final deste texto.


Instalando os pacotes


Mãos à obra. Execute o comando abaixo.

# apt-get install apt-cacher-ng


Configurando o serviço


Edite o arquivo /etc/apt-cacher-ng/acng.conf e veja se os parâmetros abaixo estão desmarcados. Caso eles não estejam no arquivo, adicione-os.

# vim /etc/apt-cacher-ng/acng.conf

O arquivo é bem extenso mas segue as opções básicas que devem estar desmarcadas.

###Início do Arquivo

CacheDir: /var/cache/apt-cacher-ng
LogDir: /var/log/apt-cacher
Port:3142 #A porta pode ser alterada conforme a necessidade do administrador

#Escuta todos os endereços IPv4
BindAddress: 0.0.0.0

#Fontes que serão cacheadas
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives
Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol # Debian Volatile Archives
Remap-secdeb: security.debian.org

ReportPage: acng-report.html
VerboseLog: 1
PidFile: /var/run/apt-cacher-ng/pid

#Arquivos não referenciados na lista de pacotes serão excluídos de acordo com o número dias setados.
ExTreshold: 4

###Fim do Arquivo


Após salvar as alterações no arquivo, reinicie o serviço.

# service apt-cacher-ng restart


Configurando Clientes



Ubuntu e derivados- Configure o proxy no diretório de configuração do APT, adicionando um arquivo com o nome 02proxy no seguinte caminho.

# vim /etc/apt/apt.conf.d/02proxy

Adicione a seguinte linha ao arquivo.

Acquire::http { Proxy "http://ipdoservidor:porta"; };

Exemplo → Acquire::http { Proxy "http://192.168.1.180:3142"; };

Salve e feche o arquivo.

Agora atualize a lista de pacotes. A partir de agora, todos os pacotes baixados serão armazenados no servidor e as próximas estações que precisarem dos mesmos pacotes, vão fazer o download direto do servidor. Lembrando que é necessário adicionar o arquivo 02proxy a todos os clientes.


Debian e derivados- Tentei configurar os clientes Debian da mesma forma que os clientes Ubuntu mas não funcionou. Foi necessário modificar o arquivo /etc/apt/sources.list para que se obtivesse o mesmo resultado.

Exemplo sem o Apt-Cacher

# vim /etc/apt/sources.list (arquivo de configuração dos repositórios Debian GNU/Linux)

deb http://ftp.br.debian.org/debian stable main
deb-src http://ftp.br.debian.org/debian stable main
deb http://security.debian.org/ stable/updates main
deb-src http://security.debian.org/ stable/updates main
deb http://volatile.debian.org/debian-volatile stable/volatile main
deb-src http://volatile.debian.org/debian-volatile stable/volatile main

#Agora com o Apt-Cacher configurado

deb http://192.168.1.180:3142/ftp.br.debian.org/debian stable main
deb-src http://192.168.1.180:3142/ftp.br.debian.org/debian stable main
deb http://192.168.1.180:3142/security.debian.org/ stable/updates main
deb-src http://192.168.1.180:3142/security.debian.org/ stable/updates main
deb http://192.168.1.180:3142/volatile.debian.org/debian-volatile stable/volatile main
deb-src http://192.168.1.180:3142/volatile.debian.org/debian-volatile stable/volatile main

Atualize a lista de pacotes para começar a cachear os pacotes.


Checando o serviço via Web


Você pode visualizar o relatório do serviço via navegador. Basta digitar o endereço IP com a porta de serviço.


A apresentação página é bem simples. Logo abaixo tem um link para acesso das estatísticas do cache. Clique nele e você verá a utilização do cache dos pacotes.





Dicas extras


Instalando Java 8 no Ubuntu/Debian


Sabemos que o OpenJDK não é compatível com os sites de banco (Bradesco, Caixa, BB, Itaú). Neste caso, devemos instalar o Java 8 da Oracle.

Ubuntu e derivados – Para adicionar o repositório da Oracle, adicione este PPA com os seguintes comandos.

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update


Debian e derivados – Para adicionar o repositório da Oracle, modifique o arquivo /etc/apt/sources.list e adicione as seguintes entradas.

# Repositório Oracle
deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main

Após salvar e fechar o arquivo, execute o seguinte comando para obter a chave GPG e validar o repositório.

# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
# apt-get update

Antes de instalar o pacote, remova o OpenJDK

# apt-get remove --purge openjdk-7-*
# apt-get install oracle-java8-installer


PPA WebUpd8-Team X Apt-Cacher-NG



Pesquisando em alguns sites com relação ao repositório WebUpd8, muitos relataram que o mesmo não funciona se for utilizado com o Apt-Cacher.
Consegui integrar o repositório no cache da seguinte forma. No Ubuntu, ele já utiliza o Apt-Cacher automaticamente. No Debian, precisa alterar as linhas do repositório adicionando o IP e a porta do serviço do Apt-Cacher.
Ex:
deb http://192.168.1.180:3142/ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://192.168.1.180:3142/ppa.launchpad.net/webupd8team/java/ubuntu trusty main

Edite o arquivo de configuração /etc/apt-cacher-ng/acng.conf e adicione a seguinte entrada.

#Caso você tenha adicionado o PPA do Java 8, adicione esta linha. Pois o Apt-Cacher não suporta o instalador da Oracle
DontCache: .*.oracle.com

Mas faça esta alteração antes de instalar o Java.


Funciona assim. O pacote oracle-java8-installer baixa o instalador compactado em .tar.gz onde o Apt-Cacher entende que ele é uma lista de pacote e não um instalador. O que causa o erro na instalação do pacote. Setando o parâmetro DontCache para todo site da Oracle, garantimos que o cache não vai manipular o arquivo, mas também não vai guardá-lo em cache. O que é um problema, já que o arquivo possui um tamanho de 153 MB.

Concordo que não é a melhor solução, mas foi a única que eu encontrei.
Outra opção seria usar o proxy HTTP (Squid) da própria rede para armazenar o download do instalador. É possível pois o Apt-Cacher manipula diretamente a source.list do APT, enquanto que o Squid armazena o conteúdo acessado por outros aplicativos, no caso todo o acesso feito via HTTP e FTP.


Considerações Finais


Agradeço a todos que acessaram e leram a publicação. Espero que como sempre, seja de grande ajuda.
Se não for muito incômodo, ajude a divulgar a postagem clicando no g+1. =D
Muito obrigado.


Referências