Criação de um repositório (mrepo) - Red Hat e CentOS 5 (com atualização na RHN para RedHat)

Esse artigo descreve a criação de um repositório para Red Hat e CentOS utilizando a ferramenta mrepo. Demonstra também como mantê-lo atualizado, mediante a utilização de uma conta válida na RHN, para distribuição local de atualizações.

[ Hits: 51.211 ]

Por: Ricardo Katz em 07/11/2009


Introdução



Hoje a distribuição comercial (paga) mais utilizada é a Red Hat. Junto com ela e a disponibilização de seu código fonte (SRPMs), temos distribuições que são recompilações do Red Hat, sendo a principal a CentOS.

Muitos administradores se vêem em posições pouco confortáveis quando trata-se da atualização de seus sistemas operacionais pelo motivo do alto consumo de banda que essas atualizações geram.

Apesar de existirem métodos não descartados para criação e otimização dessa banda, tal como a criação de um repositório local utilizando-se do RSYNC (o MREPO faz isso automaticamente) ou utilizando-se de algum cache Squid, o mrepo mostrou-se como uma solução avançada para esses casos, pois:

1) Criado pela DAG, suporta protocolos para atualização como FTP, HTTP, RSYNC, SFTP, YOU e RHN (assim, havendo uma licença válida de Red Hat, podemos criar um mirror local de atualização do mesmo).

2) Escrito em python, de fácil leitura e alteração

3) Apesar desse artigo falar de YUM (CentOS e RedHat), ele pode disponibilizar repositórios APT, UP2Date etc.

4) Faz a montagem de imagens ISO para a disponibilização dos RPMs Base

Entre muitos outros, vide em: http://dag.wieers.com/home-made/mrepo/

Pré-requisitos

O Mrepo possui alguns pré requisitos para funcionar, sendo:

1) Apache (ou outro servidor Web) instalado.

O servidor Apache (ou outro servidor Web qualquer) deve estar instalado para disponibilizar ao repositório para os clientes. A instalação do Apache não será abordada nesse artigo, devendo apenas estar claro que o DocumentRoot em questão (do VirtualHost ou padrão) deverá apontar para o diretório que será disponibilizado pelo mrepo.

Para fins de melhor entendimento, utilizaremos como referência à esse diretório a palavra "wwwdir".

No meu caso, o wwwdir será o diretório /var/www/html.

2) Bibliotecas do RHN / Yum e bibliotecas python instaladas

O mrepo tem uma série de dependências para instalação que não são documentadas e/ou cobradas durante a instalação do RPM, sendo elas:
  • Python - Geralmente já vem instalado por padrão.
  • Pacote rpm-build - Instalado através do comando "yum install rpm-build"
  • Pacote createrepo - Instalado através do comando "yum install createrepo"
  • Bibliotecas do RHN - Geralmente essas bibliotecas já vem instaladas no CentOS 5 (caso você opte por utilizar o mesmo e não o Red Hat) e não precisam ser instaladas.
  • Bibliotecas Python - As seguintes bibliotecas Python (instaláveis via Yum) são necessárias:

    a) pyOpenSSL - Deve ser instalada com o comando yum install pyOpenSSL
    b) PyXML - Deve ser instalada com o comando yum install PyXML

3) ISOs do sistema que você deseja servir (por exemplo, ISO do CentOS 5.4 x86 etc).

As ISOs são importantes para a disponibilização do repositório base (conteúdo do CD na instalação). Como por exemplo ao executar um yum install, pode ser que o pacote exista no CD / DVD de instalação e apenas não tenha sido instalado, a presença do ISO supre essa necessidade.

Por exemplo, para o meu laboratório foram utilizadas imagens ISO do Red Hat 5.4 (x86 e x86_64) e CentOS 5.4 (idem!).

As imagens devem ser salvas no que definiremos, por hora, como "srcdir", ou seja, o diretório onde ficarão os fontes. Apenas para agilizarmos (será explicado adiante), o diretório "/mrepo" pode ser definido como o "srcdir". Os ISOs devem ser disponibilizados no diretório "/srcdir/DistroVersao-arquitetura", por exemplo, /mrepo/centos5-i386 e /mrepo/rhel5-x86_64.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação do MRepo
   3. Configuração global do MRepo
   4. Configuração de arquivos de repositório (CentOS)
   5. Configuração de arquivos de repositório (RedHat)
   6. Finalmente! Realizando a atualização dos repositórios
Outros artigos deste autor

Autenticação de servidores CentOS/Red Hat 6 em Windows 2008

Leitura recomendada

Traduzindo mensagens no Linux

GNU/Linux, um projeto de sucesso (parte 1)

RSS com o Superkaramba

Call Center no Linux

Logrotate, uma importante ferramenta de administração dos logs do sistema

  
Comentários
[1] Comentário enviado por amandahla em 09/11/2009 - 07:43h

Muito bom!!!! :)

[2] Comentário enviado por jackadamantina em 09/11/2009 - 17:39h

Belo artigo rapaz,

Mas fiz como havia mencionado, e um problema surgiu.

Como você fez para resolver o problema do rhnget, que aponta para o up2date. Afinal no redhat 5 não há o up2date.

Grato.

[3] Comentário enviado por jackadamantina em 10/11/2009 - 13:35h

Muito bem, depois de instalado e tudo..blz..

No enttanto ele não tem baixado nenhuma das atualizações, mesmo tento criado todos os diretórios e adicionados os arquivos .xml e demais arquivos.

Mas o problema é que não baixa os arquivos rpm's, mesmo ele mostrando que existem 2000 e poucos arquivos...o que faço?

