Você está na página 1de 8

rpm_

Distribuindo
sua aplicao
Java via RPM
Agilize a implantao de suas
aplicaes, transformando-a em
um processo simples como apertar um boto, independentemente
da quantidade de dependncias que ela possua.

A s formas padro de distribuio de aplicaes


Java possuem apenas a funo de empacotar e
muitas vezes precisamos de algo mais para que uma
suscetvel a erros pelo fato de automatiz-lo, isto ,
todos os pr-requisitos, a aplicao, as dependn-
cias e as aes que devem ser executadas durante
aplicao seja implantada, pois normalmente algu- esse processo podem ser empacotadas em apenas
mas aes bsicas e outras especficas de cada apli- um arquivo para que com um simples comando tudo
cao e de cada perfil de aplicao precisam ser exe- seja implantado no ambiente desejado. Alm disso, o
cutadas antes ou depois, como, por exemplo: RPM uma forma de empacotamento poderosa, fle-
instalar uma mquina virtual Java; xvel e padro em ambientes Linux para instalao,
instalar um container; atualizao e remoo de aplicaes e suas depen-
instalar um SGBD (Sistema de Gerenciamento dncias. At o momento da escrita deste artigo, no
de Banco de Dados); h RPM para Windows, mas podemos utiliz-lo atra-
configurar variveis de ambiente; vs do Cygwin, porm seus detalhes de instalao e
instalar um MoM (Message Oriented Midd- configurao no sero cobertos neste artigo para
leware) externo; no torn-lo muito extenso, visto que no se trata
instalar e configurar um broker SMS (Short de uma atividade trivial. Deve-se ressaltar tambm
Message Service); que apesar do RPM ser capaz de empacotar qualquer
instalar o driver de um modem 3G e configur- coisa e qualquer aplicao em qualquer linguagem,
-lo; este artigo aplicar a tecnologia plataforma Java.
popular um banco de dados;
executar scripts etc. RPM
Portanto, nota-se que o processo de implantao O RPM (RPM Package Manager) surgiu da neces-
de uma aplicao pode se tornar complexo, depen- sidade de se ter um gerenciador de pacotes multi-
dendo das suas necessidades. Uma forma de simpli- plataforma de uso simplificado que possibilitasse a
fic-lo utilizar o gerenciador de pacotes RPM que instalao, atualizao e remoo de pacotes atravs
torna esse processo mais simples, rpido e menos da utilizao de comandos simples. Com ele, poss-

/ 46
Diego Falco | dfalcaocc@gmail.com
Bacharel em Cincia da Computao, MBA em Gesto de Projetos pela FGV, possui as certificaes SCJP, SCWCD e CNAP e traba-
lha h 8 anos com a plataforma Java. Atualmente trabalha como pesquisador no INdT (Instituto NOKIA de Tecnologia).

Voc leitor que trabalha como sysadmin (administrador de siste-


mas) ou como desenvolvedor provavelmente j teve a experincia
de implantar uma aplicao, onde normalmente existem pr-requi-
sitos que devem ser satisfeitos para o seu correto funcionamento,
como um banco de dados ou um container web que precisam ser
instalados manualmente antes da aplicao. Que tal automatizar
esse processo?

