Como configurar um repositório Yum local no Fedora 8
TL;DR
Crie um espelho local do Fedora 8 para economizar largura de banda e acelerar instalações via LAN. Instale Apache e createrepo, copie ou sincronize os pacotes para /var/www/html/yum, gere metadados com createrepo e aponte os clientes para o baseurl HTTP do servidor. Automatize atualizações com rsync + cron.
Versão e autor
Versão 1.0
Autor: Falko Timme
1 Nota preliminar
Neste tutorial uso o nome de host server1.example.com com o endereço IP 192.168.0.100. Substitua esses valores conforme necessário. Pretendo disponibilizar o repositório via HTTP; a raiz de documentos padrão do Apache no Fedora é /var/www/html, por isso criarei o repositório em /var/www/html/yum. Se você usa outro VirtualHost, ajuste os caminhos.
Definição rápida: Yum é o gerenciador de pacotes do Fedora/RHEL; createrepo gera os metadados que permitem ao yum entender o repositório.
2 Instalando o Apache
Instale o Apache com:
yum install httpd
Crie os links de inicialização para que o Apache inicie com o sistema:
chkconfig --levels 235 httpd on
Inicie o Apache:
/etc/init.d/httpd start
Importante: Fedora 8 usa SysV init; em distribuições modernas use systemctl. Mantenha os comandos originais se estiver trabalhando em sistemas legados.
3 Construindo o repositório
Instale a ferramenta createrepo:
yum install createrepo
Decidi colocar os pacotes i386 em /var/www/html/yum/base/8/i386 e atualizações em /var/www/html/yum/updates/8/i386. Crie os diretórios (ajuste para x86_64 ou outras versões se necessário):
mkdir -p /var/www/html/yum/base/8/i386
mkdir -p /var/www/html/yum/updates/8/i386
Agora preencha /var/www/html/yum/base/8/i386. A maneira mais simples é inserir o DVD do Fedora 8 (baixe de http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/8), montar e copiar os rpms:
mount /dev/cdrom /mnt
cd /mnt/Packages
cp -v * /var/www/html/yum/base/8/i386
cd /
umount /mnt
O DVD contém apenas um conjunto básico de pacotes. Para ter todos os pacotes do Fedora 8, use rsync a partir de um mirror Everything (isto pode demorar):
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/8/Everything/i386/os/Packages/ /var/www/html/yum/base/8/i386
(Verifique as barras finais conforme mostrado acima.)
Depois execute createrepo:
createrepo /var/www/html/yum/base/8/i386
Isso criará um diretório repodata em /var/www/html/yum/base/8/i386. Exemplo de listagem esperada:
ls -l /var/www/html/yum/base/8/i386/repodata/
[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 /]#
Agora preencha a pasta de atualizações /var/www/html/yum/updates/8/i386; escolha um mirror que ofereça rsync e sincronize:
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
Automatizando atualizações com cron
Para sincronizar as atualizações a cada dois dias às 04:23, adicione um job cron:
crontab -e
Adicione a linha:
23 4 */2 * * /usr/bin/rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
Nota: Ajuste o mirror rsync para um servidor de sua preferência/país; evite sobrecarregar mirrors pequenos.
4 Configuração dos clientes
Em cada sistema Fedora 8 aponte o yum para o repositório local editando /etc/yum.conf (pode ser feito no próprio mirror):
vi /etc/yum.conf
Localize a área de repositórios e adicione estas entradas abaixo das linhas indicadas:
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
Adicione:
[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
Arquivo /etc/yum.conf completo (exemplo):
[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
A partir daí, quando o yum pedir um pacote disponível no repositório local, ele será baixado via LAN.
Abordagens alternativas
- Servir o repositório via NFS/HTTP combinado: copiar arquivos em um servidor de arquivos e expor via NFS; útil se já tiver infraestrutura de arquivos centralizados.
- Usar ferramentas de proxy de pacotes (por exemplo, squid + cache de pacotes) para armazenar pacotes à medida que são baixados, sem manter um espelho completo.
- Para versões modernas do Fedora/RHEL, considere DNF e cobbler/pungi ou um repositório gerenciado via Pulp/Foreman para controle mais fino.
Quando isso pode falhar (problemas comuns e soluções)
- Permissões incorretas: certifique-se de que o Apache pode ler /var/www/html/yum/* (www-data ou apache como proprietário/grupo conforme a distro).
- Metadados desatualizados: sempre execute createrepo após alterações manuais nos rpms; para muitos arquivos use createrepo –update.
- Mirror rsync indisponível: escolha um mirror diferente ou mantenha uma cópia local inicial para evitar dependência contínua.
- Clientes com gpgcheck=1: se quiser validar assinaturas, não desative gpgcheck; importe a chave GPG do Fedora e mantenha gpgcheck=1.
Checklist por função
- Administrador de sistema (mirror):
- Instalar httpd e createrepo
- Criar diretórios /var/www/html/yum/base/ e /var/www/html/yum/updates/
- Copiar ou rsync dos pacotes
- Executar createrepo e verificar repodata
- Criar cron de rsync e testar execução manual
- Configurar firewall para permitir HTTP
- Administrador de cliente:
- Atualizar /etc/yum.conf ou adicionar .repo apontando para o servidor
- Testar yum clean all; yum repolist
- Instalar pacote de teste (por exemplo, vim) e confirmar download via LAN
Cheat sheet de comandos
- Instalar Apache: yum install httpd
- Habilitar no boot: chkconfig –levels 235 httpd on
- Iniciar Apache: /etc/init.d/httpd start
- Instalar createrepo: yum install createrepo
- Gerar metadados: createrepo /caminho/do/repositorio
- Sincronizar pacotes via rsync: rsync -avrt rsync://mirror/path/ /var/www/html/yum/base/8/i386
- Cron exemplo: 23 4 /2 * rsync -avrt rsync://… /var/www/html/yum/updates/8/i386
Segurança e boas práticas
- Sempre prefira habilitar gpgcheck e importar a chave GPG oficial do Fedora para verificar pacotes.
- Use firewall para limitar acesso ao servidor de repositório apenas à rede interna.
- Se o repositório for exposto externamente, considere HTTPS e certificados válidos.
Nota sobre versões modernas
Fedora 8 é muito antigo; em sistemas atuais substitua yum por dnf e adapte comandos de init para systemd (systemctl enable –now httpd). Para repositórios corporativos, ferramentas como Pulp, Satellite ou Nexus/Artifactory fornecem recursos avançados.
Links
- Fedora: http://fedoraproject.org
- Mirrorlist Fedora 8: http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/8
Resumo
- Crie diretórios sob /var/www/html/yum, copie ou sincronize pacotes e gere metadados com createrepo.
- Configure clientes para apontarem ao baseurl HTTP do servidor.
- Mantenha o repositório atualizado com rsync automatizado via cron e habilite verificações GPG quando possível.
Resumo executivo: Um repositório yum local reduz tráfego de internet e acelera instalações em redes internas; a configuração básica é direta e pode ser automatizada.
Materiais semelhantes

Como baixar filmes e séries da Netflix (offline)
Configurar /dev/sda e GRUB para RAID1 no CentOS 5.3

Como ver a contagem de dislikes do YouTube

Como filtrar feeds RSS com Feed Rinse

Smartphones podem hackear carros japoneses
