0

RHEL5 – EOL dia 31 de Março – Copie os repos e bye, bye!

27 Flares 27 Flares ×

Esta chegando o já anunciado End Of Life para o Redhat Enterprise Linux 5 (Atualmente na release 5.11). Já são 10 anos de estrada e agora é hora de fechar o seu ciclo de suporte. Você que ainda possui este sistema operacional, não deixe de fazer o upgrade, pois sem o suporte estendido você será surpreendido por diversas vulnerabilidades… Sem falar na já atual dificuldade com pacotes em versões depreciadas.

Para quem ainda não tem planos de migrar para uma nova versão do sistema operacional e deseja manter o RHEL5 em sua infraestrutura, tenha no minimo uma copia dos repositórios oficiais da distribuição. Você nunca sabe quando vai precisar de um pacote e não tenha duvida, vai ser chato encontrar os rpm’s após o EOL.

A cópia do repositório é bem simples e você vai precisar de um servidor RHEL5 registrado na RHN, com licenciamento valido.  Se o licenciamento não é um problema,  reserve um filesystem de aproximadamente 50GB para a sincronia dos dados e siga o howto abaixo. =)

Para efetuar a copia, utilizamos basicamente o comando reposync. O repositório local é criado com o createrepo. Tudo esta disponível no pacote yum-utils e createrepo. Para disponibilizar os pacotes na sua infraestrutura, você precisa de um servidor http. (Portanto, considere a instalação do WebServer Apache)

# yum install yum-utils httpd createrepo

Agora que você ja sabe os pré-requisitos, vamos preparar o ambiente.

Primeiro, crie esse novo volume. Se você estiver utilizando o LVM, perfeito!

Vou criar um logical volume com o nome lv_repository, utilizando o 50GB do volume group vg_00.

 # lvcreate -L 50GB -n lv_repository vg00

Agora, criar o filesystem em EXT3.

# mkfs.ext3 /dev/vg00/lv_repository

Crie o diretorio /repository e efetue a montagem do volume

# mount -t ext3 /dev/vg00/lv_repository /repository

Com o mountpoint OK, vamos disponibilizar o script para copia. Se você seguiu os passos, não será necessário ajuste no script.
Para ser pratico, crie o arquivo /repository/update.sh, copie a seguinte codigo:

#!/bin/bash
download_dir="/repository"
nice -n -20 /usr/bin/reposync -m -l -p ${download_dir}/ >> /var/log/reposync.log 2>&1

for dirname in `find ${download_dir} -maxdepth 1 -mindepth 1 -type d`; do
  echo $dirname: | tee -a /repository/log/reposync.log
	if [ -f "${dirname}/comps.xml" ]; then
		cp ${dirname}/comps.xml ${dirname}/Packages/ >> /var/log/reposync.log 2>&1
		createrepo  --update -p --workers 2 -g ${dirname}/Packages/comps.xml ${dirname} >> /var/log/reposync.log 2>&1
	else
		createrepo  --update -p --workers 2 ${dirname}/ >> /var/log/reposync.log 2>&1
	fi	
	set -o pipefail
	updateinfo=$(ls -1t  ${dirname}/*-updateinfo.xml.gz 2>/dev/null | head -1 )
	if [[ -f $updateinfo  &&  $? -eq 0 ]]; then
		echo "Updating errata information for ${dirname}" >> /var/log/reposync.log 2>&1
		cp $updateinfo ${dirname}/updateinfo.xml.gz  >> /var/log/reposync.log 2>&1
		gunzip -df ${dirname}/updateinfo.xml.gz  >> /var/log/reposync.log 2>&1
		modifyrepo ${dirname}/updateinfo.xml ${dirname}/repodata/  >> /var/log/reposync.log 2>&1
	else
		echo "No errata information to be processed for ${dirname}" >> /var/log/reposync.log 2>&1
	fi
done

Com o script em mãos, de privilégio de execução para ele e execute-o com o nohup.

# chmod +x /repository/update.sh
# nohup  /repository/update.sh &

Acompanhe a sincronia do repositório com o seguinte log:

# tail -f /var/log/reposync.log
Loaded plugins: product-id
rhel-5-server-cf-tools-1-rpms/group | 104 B 00:00 
[rhel-5-server-cf-tools-1-rpms: 1 of 35 ] Downloading Packages/PyPAM-0.5.0-11.1.el5.x86_64.rpm
PyPAM-0.5.0-11.1.el5.x86_64.rpm | 23 kB 00:00 
[rhel-5-server-cf-tools-1-rpms: 2 of 35 ] Downloading Packages/aeolus-audrey-agent-0.4.10-1.el5.noarch.rpm
aeolus-audrey-agent-0.4.10-1.el5.noarch.rpm | 22 kB 00:00 
[rhel-5-server-cf-tools-1-rpms: 3 of 35 ] Downloading Packages/aeolus-audrey-agent-0.4.5-1.el5.noarch.rpm
aeolus-audrey-agent-0.4.5-1.el5.noarch.rpm | 21 kB 00:00

Pronto… Após conclusão da copia, configure o apache para disponibilizar os dados na sua rede. Para disponibilizar isso no Apache de forma pratica, adicione a configuração no arquivo httpd.conf:

/etc/httpd/conf/httpd.conf

<Directory "/repository/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Agora no diretorio conf.d, crie o arquivo repositorio.conf

/etc/httpd/conf.d/repositorio.conf

<VirtualHost *:80>
    DocumentRoot /repository/
    ServerName 127.0.0.1
    ErrorLog logs/repository-tools-rhel5-error_log
    CustomLog logs/repository-tools-rhel5-access_log common
</VirtualHost>

Agora seu webserver já esta pronto para servir esse conteúdo. O repositório já esta criado, reinicie o apache e configure o yum para buscar os rpm’s no seu novo repositório.

Sendo repetitivo, não esqueça de programar o upgrade do seu sistema operacional. Você já passou da hora de sair da versão 5, nada será garantido apartir de 31 de março!

go nakamas!

RECOMENDADO PARA VOCÊ

Avelino Ferreira

"Meu egoísmo é tão egoísta que o auge do meu egoísmo é querer ajudar..."

Dúvidas? Deixe seu comentário ou entre em contato.