O seu portal de estudos

Criando um repositório local de pacotes para Debian ou Ubuntu

Posted by Vagner Fonseca em 26 de maio de 2011

Ter servidores e desktops em Linux apresenta muitas vantagens em sua rede como estabilidade, segurança, e a capacidade de total customização do ambiente. Mas nem sempre é fácil manter esse parque de máquinas atualizado, ter um repositório próprio é uma ótima opção para facilitar atualizações e instalações de ambientes para testes.



Tudo que precisamos neste caso é uma máquina Debian ou Ubuntu com um servidor Web instalado. Isto não será coberto neste post, apenas a configuração dos repositórios.

Primeiro instale o pacote debmirror, que utiliza o Rsync como método de sincronia. Assim depois de instalado e sincronizado o repositório o Rsync irá apenas fazer download dos arquivos que não existem no servidor, assim poucos arquivos serão baixados para atualizar o servidor.

Instalemos o programa:
# apt-get install debmirror rsync

Para facilitar a configuração do repositório iremos criar um script para ser agendado para atualização constante. Nos arquivos abaixo, antes das opções que são palavras ( como host por exemplo) usaremos dois sinais de menos ( – ), o wordpress costuma mudar para travessão depois da edição.

# vi /usr/local/bin/mirror-debian.sh

#!/bin/bash
# Repositorio de onde serão baixados os pacotes
repo=ftp.br.debian.org
# Lugar do repositório onde estão os pacotes
root=:debian
# Onde na máquina local serao baixados os pacotes
localdir=/var/www/debian/
# Versoes do Debian
dists=stable
# Seções de Software utilizados
sections=main,contrib,non-free
# Arquitetura, 32bits(i386), 64bits(amd64)
arch=i386,amd64
# Parametros de configuração do Debmirror (Apenas stable, utilizando o Rsync, ignorando o arquivo Release.gpg e não baixando pacotes de código fonte)
defopt=”-v -p –arch=$arch –host=$repo –root=$root –section=$sections –dist=$dists -e rsync –ignore-release-gpg –postcleanup –getcontents –nosource”
# Linha que executa o Debmirror
echo -e “\n Criando mirror de Debian \n”
debmirror $defopt $localdir
####################################

Agora vamos criar um script para o repositório do Ubuntu:

# vi /usr/local/bin/mirror-ubuntu.sh

#!/bin/bash
# Repositorio de onde serão baixados os pacotes
repo=us.archive.ubuntu.com
# Lugar do repositório onde estão os pacotes
root=:ubuntu
# Onde na máquina local serao baixados os pacotes
localdir=/var/www/ubuntu/
# Versoes do Ubuntu
dists=maverick
# Seções de Software utilizados
sections=main,restricted,universe,multiverse
# Arquitetura, 32bits(i386), 64bits(amd64)
arch=i386,amd64
# Parametros de configuração do Debmirror (Apenas Maverick, utilizando o Rsync, ignorando o arquivo Release.gpg e não baixando pacotes de código fonte)
defopt=”-v -p –arch=$arch –host=$repo –root=$root –section=$sections –dist=$dists -e rsync –ignore-release-gpg –postcleanup –getcontents –nosource”
# Linha que executa o Debmirror
echo -e “\n Criando mirror de Ubuntu \n”
debmirror $defopt $localdir
####################################

Após criar os arquivos vamos dar permissão de execução aos scripts:

# chmod -v 755 /usr/local/bin/mirror-*

Para testar basta executar manualmente os comandos:
# mirror-debian.sh
Ou

# mirror-ubuntu.sh

Lembrando que os repositórios terão todos os pacotes disponíveis das distribuições, por isso o download inicial de cada um será de mais de 40 GB, porém depois de sincronizados os downloads serão muito, mas muito menores.

Segue abaixo um screenshot de um repositório de Ubuntu sendo sincronizado com este script de Debmirror

Faça o agendamento dos scripts na crontab do seu sistema, aguarde o download ser finalizado (vai levar um bom tempo dependendo da sua conexão ;-p) e basta utilizar seus repositórios em seus clientes.

Supondo que o IP do Servidor Web seja 192.168.1.200, nos clientes Debian colocaremos a seguinte linha na sources.list:

# vi /etc/apt/sources.list

deb http://192.168.1.200/debian stable main contrib non-free
########################

Nos clientes Ubuntu colocaremos a seguinte linha:

deb http://192.168.1.200/ubuntu maverick main restricted universe multiverse
########################

Atualize seus clientes com:

# apt-get update

Para testar faça:

# apt-get install cmatrix

Espero que tenha ajudado aqueles que tem dúvida em como criar um repositório espelho de Debian ou Ubuntu, e não se esqueçam de assinar nosso Portal.

Anúncios

5 Respostas to “Criando um repositório local de pacotes para Debian ou Ubuntu”

  1. Luciano Silva said

    Saberia ensinar como criar um repositório em um servidor na web?
    Estamos precisando disso aqui na ONG onde trabalho para colocar alguns pacotes específicos de uso nosso.

    • Luciano,

      Caso você tenha acesso ao servidor web no nível de administrador do servidor o procedimento é o mesmo, caso o seu acesso seja apenas de hospedagem seria muito difícil criar esse servidor lá, já que você não teria acesso a protocolo rsync nem ao debmirror.

      Espero ter esclarecido sua dúvida.

  2. Daniel Moura said

    Grande Vagner, este seu tutorial está demais, só tenho uma dúvida, e se eu quiser criar um repositório para a nova versão do ubuntu 11.04, onde e qual dos dois scripts tenho q alterar?

    • Daniel,

      Para criar um repositório para outra versão do Ubuntu você deve mudar no segundo script (mirror-ubuntu.sh ), cujo nome já diz que é para Ubuntu ;-P , na linha “dists=maverick” para “dists=natty” e caso quiera fazer mais de uma versão do Ubuntu no repositório utilize “dists=maverick,natty,oneiric” (oneiric será a próxima versão do Ubuntu).

      Espero ter ajudado e em breve teremos um review interessante sobre o Gerenciamento de Servidores com Ubuntu via Web. Aguarde.

  3. Rafael Cruz. said

    Aee consegui termina o download..^^

    vlw ~vagner vai ajudar muitos nos estudos de montagem de laboratórios em casa

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: