O objetivo deste post, é mostrar como criar um repositório local do CentOS.
Criando um repositório local você tem alguns benefícios interessantes, dentre eles a economia do uso do link de internet em suas máquinas toda vez que for atualizar ou instalar pacotes novos, ou ainda, pode ser útil nos casos onde você não pode liberar acesso internet para todas as máquinas. Então você configura o seu repositório local e aponta as suas demais máquinas para buscarem os pacotes nele.
Neste tutorial, vamos fazer um repositório local do CentOS 6.4 para a arquitetura x86_64 (64 Bits) e configurá-lo para enviar emails de alerta com o Exim
Preparação do ambiente
Instalação do Apache
Instalar o pacote createrepo
Instalação do pacote createrepo, que cria informações de repositório utilizadas pelo yum e armazena estes dados numa pasta chamada “repodata”.
Construir a estrutura do repositório
*Neste caso, queremos apenas pacotes 64bits
** Note que criaremos também uma pasta chamada epel. Será utilizada para baixarmos também pacotes do repositório Epel, necessário para a instalação de alguns pacotes extras, que não constam na mídia de instalação do CentOS. Maiores informações em http://fedoraproject.org/wiki/EPEL/FAQ#What_is_EPEL.3F
Criando o link simbólico:
Precisamos copiar o conteúdo do DVD para o Apache. Então primeiro precisamos montar a ISO:
Copiando os arquivos:
Criando o repositório:
Script de rsync das atualizações
Agora iremos criar um script que será responsável por baixar as atualizações e utilizar um servidor smtp interno para enviar um e-mail informando o momento em que o download das atualizações foi concluído.
#CentOS updates
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/updates/x86_64/ --exclude=debug /var/www/html/centos/6.4/updates/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/updates/x86_64/
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/fasttrack/x86_64/ --exclude=debug /var/www/html/centos/6.4/fasttrack/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/fasttrack/x86_64/
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/extras/x86_64/ --exclude=debug /var/www/html/centos/6.4/extras/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/extras/x86_64/
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/cr/x86_64/ --exclude=debug /var/www/html/centos/6.4/cr/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/cr/x86_64/
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/contrib/x86_64/ --exclude=debug /var/www/html/centos/6.4/contrib/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/contrib/x86_64/
/usr/bin/rsync -avrt rsync://mirror.cogentco.com/CentOS/6.4/centosplus/x86_64/ --exclude=debug /var/www/html/centos/6.4/centosplus/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/centosplus/x86_64/
/usr/bin/rsync -avrt rsync://mirrors.rit.edu/epel/6/x86_64/ --exclude=debub /var/www/html/centos/6.4/epel/x86_64/
/usr/bin/createrepo --update /var/www/html/centos/6.4/epel/x86_64
nc 127.0.0.1 25 < /root/email
Conteúdo do email que será enviado ao término das atualizações (/root/email):
MAIL FROM:repositorio@ricardomartins.com.br
RCPT TO:sysadmin@ricardomartins.com.br
DATA
SUBJECT: Novas atualizações no Repositório CentOS
O repositório foi atualizado.
.
QUIT
Ajustando as permissões para a execução do script:
Agendando a execução do script:
Configurando o Exim para o envio de e-mails
Primeiro instalamos o Exim e em seguida removemos o Sendmail (caso esteja instalado).
A configuração do exim é feita no arquivo /etc/exim/exim.conf. Como a configuração padrão atende ao que queremos fazer, não vou modificar nada.
Removendo o Sendmail:
Inicializando o Exim e garantido sua inicialização no boot
Configurando os servidores que serão clientes do nosso repositório local
Faça antes um backup do arquivo original:
Em seguida altere a url para o endereço do seu servidor interno.
name=CentOS-$releasever - Base
baseurl=http://ip.do.servidor/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[updates]
name=CentOS-$releasever - Updates
baseurl=http://ip.do.servidor/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS-$releasever - Extras
baseurl=http://ip.do.servidor/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[cr]
name=CentOS-$releasever - Cr
baseurl=http://ip.do.servidor/centos/$releasever/cr/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://ip.do.servidor/centos/$releasever/contrib/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[centosplus]
name=CentOS-$releasever - Centosplus
baseurl=http://ip.do.servidor/centos/$releasever/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[epel]
name=CentOS-$releasever - Epel
baseurl=http://ip.do.servidor/centos/$releasever/epel/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Testando
Vá em uma máquina cliente, e faça uma atualização:
Ou uma pesquisa:
Testando a instalação de um pacote:
Por hoje é isso…