vel agrupar vrios arquivos em apenas um atravs do quitetura em particular, ou seja, se voc deseja que
empacotamento, permitindo tambm que mltiplas a aplicao empacotada seja executada em duas ar-
verses de um pacote possam ser instaladas no mes- quiteturas diferentes, dois pacotes RPMs devero
mo sistema. Alm disso, as atualizaes na aplicao ser criados normalmente, um para cada arquitetura,
tornam-se mais fceis, pois o RPM capaz de re- exceto no caso em que a aplicao independente
mover dados antigos, preservar dados da instalao de plataforma. Nesse caso, o pacote ser sinalizado
anterior ou sobrescrev-los quando necessrio, alm com o nome noarch, conforme veremos no exemplo
de permitir que essas atualizaes sejam pontuais prtico em breve. J o pacote fonte deve conter todos
em apenas determinados componentes. os arquivos, scripts e comandos necessrios para se
Basicamente, o RPM um sistema de gerencia- criar o RPM binrio a qualquer momento para a pla-
mento de pacotes free, open-source, padro e nativo taforma em questo. Na tabela 1 podemos visualizar
em vrias distribuies Linux, capaz de empacotar os as plataformas e arquiteturas suportadas pelo RPM,
diversos arquivos de uma aplicao em apenas um ou seja, todos os valores que podem ser atribudos
pacote RPM e controlar o seu ciclo de vida, ou seja, o tag BuildArch do cabealho do arquivo de especifi-
que deve ser executado antes e depois da sua insta- cao.
lao e da sua remoo. Esse controle feito atravs
de uma especificao escrita em um arquivo com ex- PLATAFORMA ARQUITETURAS
tenso .spec que ser detalhado no prximo tpico.
Para facilitar na manuteno, os pacotes so i386, i486, i586, i686,
Intel-compatible
rotulados com nomes bem definidos, divididos em athlon, geode, pentium3,
32-bit
quatro partes: nome-verso-release.arquitetura. pentium4
rpm, por exemplo, mundoj-webapp-1.0-1.noarch. Intel-compatible
rpm. A primeira parte identifica geralmente o nome x86_64, amd64
64-bit
da aplicao, mas pode ser o nome que ser atribu-
do ao pacote. A segunda parte diz respeito verso Intel Itanium ia64
da aplicao que est empacotada e a terceira parte alpha, alphaev5, alphaev56,
identifica qual release dessa verso o pacote contm HPAlpha(Digital,
alphapca56, alphaev6,
e, por fim, a quarta parte diz respeito arquitetura- Compaq)
alphaev67
-alvo do pacote. Deve-se ressaltar que esse o pa-
dro para o nome do arquivo .rpm gerado, mas quan- sparc, sparcv8, sparcv9,
Sparc/Ultra Sparc
do esse pacote for instalado, por default, ele ser sparc64, sparc64v, sun4,
(Sun)
referenciado pelo seu nome configurado no arquivo sun4c, sun4d, sun4m, sun4u
de especificao.
Existem duas formas de pacotes RPM: binrio e
fonte. Um pacote binrio compilado para uma ar-

47 \
armv3l, armv4b, armv4l, Contm comandos para
ARM armv5tel, armv5tejl, limpar arquivos temporrios
armv6l,armv7l %clean
utilizados durante a criao
MIPS mips, mipsel do pacote.

ppc, ppciseries, ppcpseries, Contm tudo que deve


Power PC ppc64, ppc8260, ppc8560, %pre ser executado antes da
ppc32dy4 instalao.
Contm tudo que deve
m68k, m68kmint, atarist, %post ser executado depois da
Motorola 68000
atariste, ataritt, falcon, instalao.
series
atariclone, milan, hades
Contm tudo que deve
SGI MIPS Sgi %preun ser executado antes da
IBM RS6000 rs6000 desinstalao.

IBM S/390 i370, s390x, s390 Contm tudo que deve


