Como configurar um repositório YUM em sua rede local (Fedora)
Autor: Julio Lazarotti | Publicado: 2010-01-22T08:14:00-02:00

Este tutorial mostra como criar um repositório yum no Fedora&nbsp; para sua rede local. Ter um “mirror” local em seu servidor Linux é útil se você tem algumas estações Fedora na sua rede local. Isso economiza e muito, sua banda de internet. Pois você programa a sincornização do seu servidor com os repositórios da internet. Além de garantir que todas as estações terão acesso às atualizações do SO.

ATENÇÃO: Esse tutorial é somente para pessoas com conhecimentos avançados em Linux. Por favor, contrate um profissional especializado para realizar esse procedimento. Em caso de quaisquer dúvidas ou sugestões, use a seção ‘help’ aqui do blog.

1. Nota Preliminar
Neste tutorial, eu uso o hostname = server1.example.com com o endereço IP 192.168.0.100. Essas configurações podem ser diferentes para você, então você tem que substituí-los sempre que necessário.
O repositório yum será acessível através de http;
O “path” padrão do Apache no Fedora é /var/www/html. Por isso vou criar o repositório no /var/www/html/yum . Se você estiver usando um “vhost” diferente, você pode ter que ajustar os caminhos.
Todos os comandos devem ser efetuados como “root”

2. Instalando o Apache (httpd)
Se você já tem o Apache rodando em seu servidor, pule a instalação e vá direto para o ITEM 3. Do contrário, vamos instalar e configurar o serviço:&nbsp;
[root@server1 /]# yum install httpd

Após concluir a instalação, criaremos os links de inicialização do sistema para o Apache (assim o Apache iniciará automaticamente quando o sistema é inicializado):
[root@server1 /]# chkconfig --levels 235 httpd on

E finalmente, inicializamos o serviço:
[root@server1 /]# /etc/init.d/httpd start

3. Criando o Repositório
3.1. Primeiro vamos instalar a ferramenta creatrepo:
[root@server1 /]# yum install createrepo

Vamos criar, por exemplo, um repositório para os pacotes RPM do Fedora 8 i386 que ficarão em /var/www/html/yum/base/8/i386
E os pacotes de atualização ficarão em /var/www/html/yum/updates/8/i386
Dessa forma, todos os meus pacotes de instalação ou atualização ficarão sempre dentro de uma árvore de diretórios organizada. Caso eu queira incluir pacotes para o Fedora 11 x86_64, os diretórios seriam:
Instalação = /var/www/html/yum/base/11/x86_64
Atualização = /var/www/html/yum/update/11/x86_64

3.2. Vamos criar os repositórios para o Fedora 8 i386
[root@server1 /]# mkdir -p /var/www/html/yum/base/8/i386
[root@server1 /]# mkdir -p /var/www/html/yum/updates/8/i386

3.3. Agora, vamos popular o diretório /var/www/html/yum/base/8/i386. A maneira mais fácil é para inserir o DVD do Fedora 8. Faça a “montagem do DVD”, copie os pacotes e “desmonte o DVD”:
[root@server1 /]# mount /dev/cdrom /mnt
[root@server1 /]# cd /mnt/Packages
[root@server1 /]# cp -v * /var/www/html/yum/base/8/i386
[root@server1 /]# cd /
[root@server1 /]# umount /mnt

O DVD contém apenas um conjunto básico de pacotes. Se você quer ter todos os pacotes disponíveis do Fedora 8 dentro de seu mirror (/var/www/html/yum/base/8/i386), você pode baixar todos os pacotes (usando o rsync) para a pasta, a partir de um espelho do Fedora 8. Vá em http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/8, para encontrar um “mirror” que oferece rsync, e baixar os pacotes (isso pode levar um longo tempo, seja paciente):
[root@server1 /]# rsync-avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/8/Everything/i386/os/Packages/ /var/www/html/yum/base/8/i386
Em seguida, execute o comando createrepo:
[root@server1 /]# createrepo /var/www/html/yum/base/8/i386
Isto irá criar um diretório repodata / var/www/html/yum/base/8/i386. Para conferir seu conteúdo deve-se digitar o seguinte:
[root@server1 /]# ls -l /var/www/html/yum/base/8/i386/repodata/
total 9268
-rw-r--r-- 1 root root 2227275 2007-12-18 21:11 filelists.xml.gz
-rw-r--r-- 1 root root 6487453 2007-12-18 21:11 other.xml.gz
-rw-r--r-- 1 root root&nbsp; 747714 2007-12-18 21:11 primary.xml.gz
-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 951 2007-12-18 21:11 repomd.xml
[root@server1 /]#

3.4. Agora, vamos popular o diretório updates (/var/www/html/yum/updates/8/i386). Vá em http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/8 novamente, encontre um “mirror” que ofereça rsync e baixe os pacotes, conforme o commando abaixo:
[root@server1 /]# rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
Para que nosso “mirror” local funcione em sincronia, é preciso configurá-lo para baixar as atualizações, automaticamente. Para isso, vamos criar um cron job. Por exemplo, para baixar as últimas atualizações todos os dias, às 04:23 h, criamos o cron job a seguir:
[root@server1 /]# crontab -e
------------------------------------------------------------------------------------------------------------ 
23 4 * * * /usr/bin/rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
------------------------------------------------------------------------------------------------------------
Pronto, seu mirror local está configurado e pronto para ser atualizado automaticamente.

4. Configuração das estações
Para que as nossas estações “busquem” os pacotes RPM em nosso repositório yum local, é necessário modificar o arquivo /etc/yum.conf em cada estação (você pode até fazer isso no próprio servidor, com seus pacotes próprios. Dessa forma, economizará mais banda de internet com o servidor):
[root@server1 /]# vi /etc/yum.conf
Localize as linhas...
------------------------------------------------------------------------------------------------------------ 
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
------------------------------------------------------------------------------------------------------------
…e adicione as linhas a seguir:
------------------------------------------------------------------------------------------------------------ 
[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&amp;arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&amp;arch=$basearch
enabled=1
gpgcheck=0

------------------------------------------------------------------------------------------------------------
Dessa forma, o arquivo /etc/yum.conf COMPLETO deve ser parecido com o a seguir:

------------------------------------------------------------------------------------------------------------ 
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
installonly_limit=2

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&amp;arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&amp;arch=$basearch
enabled=1
gpgcheck=0
------------------------------------------------------------------------------------------------------------
ATENÇÃO:&nbsp; Deve ser digitado exatamente como no exemplo. Levando-se em consideração o IP do seu servidor local.

Dúvidas? Por favor usem nosso "help" na coluna lateral. Até a próxima! &nbsp;