Algum tempo atras precisei instalar algumas coisas em uma maquina que estava em ambiente de producao e fui surpreendido com a dificuldade, posso afirmar que foi tenso conseguir concluir a tarefa. Questionando a equipe descobri que tinhamos um repositorio, mas que nao estava atualizado e nao atendia muito bem.Combinei de estudar a situacao e resolver da melhora maneira possivel. Pois bem, a ideia por tras desse post e usar um Ubuntu Server 14.04 como repositorio para Python, CentOS e Ubuntu ao mesmo tempo, em outras palavras uma maquina servindo os tres simultaneamente.Em um primeiro momento parece um pouco complexo ou ate mesmo louco usar isso. Tenho certeza que apos executar todos os passos a seguir vai perceber que e facil levantar um ambiente desses. Repositorio pypi(Bandernatch)Precisamos do virtualenv paraisolar a instalacao do repositorio do python.# apt-get installpython-virtualenvCrie um virtualenv comqualquer nome, optei por criar com o nome da aplicacao.# virtualenv bandersnatchBaixe os pacotes indicados norequirements.txt abaixo.# cd bandernatch# bin/pip install -rhttps://bitbucket.org/pypa/bandersnatch/raw/stable/requirements.txtNecessario rodar a aplicacaouma vez, pois assim o arquivo de configuracao e a pasta pypi seracriada. Lembre-se de iniciar o venv para rodar a aplicacao.# . bin/activate # sudo bandersnatch mirrorCrie um arquivo chamado run.shpara facilitar rodar a aplicacao das proximas vezes.#vim/home/dev/bandersnatch/run.sh#!/bin/bash./home/dev/bandersnatch/bin/activatesudo/home/dev/bandersnatch/bin/bandersnatch mirror Para centralizar tudo em umaunica pasta optei por fazer dois links simbolicos. Primeiro para oarquivo de configuracao, localizado na pasta /etc/ e outro para apasta onde a aplicacao guarda os pacotes baixados.# sudo mv/etc/bandersnatch.conf bin/# sudo ln -sbin/bandersnatch.conf /etc/bandersnatch.conf# sudo mv /srv/pypi .# ln -s pypi/ /srv/pypiRepositorio CentOS(Reposync)Para montar o repositoriooffline para CentOS vamos precisar de dois pacotes.# sudo apt-get installyum-utils createrepoVamos precisar de um linksimbolico para que os comandos adiantes funcionem corretamente.Afinal, nao estamos no CentOS e sim no Ubuntu Server 1404.# sudo ln -s /etc/yum/yum.conf/etc/yum.confMonte o cdrom do centos noqual voce quer fazer o repositorio e copie todo conteudo da pastapackage da media para dentro de um diretorio de sua escolha,optei pelo nome: centos/6.5. Importante lembrar queprecisamos que ele seja dentro da pasta root do seu webserver. (comoe possivel perceber usei /var/www/html, lembre-se que o default donginx e: /usr/share/nginx/html)# sudo cp -R/media/cdrom/Packages /var/www/html/centos/6.5/Precisamos do arquivocomps.xml que esta dentro da media, copie para a pasta junto aospacotes.# sudo cp/media/cdrom/repodata/*comps*.xml/var/www/html/centos/6.5/Packages/comps.xml De dentro da pasta dorepositorio rode o comando createrepo para gerar o indice# sudo createrepo -gPackages/comps.xml .Repositorio esta feito! OsCentOS que forem utilizar esse repositorio vao precisar de umarquivo .repo personalizado. Pois bem, o conteudo dele deve ser: [DEPED_REPO]name=Repositorio DEPEDbaseurl=http://192.168.10.38/centos/6.5/gpgcheck=0 enabled=1 Repositorio Ubuntu(apt-cacher)Optei pelo apt-cacher ao invesdo apt-mirror, porque ele faz o download sob demanda. Ou seja, oservidor de repositorio so vai buscar somente os pacotes de ubuntuque forem solicitados. Toda vez que uma outra maquina solicitar omesmo pacote, ele nao baixa duas vezes, ele utiliza o cache local. Oapt-mirror faz o download do repositorio todo, isso consome muitomais espaco em disco.# apt-get install apt-cacherAcesse o apt-cacher.conf evamos configurar algumas opcoes:# vim/etc/apt-cacher/apt-cacher.confcache_dir =/var/cache/apt-cacherlog_dir = /var/log/apt-cacherdaemon_port = 3142group = www-datauser = www-dataallowed_hosts = *Nas maquinas clientes, vamosprecisar alterar o sources.list. # vim /etc/apt/sources.listColoque antes de todas aslinhas uteis do arquivo o endereco ip:porta/apt-cacher do nossoservidor. Ex: A ideia de escrever