%postun ser executado depois da
Independentemente desinstalao.
noarch
de plataforma
Contm informaes de
Tabela 1. Arquiteturas suportadas (RPM verso 4.7). histrico de mudana. Deve-
%changelog se adicionar uma nova
entrada a cada mudana na
O arquivo spec aplicao.
Um arquivo spec um arquivo-texto contendo
especificaes RPM. Atravs desse arquivo que o RPM Tabela 2. Sees do clico de vida de um pacote RPM.
saber o que deve ser feito durante o ciclo de vida do
Agora que j conhecemos um pouco sobre o ar-
pacote, isto , o que deve ser empacotado e executado
quivo spec e suas sees, vamos visualizar um exem-
desde a sua gerao at a sua instalao e remoo.
plo real na Listagem 1 para entendermos sua sinta-
Essa especificao composta por um cabealho, se-
xe e como desenvolv-lo. Esse arquivo faz parte do
es, scripts, comandos do shell, macros e condicio-
exemplo do tpico seguinte que gera um pacote RPM
nais. Neste artigo, daremos foco s sees por serem
capaz de realizar o deploy de uma aplicao web no
as partes mais importantes do arquivo e que definem
JBoss 7 e executar um shell script para popular tabe-
todo o ciclo de vida do pacote, mas alguns comen-
las auxiliares no banco de dados.
trios bsicos durante o exemplo prtico sero feitos
acerca dos outros itens tambm. Para entender o que Listagem 1. Arquivo spec.
cada seo define, veja a tabela 2.
Name: mundoj-webapp
Version: 1.0
Descreve o pacote para Release: 1
%description Summary: Exemplo MundoJ WebApp
quem for utiliz-lo.
Group: Application/System
License: Restricted
Prepara os arquivos antes BuildArch: noarch
%prep
da criao do pacote. URL: http://www.mundoj.com.br
Vendor: MundoJ
Executa todos os passos Packager: Diego Falcao <dfalcaocc@gmail.
necessrios para se criar com>
%install e empacotar os arquivos Requires(post): java
durante o processo de
criao do pacote. %define _unpackaged_files_terminate_build 0
%define mundoj_target_dir /usr/local/mundoj
Contm a lista de arquivos
que devem ser copiados %description
%files para o sistema de arquivos Este e um exemplo de empacotamento simplificado
durante o processo de de uma aplicacao web Java para fins didaticos.
instalao do pacote.

/ 48
%install %postun
rm -rf $RPM_BUILD_ROOT echo POSTUN SECTION
echo Todos os arquivos foram removidos com
echo INSTALL SECTION sucesso!

JBOSS_DEPLOY_DIR=/usr/local/jboss/standalone/ %post
deployment echo POST SECTION

mkdir -m 0755 -p $RPM_BUILD_ROOT%{mundoj_ cd %{mundoj_target_dir}


target_dir}
mkdir -m 0755 -p $RPM_BUILD_ROOT$JBOSS_ echo Populando o banco de dados...
DEPLOY_DIR
./dump.sh
install -m 644 mundoj-web-1.0-SNAPSHOT.war
$RPM_BUILD_ROOT$JBOSS_DEPLOY_DIR/mundoj- %files
web-1.0-SNAPSHOT.war /usr/local/jboss/standalone/deployment/mundoj-
install -m 744 dump.sh $RPM_BUILD_ web-1.0-SNAPSHOT.war
ROOT%{mundoj_target_dir}/dump.sh /usr/local/mundoj/dump.sql
install -m 644 dump.sql $RPM_BUILD_
ROOT%{mundoj_target_dir}/dump.sql %attr(755, root, root) /usr/local/mundoj/dump.sh

%clean %changelog
rm -rf $RPM_BUILD_ROOT * Thu Aug 09 2012 Manaus
rm -rf %{_tmppath} - Criacao inicial do spec

%prep As 15 primeiras linhas correspondem ao que


echo PREP SECTION chamamos de cabealho, pois descreve o pacote
para a ferramenta RPM com informaes referentes
%pre ao nome da aplicao, verso, release, arquitetura,
echo PRE SECTION descrio, pr-requisitos etc. A partir da linha 19, as
sees comeam a ser especificadas com o uso de co-
%preun mandos do shell para a execuo das aes de cada
echo PREUN SECTION passo do ciclo de vida do pacote.
echo Removendo pasta %{mundoj_target_dir} Na figura 1 podemos ter uma noo de como fun-
ciona o ciclo de vida de um pacote RPM. O incio cor-
rm -rf %{mundoj_target_dir} responde etapa em que s temos o arquivo spec e
rm -rf /usr/local/jboss/standalone/deployment/ nada mais. Aps a execuo do comando 1, as sees
mundoj-web-1.0-SNAPSHOT.war %prep, %install e %clean sero executadas e o pacote
RPM ser gerado. De posse do pacote RPM, ao execu-
tar o comando 2, as sees %files, %pre e %post sero
executadas e os arquivos existentes no pacote sero