2393/2399 - gimp-data-extras-2.0.1-1.1.1.noarch.rpm
2394/2399 - fonts-hindi-2.3.1-1.el5.noarch.rpm
2395/2399 - gdk-pixbuf-devel-0.22.0-25.el5.i386.rpm
2396/2399 - xorg-x11-fonts-syriac-7.1-2.1.el5.noarch.rpm
2397/2399 - compat-libstdc++-33-3.2.3-61.i386.rpm
2398/2399 - Global_File_System-kn-IN-5.2-1.noarch.rpm
2399/2399 - libsemanage-1.9.1-4.4.el5.i386.rpm

Saving Primary metadata
Saving file lists metadata
Saving other metadata
rhel5-i386: Create repomd repository for rhns

Saving Primary metadata
Saving file lists metadata
Saving other metadata


Utilizei o comando mrepo -fugvvv

[4] Comentário enviado por rikatz em 10/11/2009 - 13:53h

Olá Jack:

Veja uma coisa pra mim:

No repositório do Red Hat, por exemplo você terá dois diretórios...o RPMS.os e o RPMS.updates.

Aqui no meu caso, o RPMS.os contém kernel-2.6.18-164.el5.i686.rpm e o RPMS.updates kernel-2.6.18-164.6.1.el5.i686.rpm

Se não tiver (ou seja, não ta baixando atualização mesmo), dê uma olhada no início, no momento do login se a RHN não retorna alguma mensagem de erro, como avisando que sua conta está desabilitada, não possui mais licenças, user/senha incorretos :)

Aconteceu aqui comigo, eu tive que desabilitar uma licença de um servidor para fazer o registro do meu servidor de repositórios.

Ats

[5] Comentário enviado por jackadamantina em 10/11/2009 - 14:10h

Beleza,

Agora parece que está quase funcionando, no entanto ele baixa
Reading config file /etc/mrepo.conf.d/redhat.conf
Setting option arch in section [rhel-5-current] to: i386
rhel-5-current-i386: Updating Red Hat Server 5 Current (i386)
rhel-5-current-i386: Mirror packages from rhns:///rhel-i386-server-fastrack-5 to /mrepo/rhel-5-current-i386/fastrack
aspell-nl-0.1e-2.el5.i386.r ########################## Done.
authconfig-5.3.21-6.el5.i38 authconfig-5.3.21-6.el5.i38 authconfig-5.3.21-6.el5.i38 rhnget: CommunicationError: Error downloading package authconfig-5.3.21-6.el5.i386.rpm from rhel-i386-server-fastrack-5. Skipping.
Error communicating with server. The message was:
Forbidden
authconfig-gtk-5.3.21-6.el5 authconfig-gtk-5.3.21-6.el5 authconfig-gtk-5.3.21-6.el5 rhnget: CommunicationError: Error downloading package authconfig-gtk-5.3.21-6.el5.i386.rpm from rhel-i386-server-fastrack-5. Skipping.
Error communicating with server. The message was:
Forbidden
authd-1.4.3-14.i386.rpm: authd-1.4.3-14.i386.rpm: authd-1.4.3-14.i386.rpm: rhnget: CommunicationError: Error downloading package authd-1.4.3-14.i386.rpm from rhel-i386-server-fastrack-5. Skipping.
Error communicating with server. The message was:
Forbidden
avahi-0.6.16-6.el5.i386.rpm avahi-0.6.16-6.el5.i386.rpm avahi-0.6.16-6.el5.i386.rpm rhnget: CommunicationError: Error downloading package avahi-0.6.16-6.el5.i386.rpm from rhel-i386-server-fastrack-5. Skipping.

[6] Comentário enviado por rikatz em 10/11/2009 - 14:23h

Hum, c ta rodando como root? Estranho ele dar isso, aqui eu não tive esse problema não...Tenta fazer o download direto da RHN e ve se funciona, por exemplo (ou se ele também te dá um Forbidden)

às vezes eh problema da própria RHN.

:)

[7] Comentário enviado por efcunha em 05/03/2010 - 15:00h

Este tendo o sequinte erro nas maquinas onde tento atualizar.

[root@apps yum.repos.d]# yum update
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
http://172.16.1.18/rhel5-x86_64/RPMS.os/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

[8] Comentário enviado por erik.costa em 30/03/2011 - 09:50h

@efcunha Rapaz, erro 404 o apache não tá encontrando o arquivo, tente acessar o repositório pelo browser pra ver se chega. Isso deve ser configuração do httpd.conf

@rikatz Otimo artigo, funcionou beleza aqui pra atualizar na RedHat! Isso resolve de uma vez o problema com a banda pra atualizações de SO. Valeu!

[9] Comentário enviado por rodmonte em 24/10/2013 - 12:50h

Fala, Katz!

Parabéns pelo artigo!

Estou tentando reproduzir suas instruções aqui mas está rolando um problema. No passo:

# wget -O /usr/share/rhn/RHNS-CA-CERT http://rhn.redhat.com/help/RHNS-CA-CERT

Está sendo gerado um html e não o certificado. Esse certificado não está sendo disponibilizado em outro lugar, não?

Valeu!


[10] Comentário enviado por rikatz em 30/10/2013 - 18:06h

Fala Rodrigao!

Cara, duas soluções:

1) Muda em todas as linhas do repositório Red Hat 'rhns:///' pra 'rhn:///'
2) Pega uma máquina que esteja em Red Hat 5.5 ou acima, e pega o arquivo /usr/share/rhn/RHNS-CA-CERT e copia pro seu servidor de repositório.

Ats


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts