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


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.

Share

    Comments

    1. 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. 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. Aee consegui termina o download..^^
      vlw ~vagner vai ajudar muitos nos estudos de montagem de laboratórios em casa

    4. Fala Vagner:
      To fazendo uns testes aqui para implementar esse serviço para a ativação dos servidores daqui da empresa, ai estou com uma dúvida, qual seria o tamanho que deveria reservar em uma máquina virtual? Uns 50 Gb para cada distribuição? To fazendo uns testes aqui e vou postar quando da resultado.
      abraços
      PS.: Ainda precisando daquela máquina?

    5. Vagner,
      Tentei postar logando pelas minhas contas do Google, Facebook e Twitter mas sem sucesso, então vai por aqui direto.
      O espaço que estou ocupando em disco é:
      Debian, stable, i386 e 64, main, contrib, non-free e source: 49Gb
      Ubuntu, precise, i386 e 64, main, restricted, universe e multiverse: 61Gb

    6. Boa noite Wagner, tudo bem?
      Gostaria de uma ajuda.
      Fiz os passos para criar o servidor de repositório e tudo deu certo.
      Só que eu tenho uma necessidade diferente aqui na minha empresa, eu preciso manter versões do debian sem atualização, isso por conta do PHP e MYSQL que usamos no desenvolvimento.
      Por exemplo, eu faço um download da versão 6 que está no site hoje, os programadores farão os ajustes para essa versão e não posso mudá-la mais, entendeu?
      Como eu posso fazer para manter essa versão 6, depois baixar uma possível versão 7 e nunca mudar aquele download antigo que fiz da versão 6.
      Deu para entender?
      Agradeço a ajuda.
      Abraços

    7. no foi meu codigo

      #!/bin/bash
      # Repositorio de onde serão baixados os pacotes
      repo=http://br.archive.ubuntu.com/ubuntu
      # 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=bionic
      # Seções de Software utilizados
      sections=main,restricted,universe,multiverse
      # Arquitetura, 32bits(i386), 64bits(amd64)
      arch=amd64
      # Parametros de configuração do Debmirror (Apenas Maverick, utilizando o Rsync, ignorando o arquivo Release.gpg e não $defopt=”-v -p –arch=$arch –host=$repo –root=$root –section=$sections –dist=$dists -e rsync -ignor-release-gpg –postcle$# Linha que executa o Debmirror
      echo -e “n Criando mirror de Ubuntu n”
      debmirror $defopt $localdir
      ####################################

    8. Meu novo projeto!
      Obrigado pelo tutorial, Wagner!
      Por isso amo a comunidade Linux/S.L. aprendo cada vez mais.

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.