Figura 1. Ciclo de vida de um pacote RPM.

49 \
instalados. Aps a instalao do pacote, possvel O sistema RPM segue uma estrutura padro de
executar o comando 3 que far com que as sees diretrios que devemos respeitar para a criao do
%preun e %postun sejam executadas, normalmente pacote. Abaixo, podemos conhecer a estrutura e o que
removendo todos os arquivos que foram previamen- deve existir em cada diretrio:
te instalados pelo pacote. A seguir, esse ciclo de vida BUILD: armazena os itens que devem ser em-
passar a fazer mais sentido atravs de um exemplo pacotados. No caso do exemplo, o arquivo .war,
prtico. o shell script e o .sql do dump.
BUILDROOT: contm uma cpia do que ser
Criando o arquivo .rpm copiado para o sistema de arquivos durante o
Para se criar o pacote RPM, pode-se utilizar de processo de instalao.
uma abordagem tradicional que exige um conheci- RPMS: contm o arquivo RPM binrio gerado
mento mais avanado sobre os comandos do RPM e pela ferramenta rpm-build.
a sintaxe do arquivo spec, como tambm podemos SOURCES: contm os fontes, caso exista.
utilizar o plugin RPM para o maven. Abaixo, as duas SPECS: contm o arquivo spec que servir de
abordagens de empacotamento sero explicadas para fonte para a gerao do pacote RPM em ques-
a gerao de um pacote RPM binrio. to.
SRPMS: contm o RPM fonte gerado no proces-
Abordagem tradicional so de gerao do pacote RPM.
Apesar de ser um pouco mais complicada, essa Para criarmos a estrutura supracitada, vamos
abordagem bem mais robusta, pois existem coisas criar tambm um usurio comum para gerar nosso
que ainda no so possveis com o plugin do maven pacote RPM sem perigo de causar danos ao nosso sis-
at a escrita deste artigo, como, por exemplo, lidar tema. Para isso, abra o terminal e digite os comandos
com fontes. abaixo:
Para iniciarmos o exemplo, alguns pr-requisitos
precisam ser atendidos, como: # adduser mundoj-rpm -m
# passwd mundoj-rpm
CentOS5+: por mais que o RPM possa executar # su - mundoj-rpm
em outras distribuies linux, vamos utilizar o # cd /home/mundoj-rpm
CentOS 5 ou superior para desenvolver o exem- # mkdir rpm
plo prtico deste artigo; # cd rpm
rpm-build: ferramenta necessria para gerar o # mkdir BUILD BUILDROOT RPMS SOURCES
pacote RPM a partir do arquivo spec; SPECS SRPMS
YUM: gerenciador de pacotes que ser utiliza-
do para instalar o rpm-build; Alm disso, precisamos criar um arquivo chama-
JBoss 7: para simplificar o exemplo, assumimos do .rpmmacros na home do nosso usurio que infor-
que j existe um JBoss 7 instalado em /usr/lo- mar ao RPM qual diretrio utilizar para a estrutura
cal/jboss e rodando. Se no existir, a instalao de diretrios e para pasta temporria. Para isso, exe-
criar o diretrio e copiar o arquivo .war. Por- cute os comandos abaixo no terminal:
tanto, esse pr-requisito no obrigatrio caso # echo %_topdir /home/mundoj-rpm/rpm >>
voc no queira ver a aplicao rodando aps .rpmmacros
a instalao do pacote. O importante aqui no # echo %_tmppath /home/mundoj-rpm/rpm/tmp
ver a aplicao empacotada rodando e, sim, >> .rpmmacros
entender que podemos automatizar o deploy Agora que j temos a estrutura pronta e os paths
de uma aplicao atravs da cpia de um WAR, configurados, vamos copiar para a pasta BUILD os ar-
por exemplo. quivos que sero empacotados. Para isso, execute o
Primeiramente, vamos instalar o rpm-build que comando abaixo no terminal:
ser a ferramenta responsvel por gerar nosso pacote
RPM a partir do arquivo spec. Para isso, abra o termi- # cp dump.sql /home/mundoj-rpm/rpm/BUILD/
nal e execute o comando abaixo: # cp dump.sh /home/mundoj-rpm/rpm/BUILD/
# yum install rpm-build # cp mundoj-web-1.0-SNAPSHOT.war /home/
Aps a execuo do comando acima, o YUM ve- mundoj-rpm/rpm/BUILD/
rificar se o rpm-build j est instalado ou se precisa
ser atualizado. Caso contrrio, ser mostrada uma Como voc no possui esses arquivos, voc pode
opo para aceitar ou recusar a instalao. Se voc utilizar qualquer arquivo .war, qualquer arquivo .sh
no tem acesso Internet, ter que baix-lo e instal- e qualquer arquivo.sql nesse exemplo, contanto que
-lo manualmente. estejam com os mesmos nomes ou que voc faa as

