sexta-feira, 22 de janeiro de 2010

Como configurar um repositório YUM em sua rede local (Fedora)

Este tutorial mostra como criar um repositório yum no Fedora  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: 
[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  747714 2007-12-18 21:11 primary.xml.gz
-rw-r--r-- 1 root root     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&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&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&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&arch=$basearch
enabled=1
gpgcheck=0

------------------------------------------------------------------------------------------------------------
ATENÇÃO:  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!  

Nenhum comentário:

Postar um comentário