SlideShare a Scribd company logo
1 of 16
Download to read offline
Estratégias de Atualização usando yum
Dicas e sugestões
Daniel Marques
Estratégias de Atualização usando yum
por Daniel C. Marques
Novembro de 2010
Rio de Janeiro
Este texto é distribuído sob a Licença Creative Commons - Attribution-NoDerivs. Para ver uma
cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/ ou envie um
pedido por escrito para Creative Commons, 171 Second Street, Suite 300, San Francisco,
California 94105, USA.
Para entrar em contato com o autor: contato@danielmarques.com.br
A ilustração da capa foi gentilmente cedida por Allan C. Chaudar, do blog Miaudote
(http://www.miaaudote.blogspot.com/). Você pode conhecer o trabalho de Allan visitando
http://gandalf67.deviantart.com/.
Conteúdo
1- Introdução ............................................................................................. 3
O que é o yum?............................................................................................................. 3
Como o yum funciona?................................................................................................. 3
E se eu não gostar da linha-de-comando?.................................................................... 4
2 - Dicas para definir uma estratégia de atualização .................................. 5
Começando: Inventário de softwares........................................................................... 5
Como se manter informado sobre atualizações ................................................................... 5
Obtendo as atualizações ....................................................................................................... 6
Código-fonte versus Pacotes................................................................................................. 6
Antes de prosseguir, teste ............................................................................................ 7
Ambientes de teste ............................................................................................................... 7
Algumas sugestões sobre testes ........................................................................................... 7
Outros fatores que devem ser considerados ............................................................... 8
3 - Usando repositório local com yum........................................................ 9
Preparação do repositório.......................................................................................... 10
Configuração o ambiente para utilizar um repositório yum ...................................... 10
Passo 1: Criação do diretório do repositório....................................................................... 10
Passo 2: Configuração dos clientes yum ............................................................................. 11
Manutenção do repositório........................................................................................ 12
Notificação de atualização por e-mail................................................................................. 12
4 - Outras dicas úteis................................................................................ 13
5 – Considerações Finais .......................................................................... 13
Referências .............................................................................................. 14
© Daniel C. Marques
31- Introdução
1- Introdução
Manter o ambiente pode ser motivo de dor de cabeça para a maior parte dos
administradores de sistemas. É uma tarefa penosa, que pode se tornar bastante complexa
dependendo do tamanho da infraestrutura e de quão críticos são sistemas administrados.
Sistemas são constantemente atualizados, seja para corrigir falhas, adicionar novos recursos
ou melhorar a segurança. E isto é especialmente verdade em projetos de software livre: em
comunidades frequentemente participativas, modificações são disponibilizadas o tempo todo
para seus usuários.
No Linux, diversas ferramentas para gerenciamento de pacotes de software foram
criadas e estão hoje em uso. Entre as mais conhecidas, encontramos o yum - popular entre os
usuários de sistemas Red Hat-like - e o APT1
O que é o yum?
(com adoção maior em sistemas baseados na
distribuição Debian). O foco aqui na utilização do primeiro. Entretanto, as informações que
apresentarei a seguir podem ser úteis também para os responsáveis por sistemas baseados em
Debian, como o Ubuntu, por exemplo.
O yum (Yellowdog Updater, Modified) é um dos principais gerenciadores open-source
de pacotes em sistemas Linux compatíveis com RPM2
. É adotado como padrão em nas
distribuições Fedora e CentOS e indiretamente pelo SUSE Linux através do YaST.3
Essa ferramenta pode ser bastante útil para facilitar a árdua tarefa de manter os
pacotes atualizados, através do sistema de repositórios e do cálculo automático de
dependências. Além disso, é possível configurá-lo para utilização de chaves criptográficas,
aumentando a segurança das atualizações.
Para atender as necessidades de sua comunidade, o próprio yum é constantemente
atualizado. Novos pacotes e comandos são incluídos, e você pode acompanhar essas
mudanças visitando o site do yum em http://yum.baseurl.org/.
Como o yum funciona?
yum é uma ferramenta desenvolvida na linguagem Python, que utiliza cabeçalhos de
pacotes para adquirir informações sobre dependências. Dessa forma, ao instalar um pacote
utilizando o yum, os demais pacotes necessários para o correto funcionamento do aplicativo
também serão instalando, resolvendo as dependências.
Para que isso seja verdade, os pacotes devem estar disponíveis em repositórios, que
podem ser configurados em servidores FTP e HTTP comuns. Esses repositórios contêm os
pacotes que serão utilizados pelo cliente yum no momento da atualização ou instalação.
1
É importante lembrar que é possível configurar o APT para utilizar pacotes RPM.
2
RPM Package Manager é um sistema de gerenciamento de pacotes de software. Visite
http://www.rpm.org/ para mais informações.
3
Yet another Setup Tool é ferramenta de instalação e configuração para as distribuições openSUSE e
SUSE Linux Enterprise. Visite http://en.opensuse.org/Portal:YaST para mais informações.
4 Estratégias de atualização usando yum – Dicas e sugestões
O yum é utilizado diretamente pela linha-de-comando. Uma lista dos comandos básicos pode
ser encontrada aqui: http://yum.baseurl.org/wiki/YumCommands.
E se eu não gostar da linha-de-comando?
Se você não é adepto da linha-de-comando, sem problemas. Existem diversas
interfaces gráficas (GUI) para o yum. As mais conhecidas são, provavelmente, o yum Extender
(também conhecido como yumex, disponível em http://www.yum-extender.org/) e o
PackageKit (http://www.packagekit.org/).
Ainda que as interfaces sejam práticas, nem sempre é possível – ou ainda, desejável -
utilizá-las. Portanto, se você está realmente considerando utilizar o yum, recomendo que você
guarde com carinho o link com os comandos básicos. Certamente será útil.
Figura 1 - Adicionar/Remover Software no Packagekit
© Daniel C. Marques
52 - Dicas para definir uma estratégia de atualização
2 - Dicas para definir uma estratégia de atualização
Nesta seção, veremos algumas dicas que podem ser úteis ao definir uma estratégia de
atualização. Lembre-se que sua estratégia deve estar de acordo com as suas necessidades;
significa que ambientes diferentes demandam soluções diferentes, portanto é bastante
complicado fornecer uma “receita de bolo”.
Mas existem algumas perguntas que você pode fazer antes de traçar sua estratégia (ou
para se certificar de que está no caminho certo):
• Quantas máquinas serão atualizadas?
• Consigo classificá-las em grupos?
• Com que frequência serão atualizadas?
• Qual o tamanho médio dos pacotes que trafegarão na rede?
Começando: Inventário de softwares
Se você ainda não possui um inventário com os softwares instalados nos seus sistemas,
aqui é um bom lugar para começar. Manter um registro do que está instalado é extremamente
benéfico, pois:
• Permite que você saiba o que está instalado e onde.
• Evita que você mantenha instalados softwares que não são úteis, ocupando precioso
espaço em disco e criando riscos de segurança desnecessários.
• Permite que você aloque seus recursos de forma mais eficiente, distribuindo os
softwares de acordo com a demanda por esses recursos.
• Possibilita um controle melhor sobre as atualizações do sistema.
Uma sugestão de software para apoiar essa atividade de inventário - que deve incluir
também o hardware utilizado - é o OCS Inventory NG. Você pode encontrar mais informações
sobre ele no website http://www.ocsinventory-ng.org/.
Como se manter informado sobre atualizações
A maioria das distribuições e softwares usados atualmente mantém listas de discussão
e websites com informações mais recentes sobre atualizações e bugs. É um bom começo.
Tendo em mãos o inventário dos softwares que você utiliza, faça uma busca pela Internet por
fontes de informações confiáveis sobre atualizações. Exemplos de listas de discussão:
• Lista de anúncios do CentOS: http://lists.centos.org/mailman/listinfo/centos-announce
• Lista de Anúncios do Apache Server: http://httpd.apache.org/lists.html#http-announce
• Lista de Anúncios do PostgreSQL : http://archives.postgresql.org/pgsql-announce/
Especificamente sobre segurança, Centros de Resposta e Tratamento de Incidentes de
Segurança (Computer Emergency Response Team – CERT ou Computer Security Incident
Response Team – CSIRT) são excelentes fontes de informação.
6 Estratégias de atualização usando yum – Dicas e sugestões
Alguns websites que podem ser interessantes:
• CAIS-RNP4
http://www.rnp.br/cais/: .
• Informes de Segurança do Computer Emergency Response Team (CERT)5
http://www.cert.org/advisories/
da
Universidade de Carnegie Mellon: .
Como veremos mais adiante, é possível configurar o yum para notificar atualizações
nos repositórios públicos dos softwares utilizados. Ainda assim é recomendado acompanhar os
informes dos distribuidores ou responsáveis pelo produto.
Obtendo as atualizações
Note que existem diversas maneiras de obter as atualizações. A mais comum é através
do site do desenvolvedor. A vantagem aqui é a certeza de uma versão confiável, além ter
acesso mais rápido as atualizações. Alguns desenvolvedores disponibilizam pacotes DEB e RPM
no momento do lançamento da nova versão ou correção, com builds específicos para certas
distribuições.
Alternativamente, o próprio repositório das distribuições fornece pacotes com as
atualizações. Entretanto, existe alguma demora entre a publicação da atualização pelo
desenvolvedor e a disponibilização do pacote no repositório da distribuição. Isso acontece por
que a atualização passa por um ciclo de testes, antes de ser disponibilizada aos usuários. A
vantagem é a grande compatibilidade com o sistema utilizado. Note que algumas distribuições
podem utilizar dependências diferentes para determinados serviços.
Código-fonte versus Pacotes
Você já deve ter notado que softwares de código aberto podem ser disponibilizados
através de código-fonte ou pacotes. No geral, sugiro que você opte pela utilização de pacotes
sempre que possível (de preferência fornecidos pela sua distribuição). Dessa forma você
consegue manter um controle melhor sobre o que está sendo instalado, garante que os
arquivos serão copiados para diretórios consistentes e – caso utilize um gerenciador de
pacotes como o yum – a resolução de dependências.
Por outro lado, alguns ambientes possuem políticas rígidas quanto ao software
instalado. Pode ser que haja a necessidade de analisar o código-fonte antes de disponibilizar o
software na rede. Nesse caso, atualizar utilizando os fontes fornecidos pelo desenvolvedor é o
mais recomendado. Contudo, você ainda pode gerar seus próprios pacotes e disponibilizá-los
em um repositório interno. Apesar de simples, exige algum tempo de aprendizado. Um bom
ponto de partida para entender como esse processo funciona é o Fedora RPM Guide
disponível online gratuitamente.
4
O Centro de Atendimento a Incidentes de Segurança da RNP é o principal CSIRT acadêmico do Brasil.
Para saber mais sobre a RNP visite: http://www.rnp.br/.
5
O CERT de Carnegie Mellon é provavelmente o Grupo de Resposta a Incidentes de Segurança mais
conhecido do mundo.
© Daniel C. Marques
72 - Dicas para definir uma estratégia de atualização
Antes de prosseguir, teste
Um passo normalmente negligenciado por diversos administradores de sistemas que,
na realidade, é indispensável. O fato é que, mesmo depois de uma série de testes no ambiente
do desenvolvedor, nossos sistemas são extremamente particulares. Significa que uma
atualização pode se comportar de forma inesperada ao interagir com outros softwares
instalados, causado desde o não funcionamento do software atualizado até a parada total do
sistema. Isso é especialmente verdade no caso de novas versões do Kernel.
Imagine o seguinte: você possui dois softwares instalados, Argus Webserver (que
utiliza as bibliotecas libAplha e libBeta) e Andromeda-ng (utilizando a biblioteca libAlpha).
Como você pode ver, ambos possuem uma biblioteca em comum – libAlpha. Se atualizarmos o
Andromeda-ng, e ele atualizar também a versão da biblioteca libAlpha existe uma enorme
possibilidade do Argus Webserver, que permanece em uma versão antiga, não funcionar. Em
sistemas de produção, isso pode causar um enorme prejuízo. Portanto, você certamente
desejará avaliar o risco de instalar uma atualização no seu sistema de produção, e não ser
pego de surpresa.
Ambientes de teste
Felizmente, com a virtualização, nos temos a possibilidade de replicar com alguma
precisão nosso ambiente de produção, sem elevar muitos os custos. Essa homologação de
atualizações em ambiente controlado é uma boa prática, e justifica o tempo investido na
atividade. Após esse período de homologação você pode optar entre atualizar ou não o
sistema e, caso decida não fazê-lo, encontrar uma solução melhor para o problema.
Se você não dispõe de uma réplica física do ambiente de produção (ou simplesmente
acha que a virtualização atende melhor as suas necessidades), no site do VMware
(http://www.vmware.com/br/) e do Xen (http://www.xen.org/) você pode encontrar
informações valiosas sobre os dois principais sistemas de virtualização do mercado. Eu mesmo
sou favorável a utilização de ambientes virtualizados, pela facilidade trazida pelos chamados
snapshots6
Algumas sugestões sobre testes
.
O principal é: sempre teste antes de atualizar o ambiente de produção. Aqui vão
algumas dicas básicas sobre o que fazer durante teste de pré-produção, do livro Linux Patch
Management: Keeping Linux Systems Up To Date, de Michael Jang:
• Leias as release notes e entenda qual o impacto da atualização no seu ambiente, e se o
esforço para fazê-la vale a pena.
• Se for necessário, Faça cópia dos arquivos de configuração antes da atualização. Isso é
especialmente importante para softwares que permitem personalização de interface.
• Certifique-se de que a atualização funciona como esperado, de acordo com as suas
experiências anteriores e com as releases notes.
• Observe mudanças e o impacto causado por elas, identifique problemas e encontre
soluções.
6
Snapshots são “fotografias” do ambiente, que guardam o estado salvo pelo usuário. Caso algum
problema tenha ocorrido, é possível voltar para o estado anterior sempre que desejado.
8 Estratégias de atualização usando yum – Dicas e sugestões
• Caso seja um serviço (como um servidor web, por exemplo) teste de diferentes
clientes/hosts.
• Se um grande grupo de usuários utiliza o software em questão no dia-a-dia-, pode ser
interessante incluir alguns em um grupo de testes. Será de grande ajuda se, é claro,
você julgar necessário.
Para a atualização do Kernel, outras dicas interessantes são:
• Procure manter uma (acredite, é o bastante) versão anterior funcional do Kernel.
• Observe o processo de boot, o comportamento dos serviços e a detecção de
hardware.
• Teste serviços e aplicações com o novo kernel.
É importante também informar aos usuários sobre novas atualizações, e mantê-los a
par de qualquer modificação e problema que elas possam resultar.
Outros fatores que devem ser considerados
Ao estabelecer sua estratégia de atualização você deve levar em conta alguns fatores,
como espaço em disco, as conexões de rede e volume de dados que trafegarão na rede. Note
que isso depende, basicamente, de quantas máquinas serão atualizadas, com que freqüência e
se você possui diferentes arquiteturas compondo a sua infraestrutura.
Um repositório não é diferente de outros serviços disponíveis no seu ambiente. A
preocupação em ajustá-lo para atender as suas necessidades será igualmente importante.
© Daniel C. Marques
93 - Usando repositório local com yum
3 - Usando repositório local com yum
A partir de agora, veremos como isso aplicar uma estratégia de atualização usando o
yum. O cenário mais comum é a utilização de um repositório local, que recebe os pacotes da
Internet, e disponibiliza para os demais recursos da rede.
Figura 2 - Único repositório central
7
Na figura anterior, temos um ambiente de testes, que recebe os pacotes de
atualização da Internet. Nos hosts de teste, eles passarão pelo processo de homologação
necessário, até que seja possível garantir que a atualização pode ser feita com o mínimo de
risco necessário ou que sejam determinadas soluções desejáveis para os problemas
encontrados. Ao ser copiado para o Repositório Local, as máquinas de produção detectam que
existe uma atualização disponível, fazem o download e a instalam. Como é possível colocar
vários “micro-repositórios” dentro de uma mesma máquina, diferentes hosts (ou grupos de
hosts) podem se conectar ao mesmo repositório central.
7
Note que elementos como firewalls não são representados, para simplificar as figuras. Lembre-se que
você deve considerar os requisitos da arquitetura da sua rede.
10 Estratégias de atualização usando yum – Dicas e sugestões
Essa estratégia nos fornece algumas vantagens:
• Maior controle sobre que softwares serão atualizados.
• Redução do tráfego com a Internet.
• Atualizações mais rápidas.
Preparação do repositório
A principal sugestão é em relação ao particionamento do disco. Crie uma partição
exclusiva para os pacotes de atualização. Essa medida evitará que o sistema pare de funcionar
caso o repositório cresça demais.
Como vimos anteriormente, a máquina também precisará de um servidor web ou FTP,
onde serão encontrados os pacotes utilizados. Existem duas formas de manter os arquivos
nesses diretórios: síncrona e assíncrona. No servidor local, você não precisará se preocupar
com isso (considerando que você colocará no repositório, manualmente, apenas os pacotes
previamente testados). Você pode, no entanto, desejar sincronizar o repositório de testes com
algum repositório yum remoto. Isso pode ser conseguido através da ferramenta reposync do
pacote yum-utils ou utilizando o comando wget.
Configuração do ambiente para utilizar um repositório yum
Daqui em diante, consideraremos a utilização de um servidor HTTP e da distribuição
CentOS 5 i386 para os nossos exemplos. Faça as devidas adaptações necessárias para o seu
ambiente.
Passo 1: Criação do diretório do repositório
O primeiro passo é a criação da estrutura de diretórios que irão compor o repositório,
que vai depender de qual seu objetivo com o repositório. Como desejamos criar um
repositório unicamente para atualizações, teremos a seguinte estrutura:
• Repositório Base: Conterá os pacotes RPM básicos da distribuição. Esses pacotes
podem ser copiados a partir do CD/DVD do CentOS, no diretório base.
• Repositório de Atualizações: Conterá os pacotes RPM com as atualizações. Podem ser
baixados da Internet ou copiados manualmente após o ciclo de testes. Seu diretório
será updates.
Criamos então o diretório principal e os subdiretórios do repositório:
Na primeira linha, usamos o comando mkdir para criar os diretórios base e updates.
Note que, da forma como esses diretórios foram criados, você pode ter várias versões do
CentOS na mesma máquina, bastando criar diretórios diferentes seguindo a mesma estrutura.
Copie os pacotes RPM existentes no DVD/CD para o diretório /var/www/
centos/5/os/i386/CentOS.
mkdir –pv /var/www/centos/5/{base,updates}/i386
mkdir –pv /var/www/centos/5/base/i386/CentOS
© Daniel C. Marques
113 - Usando repositório local com yum
Para transformar um diretório em repositório, você deve utilizar o comando
createrepo. Caso você não possuía o utilitário createrepo, pode instalá-lo a partir de
yum install createrepo. Este é o comando que cria o diretório repodata e gera os
cabeçalhos.
Passo 2: Configuração dos clientes yum
A configuração do cliente é bastante simples. Sempre que um novo repositório for
criado, você deve adicionar um arquivo .repo no diretório /etc/yum/repos.d. Você pode
ver um exemplo de conteúdo deste arquivo a seguir. A linha gpgcheck = 1 indica que será
feita uma verificação da assinatura digital8
no pacote antes da sua instalação.
Para que o cliente atualize automaticamente, você pode adicionar um job para o
comando yum update no cron. Isso pode ser feito iniciando o serviço yum, configurando-o
para disparar ao inicializar e inserindo o script abaixo no diretório cron apropriado:
No CentOS, isso pode ser feito também a partir do daemon yum-updatesd. No
arquivo de configuração localizado em /etc/yum/yum-updatesd.conf, é possível
determinar a frequência das atualizações e habilitar a instalação automática:
8
Assinatura digital é semelhante a uma assinatura de próprio punho. Por conter características bem
próprias a um determinado objeto, pode ser utilizada para verificar sua integridade.
chkconfig yum-updatesd on
/etc/init.d/yum-updatesd start
#!/bin/sh
if [ -f /var/lock/subsys/yum ]; then
/usr/bin/yum -e 0 -d 0 clean packages
fi
[Base]
name = CentOS-$releaseserver - Base
baseurl = http://nomedoservidor/centos/5/base
gpgcheck = 1
[Update]
name = CentOS-$releaseserver - Atualizações
baseurl = http://nomedoservidor/centos/5/updates
gpgcheck = 1
createrepo /var/www/centos/5/base
createrepo /var/www/centos/5/updates
12 Estratégias de atualização usando yum – Dicas e sugestões
Manutenção do repositório
É importar lembrar que os cabeçalhos devem ser atualizados sempre que um novo
pacote for inserido no repositório. Para isso, basta executar o comando abaixo:
Problemas com as atualizações podem ocorrer se os arquivos de cabeçalho estiverem
corrompidos ou inconsistentes. Tente remover o diretório reposdata e executar novamente o
comando createrepo. Normalmente, é o suficiente para que o problema seja resolvido.
Notificação de atualização por e-mail
Você pode direcionar seu repositório de testes para fazer atualizações a partir de um
repositório remoto (que pode ser o repositório da distribuição ou um repositório de terceiros,
por exemplo). Dessa forma, quando houver alguma modificação no repositório externo, você
poderá ser notificado.
Isto pode ser feito através das configurações do daemon yum-updatesd ou através
do script Yumnotifier. Ele está disponível para download a partir do seguinte endereço
http://prefetch.net/code/yumnotifier.html. Toda a documentação do script está presente no
seu cabeçalho.
createrepo -–update <caminho-para-repositorio>
© Daniel C. Marques
134 - Outras dicas úteis
4 - Outras dicas úteis
O yum guarda um cache dos cabeçalhos e arquivos no diretório /var/cache/yum. Evite
que ele cresça indefinidamente usando a opção clean:
Se você utiliza alguma ferramenta de monitoramento de redes, como o Nagios
(http://www.nagios.org/) ou o Zabbix (http://www.zabbix.com/), é provável que você
encontre scripts permitam monitorar o status da atualização nas máquinas. Por alguma falha –
que muitas vezes passa despercebida – um host qualquer da sua rede pode ficar sem a última
versão de um software; nesse caso, esses scripts são extremamente úteis para uma rápida
detecção do problema. No site Monitoring Exchange (http://www.monitoringexchange.org)
você encontra o check_yum (http://www.monitoringexchange.org/p/1125), um script que
pode ser usando em conjunto com o Nagios para esta finalidade.
Falando sobre repositórios externos, tome muito cuidado com eles: não os misture.
Existem vários repositórios que não são compatíveis entre si, ou com a sua distribuição.
Escolha um repositório que funcione para você, e fique com ele.
5 – Considerações Finais
Durante o texto, aprendemos como o yum funciona, e uma estratégia utilizando
ambiente de testes e um repositório central interno. Vimos essa abordagem ajuda a reduzir o
consumo de banda da Internet, além de tornar as atualizações mais rápidas. Além disso, vimos
que comandos executar e que ferramentas podem ser úteis nessa tarefa.
Você pode assumir outras estratégias, a partir daqui. Lembre-se sempre que cada
ambiente possui suas particularidades, portanto, demanda diferentes soluções. Estude-as com
cuidado, entenda como funcionam e aplique o que achar necessário. Ninguém conhece seu
sistema melhor do que você.
Por fim, navegue pelos links e pelas referências. Certamente você encontrará algo útil.
Se tiver alguma dúvida, sugestão ou crítica fique a vontade para me mandar um e-mail.
yum clean all
14 Estratégias de atualização usando yum – Dicas e sugestões
Referências
Bailey Edward C. RPM and Developers — How to Distribute Your Software More Easily With
RPM [Online] // Maximum RPM: Taking the Red Hat Package Manager to the Limit. - Red Hat,
Inc., 2000. - 8 de Novembro de 2010. - http://www.rpm.org/max-rpm/p5208.html.
CAIS-RNP Rede Nacional de Ensino e Pesquisa [Online] // Segurança em Redes. - Rede Nacional
de Ensino e Pesquisa. - 09 de Novembro de 2010. - http://www.rnp.br/cais/.
Citrix Systems, Inc [Online] // Xen.org. - 09 de Novembro de 2010. - http://www.xen.org/.
Foster-Johnson Eric, Ellis Stuart e Cotton Ben RPM Guide [Online] // Fedora Documentation. -
8 de Novembro de 2010. - http://docs.fedoraproject.org/en-
US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html.
Hughes Richard [Online] // PackageKit website. - 8 de Novembro de 2010. -
http://www.packagekit.org/.
Jang Michael Linux Patch Management: Keeping Linux Systems Up To Date [Livro]. -
Crawfordsville : Prentice Hall, 2006. - 0-13-236675-4.
Milano Fabiano Nagios NRPE Monitor Yum Updates [Online] // KernelHardware.org. - 26 de
Junho de 2009. - 8 de Novembro de 2010. - http://www.kernelhardware.org/nagios-nrpe-
monitor-yum-updates/.
Monitoring Exchange [Online] // Monitoring Exchange website. - 10 de Novembro de 2010. -
http://www.monitoringexchange.org.
Nagios Enterprises [Online] // Nagios - The Industry Standard In Open Source Monitoring. - 10
de Novembro de 2010. - http://www.nagios.org/.
OCS Inventory Team [Online] // OCS Inventory NG web site. - 8 de Novembro de 2010. -
http://www.ocsinventory-ng.org/.
Portal Yats [Online] // openSUSE Wiki. - 8 de Novembro de 2010. -
http://en.opensuse.org/Portal:YaST.
Prefetch Technologies E-mail available yum updates [Online] // Prefetch Technologies
Website. - 10 de Novembro de 2010. - http://prefetch.net/code/yumnotifier.html.
Sofware Engineering Institute [Online] // CERT Website. - Carnegie Mellon University. - 09 de
Novembro de 2010. - http://www.cert.org/.
The RPM Team [Online] // RPM Project Wiki. - 8 de Novembro de 2010. -
http://www.rpm.org/.
The Yum Extender Team [Online] // Yum Extender website. - 09 de Novembro de 2010. -
http://www.yum-extender.org/.
© Daniel C. Marques
15Referências
VMware, Inc [Online] // VMware website. - 8 de Novembro de 2010. -
http://www.vmware.com/br/.
yum Team [Online] // yum Wiki. - 8 de Novembro de 2010. - http://yum.baseurl.org/.
Zabbix SIA [Online] // Zabbix - An Enterprise-Class Open Source Distributed Monitoring
Solution. - 10 de Novembro de 2010. - http://www.zabbix.com/.

More Related Content

What's hot

Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos LinuxWellington Oliveira
 
Ficha de trabalho_5_bruno_crespim
Ficha de trabalho_5_bruno_crespimFicha de trabalho_5_bruno_crespim
Ficha de trabalho_5_bruno_crespimcrespim89
 
Guia de instalação ECM
Guia de instalação ECMGuia de instalação ECM
Guia de instalação ECMraquelrioga
 
Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Felipe Santos
 
Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Felipe Santos
 
Ubuntu Fábio Alves
Ubuntu Fábio AlvesUbuntu Fábio Alves
Ubuntu Fábio Alvesflukso
 
Apostila win linux revisada unidde iii
Apostila win  linux revisada unidde iii Apostila win  linux revisada unidde iii
Apostila win linux revisada unidde iii Josiane Silva
 

What's hot (9)

Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos Linux
 
Ficha de trabalho_5_bruno_crespim
Ficha de trabalho_5_bruno_crespimFicha de trabalho_5_bruno_crespim
Ficha de trabalho_5_bruno_crespim
 
Guia de instalação ECM
Guia de instalação ECMGuia de instalação ECM
Guia de instalação ECM
 
Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Quero Slack! (Parte 3)
Quero Slack! (Parte 3)
 
Quero Arch! (Parte 2)
Quero Arch! (Parte 2)Quero Arch! (Parte 2)
Quero Arch! (Parte 2)
 
Mercurial hg
Mercurial hgMercurial hg
Mercurial hg
 
Trabalho OpenSUSe
Trabalho OpenSUSeTrabalho OpenSUSe
Trabalho OpenSUSe
 
Ubuntu Fábio Alves
Ubuntu Fábio AlvesUbuntu Fábio Alves
Ubuntu Fábio Alves
 
Apostila win linux revisada unidde iii
Apostila win  linux revisada unidde iii Apostila win  linux revisada unidde iii
Apostila win linux revisada unidde iii
 

Similar to Estratégias de atualização usando yum

Ubuntu linux - Apt-GET
Ubuntu linux - Apt-GETUbuntu linux - Apt-GET
Ubuntu linux - Apt-GETRoney Sousa
 
Cent-OS - Sistema Operacional
Cent-OS - Sistema OperacionalCent-OS - Sistema Operacional
Cent-OS - Sistema OperacionalAnderson Favaro
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfFChico2
 
Desenvolvimento em Comunidade
Desenvolvimento em ComunidadeDesenvolvimento em Comunidade
Desenvolvimento em ComunidadePedro Dias
 
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourcePalestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourceLuiz Arthur
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroAndré Luís Cardoso
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizadosAndréia Santos
 
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclp
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclpManual dicas tecnicasavancadasdesenvolvimentosoftwareclp
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclpUillian Franco
 
Backup Artigo Equipe Final
Backup Artigo Equipe FinalBackup Artigo Equipe Final
Backup Artigo Equipe FinalLuma Seixas
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...Guilherme Veras
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 

Similar to Estratégias de atualização usando yum (20)

Pacotes
PacotesPacotes
Pacotes
 
snto
sntosnto
snto
 
Ubuntu linux - Apt-GET
Ubuntu linux - Apt-GETUbuntu linux - Apt-GET
Ubuntu linux - Apt-GET
 
Cent-OS - Sistema Operacional
Cent-OS - Sistema OperacionalCent-OS - Sistema Operacional
Cent-OS - Sistema Operacional
 
0798 manual.pdf
0798 manual.pdf0798 manual.pdf
0798 manual.pdf
 
Lm 71 64_67_04_tut_openaudit
Lm 71 64_67_04_tut_openauditLm 71 64_67_04_tut_openaudit
Lm 71 64_67_04_tut_openaudit
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdf
 
tutorial nagios
tutorial nagiostutorial nagios
tutorial nagios
 
Desenvolvimento em Comunidade
Desenvolvimento em ComunidadeDesenvolvimento em Comunidade
Desenvolvimento em Comunidade
 
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourcePalestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
 
Linux
LinuxLinux
Linux
 
IBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to heroIBM Domino 9 cluster - zero to hero
IBM Domino 9 cluster - zero to hero
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizados
 
Drupal - WEG
Drupal - WEGDrupal - WEG
Drupal - WEG
 
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclp
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclpManual dicas tecnicasavancadasdesenvolvimentosoftwareclp
Manual dicas tecnicasavancadasdesenvolvimentosoftwareclp
 
Backup Artigo Equipe Final
Backup Artigo Equipe FinalBackup Artigo Equipe Final
Backup Artigo Equipe Final
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Revista programar 17
Revista programar 17Revista programar 17
Revista programar 17
 
Linux basico ubuntu
Linux basico ubuntuLinux basico ubuntu
Linux basico ubuntu
 

Estratégias de atualização usando yum

  • 1. Estratégias de Atualização usando yum Dicas e sugestões Daniel Marques
  • 2. Estratégias de Atualização usando yum por Daniel C. Marques Novembro de 2010 Rio de Janeiro Este texto é distribuído sob a Licença Creative Commons - Attribution-NoDerivs. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/ ou envie um pedido por escrito para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. Para entrar em contato com o autor: contato@danielmarques.com.br A ilustração da capa foi gentilmente cedida por Allan C. Chaudar, do blog Miaudote (http://www.miaaudote.blogspot.com/). Você pode conhecer o trabalho de Allan visitando http://gandalf67.deviantart.com/.
  • 3. Conteúdo 1- Introdução ............................................................................................. 3 O que é o yum?............................................................................................................. 3 Como o yum funciona?................................................................................................. 3 E se eu não gostar da linha-de-comando?.................................................................... 4 2 - Dicas para definir uma estratégia de atualização .................................. 5 Começando: Inventário de softwares........................................................................... 5 Como se manter informado sobre atualizações ................................................................... 5 Obtendo as atualizações ....................................................................................................... 6 Código-fonte versus Pacotes................................................................................................. 6 Antes de prosseguir, teste ............................................................................................ 7 Ambientes de teste ............................................................................................................... 7 Algumas sugestões sobre testes ........................................................................................... 7 Outros fatores que devem ser considerados ............................................................... 8 3 - Usando repositório local com yum........................................................ 9 Preparação do repositório.......................................................................................... 10 Configuração o ambiente para utilizar um repositório yum ...................................... 10 Passo 1: Criação do diretório do repositório....................................................................... 10 Passo 2: Configuração dos clientes yum ............................................................................. 11 Manutenção do repositório........................................................................................ 12 Notificação de atualização por e-mail................................................................................. 12 4 - Outras dicas úteis................................................................................ 13 5 – Considerações Finais .......................................................................... 13 Referências .............................................................................................. 14
  • 4. © Daniel C. Marques 31- Introdução 1- Introdução Manter o ambiente pode ser motivo de dor de cabeça para a maior parte dos administradores de sistemas. É uma tarefa penosa, que pode se tornar bastante complexa dependendo do tamanho da infraestrutura e de quão críticos são sistemas administrados. Sistemas são constantemente atualizados, seja para corrigir falhas, adicionar novos recursos ou melhorar a segurança. E isto é especialmente verdade em projetos de software livre: em comunidades frequentemente participativas, modificações são disponibilizadas o tempo todo para seus usuários. No Linux, diversas ferramentas para gerenciamento de pacotes de software foram criadas e estão hoje em uso. Entre as mais conhecidas, encontramos o yum - popular entre os usuários de sistemas Red Hat-like - e o APT1 O que é o yum? (com adoção maior em sistemas baseados na distribuição Debian). O foco aqui na utilização do primeiro. Entretanto, as informações que apresentarei a seguir podem ser úteis também para os responsáveis por sistemas baseados em Debian, como o Ubuntu, por exemplo. O yum (Yellowdog Updater, Modified) é um dos principais gerenciadores open-source de pacotes em sistemas Linux compatíveis com RPM2 . É adotado como padrão em nas distribuições Fedora e CentOS e indiretamente pelo SUSE Linux através do YaST.3 Essa ferramenta pode ser bastante útil para facilitar a árdua tarefa de manter os pacotes atualizados, através do sistema de repositórios e do cálculo automático de dependências. Além disso, é possível configurá-lo para utilização de chaves criptográficas, aumentando a segurança das atualizações. Para atender as necessidades de sua comunidade, o próprio yum é constantemente atualizado. Novos pacotes e comandos são incluídos, e você pode acompanhar essas mudanças visitando o site do yum em http://yum.baseurl.org/. Como o yum funciona? yum é uma ferramenta desenvolvida na linguagem Python, que utiliza cabeçalhos de pacotes para adquirir informações sobre dependências. Dessa forma, ao instalar um pacote utilizando o yum, os demais pacotes necessários para o correto funcionamento do aplicativo também serão instalando, resolvendo as dependências. Para que isso seja verdade, os pacotes devem estar disponíveis em repositórios, que podem ser configurados em servidores FTP e HTTP comuns. Esses repositórios contêm os pacotes que serão utilizados pelo cliente yum no momento da atualização ou instalação. 1 É importante lembrar que é possível configurar o APT para utilizar pacotes RPM. 2 RPM Package Manager é um sistema de gerenciamento de pacotes de software. Visite http://www.rpm.org/ para mais informações. 3 Yet another Setup Tool é ferramenta de instalação e configuração para as distribuições openSUSE e SUSE Linux Enterprise. Visite http://en.opensuse.org/Portal:YaST para mais informações.
  • 5. 4 Estratégias de atualização usando yum – Dicas e sugestões O yum é utilizado diretamente pela linha-de-comando. Uma lista dos comandos básicos pode ser encontrada aqui: http://yum.baseurl.org/wiki/YumCommands. E se eu não gostar da linha-de-comando? Se você não é adepto da linha-de-comando, sem problemas. Existem diversas interfaces gráficas (GUI) para o yum. As mais conhecidas são, provavelmente, o yum Extender (também conhecido como yumex, disponível em http://www.yum-extender.org/) e o PackageKit (http://www.packagekit.org/). Ainda que as interfaces sejam práticas, nem sempre é possível – ou ainda, desejável - utilizá-las. Portanto, se você está realmente considerando utilizar o yum, recomendo que você guarde com carinho o link com os comandos básicos. Certamente será útil. Figura 1 - Adicionar/Remover Software no Packagekit
  • 6. © Daniel C. Marques 52 - Dicas para definir uma estratégia de atualização 2 - Dicas para definir uma estratégia de atualização Nesta seção, veremos algumas dicas que podem ser úteis ao definir uma estratégia de atualização. Lembre-se que sua estratégia deve estar de acordo com as suas necessidades; significa que ambientes diferentes demandam soluções diferentes, portanto é bastante complicado fornecer uma “receita de bolo”. Mas existem algumas perguntas que você pode fazer antes de traçar sua estratégia (ou para se certificar de que está no caminho certo): • Quantas máquinas serão atualizadas? • Consigo classificá-las em grupos? • Com que frequência serão atualizadas? • Qual o tamanho médio dos pacotes que trafegarão na rede? Começando: Inventário de softwares Se você ainda não possui um inventário com os softwares instalados nos seus sistemas, aqui é um bom lugar para começar. Manter um registro do que está instalado é extremamente benéfico, pois: • Permite que você saiba o que está instalado e onde. • Evita que você mantenha instalados softwares que não são úteis, ocupando precioso espaço em disco e criando riscos de segurança desnecessários. • Permite que você aloque seus recursos de forma mais eficiente, distribuindo os softwares de acordo com a demanda por esses recursos. • Possibilita um controle melhor sobre as atualizações do sistema. Uma sugestão de software para apoiar essa atividade de inventário - que deve incluir também o hardware utilizado - é o OCS Inventory NG. Você pode encontrar mais informações sobre ele no website http://www.ocsinventory-ng.org/. Como se manter informado sobre atualizações A maioria das distribuições e softwares usados atualmente mantém listas de discussão e websites com informações mais recentes sobre atualizações e bugs. É um bom começo. Tendo em mãos o inventário dos softwares que você utiliza, faça uma busca pela Internet por fontes de informações confiáveis sobre atualizações. Exemplos de listas de discussão: • Lista de anúncios do CentOS: http://lists.centos.org/mailman/listinfo/centos-announce • Lista de Anúncios do Apache Server: http://httpd.apache.org/lists.html#http-announce • Lista de Anúncios do PostgreSQL : http://archives.postgresql.org/pgsql-announce/ Especificamente sobre segurança, Centros de Resposta e Tratamento de Incidentes de Segurança (Computer Emergency Response Team – CERT ou Computer Security Incident Response Team – CSIRT) são excelentes fontes de informação.
  • 7. 6 Estratégias de atualização usando yum – Dicas e sugestões Alguns websites que podem ser interessantes: • CAIS-RNP4 http://www.rnp.br/cais/: . • Informes de Segurança do Computer Emergency Response Team (CERT)5 http://www.cert.org/advisories/ da Universidade de Carnegie Mellon: . Como veremos mais adiante, é possível configurar o yum para notificar atualizações nos repositórios públicos dos softwares utilizados. Ainda assim é recomendado acompanhar os informes dos distribuidores ou responsáveis pelo produto. Obtendo as atualizações Note que existem diversas maneiras de obter as atualizações. A mais comum é através do site do desenvolvedor. A vantagem aqui é a certeza de uma versão confiável, além ter acesso mais rápido as atualizações. Alguns desenvolvedores disponibilizam pacotes DEB e RPM no momento do lançamento da nova versão ou correção, com builds específicos para certas distribuições. Alternativamente, o próprio repositório das distribuições fornece pacotes com as atualizações. Entretanto, existe alguma demora entre a publicação da atualização pelo desenvolvedor e a disponibilização do pacote no repositório da distribuição. Isso acontece por que a atualização passa por um ciclo de testes, antes de ser disponibilizada aos usuários. A vantagem é a grande compatibilidade com o sistema utilizado. Note que algumas distribuições podem utilizar dependências diferentes para determinados serviços. Código-fonte versus Pacotes Você já deve ter notado que softwares de código aberto podem ser disponibilizados através de código-fonte ou pacotes. No geral, sugiro que você opte pela utilização de pacotes sempre que possível (de preferência fornecidos pela sua distribuição). Dessa forma você consegue manter um controle melhor sobre o que está sendo instalado, garante que os arquivos serão copiados para diretórios consistentes e – caso utilize um gerenciador de pacotes como o yum – a resolução de dependências. Por outro lado, alguns ambientes possuem políticas rígidas quanto ao software instalado. Pode ser que haja a necessidade de analisar o código-fonte antes de disponibilizar o software na rede. Nesse caso, atualizar utilizando os fontes fornecidos pelo desenvolvedor é o mais recomendado. Contudo, você ainda pode gerar seus próprios pacotes e disponibilizá-los em um repositório interno. Apesar de simples, exige algum tempo de aprendizado. Um bom ponto de partida para entender como esse processo funciona é o Fedora RPM Guide disponível online gratuitamente. 4 O Centro de Atendimento a Incidentes de Segurança da RNP é o principal CSIRT acadêmico do Brasil. Para saber mais sobre a RNP visite: http://www.rnp.br/. 5 O CERT de Carnegie Mellon é provavelmente o Grupo de Resposta a Incidentes de Segurança mais conhecido do mundo.
  • 8. © Daniel C. Marques 72 - Dicas para definir uma estratégia de atualização Antes de prosseguir, teste Um passo normalmente negligenciado por diversos administradores de sistemas que, na realidade, é indispensável. O fato é que, mesmo depois de uma série de testes no ambiente do desenvolvedor, nossos sistemas são extremamente particulares. Significa que uma atualização pode se comportar de forma inesperada ao interagir com outros softwares instalados, causado desde o não funcionamento do software atualizado até a parada total do sistema. Isso é especialmente verdade no caso de novas versões do Kernel. Imagine o seguinte: você possui dois softwares instalados, Argus Webserver (que utiliza as bibliotecas libAplha e libBeta) e Andromeda-ng (utilizando a biblioteca libAlpha). Como você pode ver, ambos possuem uma biblioteca em comum – libAlpha. Se atualizarmos o Andromeda-ng, e ele atualizar também a versão da biblioteca libAlpha existe uma enorme possibilidade do Argus Webserver, que permanece em uma versão antiga, não funcionar. Em sistemas de produção, isso pode causar um enorme prejuízo. Portanto, você certamente desejará avaliar o risco de instalar uma atualização no seu sistema de produção, e não ser pego de surpresa. Ambientes de teste Felizmente, com a virtualização, nos temos a possibilidade de replicar com alguma precisão nosso ambiente de produção, sem elevar muitos os custos. Essa homologação de atualizações em ambiente controlado é uma boa prática, e justifica o tempo investido na atividade. Após esse período de homologação você pode optar entre atualizar ou não o sistema e, caso decida não fazê-lo, encontrar uma solução melhor para o problema. Se você não dispõe de uma réplica física do ambiente de produção (ou simplesmente acha que a virtualização atende melhor as suas necessidades), no site do VMware (http://www.vmware.com/br/) e do Xen (http://www.xen.org/) você pode encontrar informações valiosas sobre os dois principais sistemas de virtualização do mercado. Eu mesmo sou favorável a utilização de ambientes virtualizados, pela facilidade trazida pelos chamados snapshots6 Algumas sugestões sobre testes . O principal é: sempre teste antes de atualizar o ambiente de produção. Aqui vão algumas dicas básicas sobre o que fazer durante teste de pré-produção, do livro Linux Patch Management: Keeping Linux Systems Up To Date, de Michael Jang: • Leias as release notes e entenda qual o impacto da atualização no seu ambiente, e se o esforço para fazê-la vale a pena. • Se for necessário, Faça cópia dos arquivos de configuração antes da atualização. Isso é especialmente importante para softwares que permitem personalização de interface. • Certifique-se de que a atualização funciona como esperado, de acordo com as suas experiências anteriores e com as releases notes. • Observe mudanças e o impacto causado por elas, identifique problemas e encontre soluções. 6 Snapshots são “fotografias” do ambiente, que guardam o estado salvo pelo usuário. Caso algum problema tenha ocorrido, é possível voltar para o estado anterior sempre que desejado.
  • 9. 8 Estratégias de atualização usando yum – Dicas e sugestões • Caso seja um serviço (como um servidor web, por exemplo) teste de diferentes clientes/hosts. • Se um grande grupo de usuários utiliza o software em questão no dia-a-dia-, pode ser interessante incluir alguns em um grupo de testes. Será de grande ajuda se, é claro, você julgar necessário. Para a atualização do Kernel, outras dicas interessantes são: • Procure manter uma (acredite, é o bastante) versão anterior funcional do Kernel. • Observe o processo de boot, o comportamento dos serviços e a detecção de hardware. • Teste serviços e aplicações com o novo kernel. É importante também informar aos usuários sobre novas atualizações, e mantê-los a par de qualquer modificação e problema que elas possam resultar. Outros fatores que devem ser considerados Ao estabelecer sua estratégia de atualização você deve levar em conta alguns fatores, como espaço em disco, as conexões de rede e volume de dados que trafegarão na rede. Note que isso depende, basicamente, de quantas máquinas serão atualizadas, com que freqüência e se você possui diferentes arquiteturas compondo a sua infraestrutura. Um repositório não é diferente de outros serviços disponíveis no seu ambiente. A preocupação em ajustá-lo para atender as suas necessidades será igualmente importante.
  • 10. © Daniel C. Marques 93 - Usando repositório local com yum 3 - Usando repositório local com yum A partir de agora, veremos como isso aplicar uma estratégia de atualização usando o yum. O cenário mais comum é a utilização de um repositório local, que recebe os pacotes da Internet, e disponibiliza para os demais recursos da rede. Figura 2 - Único repositório central 7 Na figura anterior, temos um ambiente de testes, que recebe os pacotes de atualização da Internet. Nos hosts de teste, eles passarão pelo processo de homologação necessário, até que seja possível garantir que a atualização pode ser feita com o mínimo de risco necessário ou que sejam determinadas soluções desejáveis para os problemas encontrados. Ao ser copiado para o Repositório Local, as máquinas de produção detectam que existe uma atualização disponível, fazem o download e a instalam. Como é possível colocar vários “micro-repositórios” dentro de uma mesma máquina, diferentes hosts (ou grupos de hosts) podem se conectar ao mesmo repositório central. 7 Note que elementos como firewalls não são representados, para simplificar as figuras. Lembre-se que você deve considerar os requisitos da arquitetura da sua rede.
  • 11. 10 Estratégias de atualização usando yum – Dicas e sugestões Essa estratégia nos fornece algumas vantagens: • Maior controle sobre que softwares serão atualizados. • Redução do tráfego com a Internet. • Atualizações mais rápidas. Preparação do repositório A principal sugestão é em relação ao particionamento do disco. Crie uma partição exclusiva para os pacotes de atualização. Essa medida evitará que o sistema pare de funcionar caso o repositório cresça demais. Como vimos anteriormente, a máquina também precisará de um servidor web ou FTP, onde serão encontrados os pacotes utilizados. Existem duas formas de manter os arquivos nesses diretórios: síncrona e assíncrona. No servidor local, você não precisará se preocupar com isso (considerando que você colocará no repositório, manualmente, apenas os pacotes previamente testados). Você pode, no entanto, desejar sincronizar o repositório de testes com algum repositório yum remoto. Isso pode ser conseguido através da ferramenta reposync do pacote yum-utils ou utilizando o comando wget. Configuração do ambiente para utilizar um repositório yum Daqui em diante, consideraremos a utilização de um servidor HTTP e da distribuição CentOS 5 i386 para os nossos exemplos. Faça as devidas adaptações necessárias para o seu ambiente. Passo 1: Criação do diretório do repositório O primeiro passo é a criação da estrutura de diretórios que irão compor o repositório, que vai depender de qual seu objetivo com o repositório. Como desejamos criar um repositório unicamente para atualizações, teremos a seguinte estrutura: • Repositório Base: Conterá os pacotes RPM básicos da distribuição. Esses pacotes podem ser copiados a partir do CD/DVD do CentOS, no diretório base. • Repositório de Atualizações: Conterá os pacotes RPM com as atualizações. Podem ser baixados da Internet ou copiados manualmente após o ciclo de testes. Seu diretório será updates. Criamos então o diretório principal e os subdiretórios do repositório: Na primeira linha, usamos o comando mkdir para criar os diretórios base e updates. Note que, da forma como esses diretórios foram criados, você pode ter várias versões do CentOS na mesma máquina, bastando criar diretórios diferentes seguindo a mesma estrutura. Copie os pacotes RPM existentes no DVD/CD para o diretório /var/www/ centos/5/os/i386/CentOS. mkdir –pv /var/www/centos/5/{base,updates}/i386 mkdir –pv /var/www/centos/5/base/i386/CentOS
  • 12. © Daniel C. Marques 113 - Usando repositório local com yum Para transformar um diretório em repositório, você deve utilizar o comando createrepo. Caso você não possuía o utilitário createrepo, pode instalá-lo a partir de yum install createrepo. Este é o comando que cria o diretório repodata e gera os cabeçalhos. Passo 2: Configuração dos clientes yum A configuração do cliente é bastante simples. Sempre que um novo repositório for criado, você deve adicionar um arquivo .repo no diretório /etc/yum/repos.d. Você pode ver um exemplo de conteúdo deste arquivo a seguir. A linha gpgcheck = 1 indica que será feita uma verificação da assinatura digital8 no pacote antes da sua instalação. Para que o cliente atualize automaticamente, você pode adicionar um job para o comando yum update no cron. Isso pode ser feito iniciando o serviço yum, configurando-o para disparar ao inicializar e inserindo o script abaixo no diretório cron apropriado: No CentOS, isso pode ser feito também a partir do daemon yum-updatesd. No arquivo de configuração localizado em /etc/yum/yum-updatesd.conf, é possível determinar a frequência das atualizações e habilitar a instalação automática: 8 Assinatura digital é semelhante a uma assinatura de próprio punho. Por conter características bem próprias a um determinado objeto, pode ser utilizada para verificar sua integridade. chkconfig yum-updatesd on /etc/init.d/yum-updatesd start #!/bin/sh if [ -f /var/lock/subsys/yum ]; then /usr/bin/yum -e 0 -d 0 clean packages fi [Base] name = CentOS-$releaseserver - Base baseurl = http://nomedoservidor/centos/5/base gpgcheck = 1 [Update] name = CentOS-$releaseserver - Atualizações baseurl = http://nomedoservidor/centos/5/updates gpgcheck = 1 createrepo /var/www/centos/5/base createrepo /var/www/centos/5/updates
  • 13. 12 Estratégias de atualização usando yum – Dicas e sugestões Manutenção do repositório É importar lembrar que os cabeçalhos devem ser atualizados sempre que um novo pacote for inserido no repositório. Para isso, basta executar o comando abaixo: Problemas com as atualizações podem ocorrer se os arquivos de cabeçalho estiverem corrompidos ou inconsistentes. Tente remover o diretório reposdata e executar novamente o comando createrepo. Normalmente, é o suficiente para que o problema seja resolvido. Notificação de atualização por e-mail Você pode direcionar seu repositório de testes para fazer atualizações a partir de um repositório remoto (que pode ser o repositório da distribuição ou um repositório de terceiros, por exemplo). Dessa forma, quando houver alguma modificação no repositório externo, você poderá ser notificado. Isto pode ser feito através das configurações do daemon yum-updatesd ou através do script Yumnotifier. Ele está disponível para download a partir do seguinte endereço http://prefetch.net/code/yumnotifier.html. Toda a documentação do script está presente no seu cabeçalho. createrepo -–update <caminho-para-repositorio>
  • 14. © Daniel C. Marques 134 - Outras dicas úteis 4 - Outras dicas úteis O yum guarda um cache dos cabeçalhos e arquivos no diretório /var/cache/yum. Evite que ele cresça indefinidamente usando a opção clean: Se você utiliza alguma ferramenta de monitoramento de redes, como o Nagios (http://www.nagios.org/) ou o Zabbix (http://www.zabbix.com/), é provável que você encontre scripts permitam monitorar o status da atualização nas máquinas. Por alguma falha – que muitas vezes passa despercebida – um host qualquer da sua rede pode ficar sem a última versão de um software; nesse caso, esses scripts são extremamente úteis para uma rápida detecção do problema. No site Monitoring Exchange (http://www.monitoringexchange.org) você encontra o check_yum (http://www.monitoringexchange.org/p/1125), um script que pode ser usando em conjunto com o Nagios para esta finalidade. Falando sobre repositórios externos, tome muito cuidado com eles: não os misture. Existem vários repositórios que não são compatíveis entre si, ou com a sua distribuição. Escolha um repositório que funcione para você, e fique com ele. 5 – Considerações Finais Durante o texto, aprendemos como o yum funciona, e uma estratégia utilizando ambiente de testes e um repositório central interno. Vimos essa abordagem ajuda a reduzir o consumo de banda da Internet, além de tornar as atualizações mais rápidas. Além disso, vimos que comandos executar e que ferramentas podem ser úteis nessa tarefa. Você pode assumir outras estratégias, a partir daqui. Lembre-se sempre que cada ambiente possui suas particularidades, portanto, demanda diferentes soluções. Estude-as com cuidado, entenda como funcionam e aplique o que achar necessário. Ninguém conhece seu sistema melhor do que você. Por fim, navegue pelos links e pelas referências. Certamente você encontrará algo útil. Se tiver alguma dúvida, sugestão ou crítica fique a vontade para me mandar um e-mail. yum clean all
  • 15. 14 Estratégias de atualização usando yum – Dicas e sugestões Referências Bailey Edward C. RPM and Developers — How to Distribute Your Software More Easily With RPM [Online] // Maximum RPM: Taking the Red Hat Package Manager to the Limit. - Red Hat, Inc., 2000. - 8 de Novembro de 2010. - http://www.rpm.org/max-rpm/p5208.html. CAIS-RNP Rede Nacional de Ensino e Pesquisa [Online] // Segurança em Redes. - Rede Nacional de Ensino e Pesquisa. - 09 de Novembro de 2010. - http://www.rnp.br/cais/. Citrix Systems, Inc [Online] // Xen.org. - 09 de Novembro de 2010. - http://www.xen.org/. Foster-Johnson Eric, Ellis Stuart e Cotton Ben RPM Guide [Online] // Fedora Documentation. - 8 de Novembro de 2010. - http://docs.fedoraproject.org/en- US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html. Hughes Richard [Online] // PackageKit website. - 8 de Novembro de 2010. - http://www.packagekit.org/. Jang Michael Linux Patch Management: Keeping Linux Systems Up To Date [Livro]. - Crawfordsville : Prentice Hall, 2006. - 0-13-236675-4. Milano Fabiano Nagios NRPE Monitor Yum Updates [Online] // KernelHardware.org. - 26 de Junho de 2009. - 8 de Novembro de 2010. - http://www.kernelhardware.org/nagios-nrpe- monitor-yum-updates/. Monitoring Exchange [Online] // Monitoring Exchange website. - 10 de Novembro de 2010. - http://www.monitoringexchange.org. Nagios Enterprises [Online] // Nagios - The Industry Standard In Open Source Monitoring. - 10 de Novembro de 2010. - http://www.nagios.org/. OCS Inventory Team [Online] // OCS Inventory NG web site. - 8 de Novembro de 2010. - http://www.ocsinventory-ng.org/. Portal Yats [Online] // openSUSE Wiki. - 8 de Novembro de 2010. - http://en.opensuse.org/Portal:YaST. Prefetch Technologies E-mail available yum updates [Online] // Prefetch Technologies Website. - 10 de Novembro de 2010. - http://prefetch.net/code/yumnotifier.html. Sofware Engineering Institute [Online] // CERT Website. - Carnegie Mellon University. - 09 de Novembro de 2010. - http://www.cert.org/. The RPM Team [Online] // RPM Project Wiki. - 8 de Novembro de 2010. - http://www.rpm.org/. The Yum Extender Team [Online] // Yum Extender website. - 09 de Novembro de 2010. - http://www.yum-extender.org/.
  • 16. © Daniel C. Marques 15Referências VMware, Inc [Online] // VMware website. - 8 de Novembro de 2010. - http://www.vmware.com/br/. yum Team [Online] // yum Wiki. - 8 de Novembro de 2010. - http://yum.baseurl.org/. Zabbix SIA [Online] // Zabbix - An Enterprise-Class Open Source Distributed Monitoring Solution. - 10 de Novembro de 2010. - http://www.zabbix.com/.