/ 50
adaptaes necessrias. Voc pode tambm sim-
plesmente criar os arquivos em branco no diretrio
BUILD, pois o objetivo aqui voc entender que alm
de outras coisas, tambm podemos copiar arquivos
e executar scripts. Para criar os arquivos fictcios do
exemplo, execute no terminal os comandos abaixo:
# touch /home/mundoj-rpm/rpm/BUILD/dump.
sql
# touch /home/mundoj-rpm/rpm/BUILD/dump.
sh
# echo #!/bin/sh >> /home/mundoj-rpm/rpm/
BUILD/dump.sh
# echo echo Executando o script para popular o
banco de dados >> /home/mundoj-rpm/rpm/BUILD/
dump.sh
# touch /home/mundoj-rpm/rpm/BUILD/mun-
doj-web-1.0-SNAPSHOT.war
Feito isso, crie o arquivo mundoj.spec dentro da
pasta SPECS e copie o cdigo disponvel na Listagem
1. Em seguida, execute no terminal o comando abaixo
para a gerao do arquivo .rpm:
# rpmbuild bb /home/mundoj-rpm/rpm/SPECS/ Figura 2. Estrutura do projeto-exemplo.
mundoj.spec
Pronto, agora temos um pacote RPM pronto para Listagem 2. Contedo parcial do arquivo pom.xml.
ser instalado. Para instal-lo, execute no terminal o
<build>
comando abaixo como usurio root:
<plugins>
# rpm -ivh /home/mundoj-rpm/rpm/RPMS/noar- <plugin>
ch/mundoj-webapp-1.0-1.noarch.rpm <groupId>org.codehaus.mojo</groupId>
Aps a execuo do comando, podemos verificar <artifactId>rpm-maven-plugin</artifactId>
que foi criada a pasta /usr/local/mundoj/ no sistema <version>2.1-alpha-2</version>
de arquivos contendo o arquivo .sql e o arquivo .sh <executions>
responsvel por popular o banco de dados e que o ar- <execution>
quivo .war foi copiado para o diretrio de deploy do <goals>
<goal>rpm</goal>
JBoss 7, ou seja, /usr/local/jboss/standalone/deploy-
</goals>
ment. </execution>
Para remover o pacote, utilize o nome que foi </executions>
utilizado na tag name do arquivo spec, ou seja, <configuration>
mundoj-webapp. Logo, execute o comando abaixo no <name>mundoj-webapp</name>
terminal: <version>1.0</version>
# rpm -e mundoj-webapp <release>1</release>

Aps a execuo do comando acima, note no ter- <summary>Exemplo MundoJ WebApp</summary>


minal que os passos %preun e %postun foram execu- <group>Application/System</group>
tados com sucesso. <license>restricted</license>
<url>http://www.mundoj.com.br</url>
<packager>Diego Falcao (dfalcaocc@gmail.com)</
Plugin RPM para o maven packager>
Para utilizar essa abordagem necessrio que o <vendor>MundoJ</vendor>
Maven e o RPM estejam instalados. Feito isso, crie <prefix>/usr/local</prefix>
um projeto maven web (maven-archetype-webapp) <description> Este e um exemplo
contendo a estrutura e os arquivos mostrados na fi- de empacotamento simplificado de uma
gura 2 e adicione no pom.xml as linhas mostradas aplicacao web java para fins didticos
</description>
na Listagem 2. importante lembrar que os arquivos <defineStatements>
mostrados na figura 2 podem estar em branco, pois o <defineStatement>
objetivo aqui termos um pacote RPM com arquivos _unpackaged_files_terminate_build 0
que possam ser manipulados durante o ciclo de vida
do pacote.

51 \
</defineStatement> </postremoveScriptlet>
</defineStatements> </configuration>
<mappings> </plugin>
<mapping> <plugins>
<directory>/usr/local/jboss/ <build>
standalone/deployment/</directory>
<filemode>444</filemode>
<username>root</username> A partir da tag <configuration>, nota-se uma seme-
<groupname>root</groupname> lhana muito grande com o arquivo spec, pois defini-
<sources> mos todo o cabealho utilizando as mesmas keywor-
<source> ds utilizadas na abordagem tradicional e outras bem
<location>target/mundoj-web-1.0-
parecidas para mapear as sees do ciclo de vida do
SNAPSHOT.war</location>
</source> pacote. Para as aes que devem ser executas durante
</sources> o ciclo de vida, utilizamos a tag <mapping> onde
</mapping> possvel informar o arquivo que deve ser copiado, o
<mapping> diretrio de destino no sistema de arquivos e as per-
<directory>/usr/local/mundoj</directory> misses. Portanto, as mesmas coisas que foram feitas
<filemode>755</filemode>
na abordagem tradicional tambm foram feitas utili-
<username>root</username>
<groupname>root</groupname> zando o plugin, porm de forma muito mais simples,
<sources> intuitiva e rpida. Um ponto importante que deve
<source> ser explicado a linha _unpackaged_files_terminate_
<location>src/main/ build 0 que se repetiu tanto no arquivo spec quanto
resources/dump.sh</location> no pom.xml. Essa linha informa ao rpmbuild para no
</source>
abortar a gerao do pacote caso seja encontrado al-
</sources>
</mapping> gum arquivo no diretrio BUILDROOT que no esteja
<mapping> listado na seo %files para ser copiado para o pacote
<directory>/usr/local/mundoj</directory> RPM.
<filemode>440</filemode> Depois de preparar o pom.xml, execute o maven
<username>root</username> install no projeto. Aps o trmino do build possvel
<groupname>root</groupname>
verificar na pasta target que o plugin criou a mesma
<sources>
<source> estrutura que criamos na abordagem tradicional, com
<location>src/main/resources/ o arquivo spec gerado automaticamente na pasta
dump.sql</location> SPEC e o pacote RPM na pasta RPMS/noarch. Daqui
</source> em diante, os passos para manuseio do pacote so os
</sources> mesmos da abordagem tradicional, utilizando a linha
</mapping>
de comando para instalar, remover ou atualizar.
</mappings>
<preinstallScriptlet> Independentemente da abordagem de empacota-
<script>echo PRE SECTION</script> mento utilizada, a sada idntica, isto , um pacote
</preinstallScriptlet> RPM contendo todos os arquivos necessrios para
<preremoveScriptlet> a completa instalao da aplicao. De posse desse
<script>rm -rf /usr/local/jboss/standalone/ nico pacote, o sysadmin capaz de executar a insta-
deployment/mundoj-web-1.0-SNAPSHOT.war
lao sem risco de erros e de forma bem mais rpida
| rm -rf /usr/local/mundoj</script> do que se fosse instalar cada dependncia manual-
</preremoveScriptlet> mente. Alm disso, existem diversos gerenciadores
<postinstallScriptlet> de pacotes RPM que tornam essa forma de empaco-
<scriptFile>src/main/resources/ tamento mais poderosa e facilitam ainda mais esse
dump.sh</scriptFile> trabalho, pois se responsabilizam por encontrar em
algum repositrio local ou remoto, baixar e ins-
<fileEncoding>utf-8</fileEncoding>
talar a aplicao e todas as dependncias descritas
</postinstallScriptlet>
<postremoveScriptlet> no arquivo spec, bem como desinstalar tudo que foi
<script>echo Todos os arquivos foram instalado pelo pacote independentemente das sees
removidos com sucesso!</script> %preun e %postun declaradas nesse arquivo. No faz
parte do escopo deste artigo, mas convidamos o leitor
a conhecer um pouco mais sobre o YUM, um geren-
ciador de pacotes RPM open-source.

/ 52
Consideraes Finais
Este artigo apresentou de forma pragmtica uma /referncias
poderosa ferramenta para empacotamento, desen-
volvida em 1997 para ser usada no linux Red Hat, mas
que hoje pode ser utilizada em vrias distribuies
e pode servir perfeitamente para empacotar, distri-
buir e automatizar a implantao de aplicaes Java e > http://docs.fedoraproject.org/en-US/Fedora_Draft_
suas dependncias. Mostramos tambm que existem Documentation/0.1/html/RPM_Guide/
duas formas de gerao do pacote RPM: a abordagem
tradicional via linha de comando e o plugin RPM para > http://grahams.free-online.co.uk/RPMNotes.html

o maven, ficando a cargo do desenvolvedor decidir > http://www.ibm.com/developerworks/library/l-rpm1/


qual atende melhor as suas necessidades.
Nota-se, portanto, que as possibilidades so in- > http://www.ibm.com/developerworks/linux/library/l-

finitas, pois todo o processo de implantao de uma rpm2/index.html

aplicao desde a instalao, controle de verso, > http://www.ibm.com/developerworks/linux/library/l-


atualizao ou remoo pode ser automatizado por rpm3/index.html
scripts e pelo ciclo de vida definido pela ferramenta,
> http://www.ibm.com/developerworks/linux/library/l-
garantindo simplicidade, segurana, consistncia e
lpic1-v3-102-5/index.html
manuteno facilitada a esse processo, mesmo para
aplicaes mais complexas que possuam seus com- > http://pmc.ucsc.edu/~dmk/notes/RPMs/Creating_RPMs.
ponentes distribudos entre vrias mquinas. Alm html
disso, essa ferramenta aliada ao YUM pode ser con-
> http://rpm.org/
siderada uma forte candidata na implementao de
uma plataforma de Continuous Delivery, pois perio- > http://mojo.codehaus.org/rpm-maven-plugin/
dicamente o pacote RPM da aplicao pode ser ge-
> http://rombertw.wordpress.com/2010/05/20/maven-
rado, copiado e disponibilizado em um repositrio
recipe-delivering-applications-as-rpms/
YUM para ser implantado em produo a qualquer
momento. Existem muitos outros detalhes bsicos e > http://www.slideshare.net/actionjackx/automated-java-
avanados referentes ao RPM que no puderam ser deployments-with-rpm
condensados neste artigo, mas esperamos que ele
tenha servido de motivao para um maior apren-
dizado sobre a ferramenta. Mais informaes sobre
os comandos RPM, tags do arquivo spec e do plugin,
fontes, macros e assinatura de pacotes podem ser
consultadas nas referncias deste artigo.

53 \

Você também pode gostar