SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Energia Open Source




                      Construir pacotes RPM:
                         arte e engenho



        Flávio Moringa flavio.moringa@caixamagica.pt
Energia Open Source




      Pacotes RPM
       Tópicos a abordar
             –   Vantagens
             –   Arquitectura
             –   O RPM fonte
             –   Criar um src.rpm
             –   O ficheiro .spec em detalhe
             –   Exemplo “Hands-On”
             –   Documentação na rede




15.03.2010                         Construir Pacotes RPM: arte e engenho   2
Energia Open Source




      Vantagens
       Instalação automática e “scriptable” de software;
       Fácil de actualizar e remover software;
       Fácil de descobrir onde estão os ficheiros de um
           determinado software;
       Garante que as dependências de outro software
           necessárias à execução do actual estão instaladas;
       Garante a autenticidade do software se assinado
           digitalmente;
       Fácil de instalar software (se necessário recorrendo a
        meta-instaladores como o apt-rpm, yum, smart, urpmi,
           zypper, etc.);
       Usado por algumas das principais distribuições mundiais
           (Red Hat/Fedora, openSUSE, Mandriva, etc.).

15.03.2010                 Construir Pacotes RPM: arte e engenho   3
Energia Open Source




      Arquitectura
       O pacote RPM
       O pacote Source RPM
       Base de dados de RPM's
             – /var/lib/rpm/
       Utilitários RPM
             – rpm
             – rpmbuild
                 • essencial para construir pacotes, vem do pacote “rpm-
                   build”
             – rpmsign
             – rpm2cpio
       Ficheiros de configuração
             – /usr/lib/rpm/
             – /etc/rpm/

15.03.2010                       Construir Pacotes RPM: arte e engenho     4
Energia Open Source




      Arquitectura
       Nomes Convencionados
             – nome-versão-revisão.arquitectura.rpm
       Arquitecturas
             – source (src.rpm)
             – noarch (noarch.rpm)
             – binário
                • i386, i486, i586, i686 (compatíveis com intel/amd), x86_64,
                  ia64 (compatíveis com intel e/ou amd de 64bits), ppc,
                  ppc64 (powerpc), sparc64, etc...
       Formato
             – Ficheiro cpio + Cabeçalho binário




15.03.2010                       Construir Pacotes RPM: arte e engenho          5
Energia Open Source




      O RPM fonte
       Source RPM (src.rpm)
             – Permite gerar um ou mais pacotes binários (excepto se a
               arquitectura for noarch) a partir do código fonte de um
               determinado software.


       Conteúdo
             – Código fonte original (normalmente do repositório oficial do
               software em formato tarball);
             – Patches que sejam necessários para alterar o código fonte
               original;
             – Ficheiros adicionais (scripts de inicialização, entradas de
               desktop, etc...);
             – Um ficheiro que indique como deve ser compilado o software,
               e como deve ser colocado no sistema – O ficheiro .spec.


15.03.2010                       Construir Pacotes RPM: arte e engenho        6
Energia Open Source




      Criar um src.rpm de raíz ou usar um existente
       Criar de raíz
             – Se não existe ainda nenhum src.rpm do software;
             – Permite um maior controlo sobre todos os aspectos da
               compilação e da instalação;
             – Pode ser complicado, mas basta fazer uma vez.

       Usar um já existente
             – Usar uma versão antiga de um src.rpm para criar uma versão
               mais nova;
             – A maioria das distribuições disponibilizam os src.rpm de todo o
               seu software;
             – Pode ser complicado se temos de adaptar o src.rpm de outra
               distribuição;
             – Basta alterar o necessário e está feito.


15.03.2010                        Construir Pacotes RPM: arte e engenho          7
Energia Open Source




      Usar um src.rpm já existente
        Instalar o src.rpm
             – Como utilizador normal fazer: rpm -ivh xxx.src.rpm
        Alterar os ficheiros fonte, patch's e ficheiros extra
             – ~/rpmbuild/SOURCES/
        Alterar o ficheiro .spec
             – ~/rpmbuild/SPECS/
        Criar o pacote
             – rpmbuild -ba ~/rpmbuild/SPECS/xxx.spec
        Ficheiros disponíveis
             – ~/rpmbuild/RPMS/arquitectura/
             – ~/rpmbuild/SRPMS/




15.03.2010                       Construir Pacotes RPM: arte e engenho   8
Energia Open Source




      Criar um src.rpm de raíz
        Criar o ambiente
             – mkdir -p ~/rpmbuild/{SPECS,SOURCES,SRPMS,BUILD,RPMS}
             – mkdir -p ~/rpmbuild/RPMS/{athlon,i386,i486,i586,i686,noarch}
        Preparar o código fonte
             – Colocar o tarball oficial na directoria SOURCES
                • cp less-378.tar.gz ~/rpmbuild/SOURCES/
             – Criar os patches necessários
                • tar xzvf less-378.tar.gz ; cd less-378
                • cp edit.c edit.c.ori
                • Alterar o ficheiro edit.c
                • diff -Naur edit.c.ori edit.c > ~/rpmbuild/SOURCES/edit.patch




15.03.2010                       Construir Pacotes RPM: arte e engenho           9
Energia Open Source




      Criar um src.rpm de raíz
        Preparar o código fonte (continuação)
             – Colocar outros ficheiros necessários
                • cp less.desktop less.png ~/rpmbuild/SOURCES/




15.03.2010                      Construir Pacotes RPM: arte e engenho   10
Energia Open Source




      Criar um src.rpm de raíz
        Criar o ficheiro SPEC em ~/rpmbuild/SPECS/ – O cabeçalho
               Summary: Descrição numa linha do software
               Name: less
               Version: 378
               Release: 1.2
               License: GPL
               Group: System/Utilities
               Source0: %{name}-%{version}.tar.gz
               Source1: less.desktop
               Source2: less.png
               Patch0: edit.patch
               BuildRoot: %{_tmppath}/%{name}-build




15.03.2010                     Construir Pacotes RPM: arte e engenho   11
Energia Open Source




      Criar um src.rpm de raíz
        Criar o ficheiro SPEC – O corpo
               %description
               Este comando permite ver o conteúdo de um ficheiro e
               navegar ao contrário dentro dele (o contrário do comando
               more)

               %prep
               %setup -q
               %patch0

               %build
               %configure
               make



15.03.2010                      Construir Pacotes RPM: arte e engenho     12
Energia Open Source




      Criar um src.rpm de raíz
        Criar o ficheiro SPEC – O corpo (continuação)
               %install
               rm -rf %{buildroot}
               make install

               %clean
               rm -rf %{buildroot}

               %files
               %defattr(-,root,root)
               %{_bindir}/less
               /usr/share/man/man3/less.3pm.gz




15.03.2010                      Construir Pacotes RPM: arte e engenho   13
Energia Open Source




      Criar um src.rpm de raíz
        Criar o ficheiro SPEC – O corpo (continuação)
               %files devel
               %defattr(-,root,root)
               /usr/include/less.h
               /usr/lib/less.a

               %changelog
               * Tue Nov 13 2007 Flavio Moringa
               <flavio.moringa@caixamagica.pt> 378-1.0
               - Primeira versão do pacote para Caixa Mágica

        Fazer o pacote
          – rpmbuild -ba ~/rpmbuild/SPECS/less.spec


15.03.2010                        Construir Pacotes RPM: arte e engenho   14
Energia Open Source




      Criar um src.rpm de raíz
        O ficheiro .spec em detalhe
             – Campos mais comuns do cabeçalho:
                • Summary: Descrição curta da aplicação numa linha;
                • Name: Nome da aplicação;
                • Version: Versão da aplicação;
                • Release: Revisão do pacote RPM;
                • License: Licença da aplicação (licenças válidas disponíveis
                  em
                  http://wiki.mandriva.com/en/Development/Packaging/Licens
                  es);
                • Group: Grupo a que pertence a aplicação grupos válidos em
                  /usr/share/doc/rpm/GROUPS);
                • URL: Homepage da aplicação ou localização original dos
                  ficheiros fonte da aplicação;



15.03.2010                       Construir Pacotes RPM: arte e engenho          15
Energia Open Source




      Criar um src.rpm de raíz
             – Campos mais comuns do cabeçalho (Continuação):
                • Source : Nome do ficheiro com o código fonte da aplicação;
                • Patch: Nome do ficheiro com o patch para o código fonte;
                • Requires: Pacotes/bibliotecas que são necessárias estarem
                  instaladas previamente para a aplicação funcionar
                  (opcional porque o pacote ao ser criado adiciona em build
                  time os requisitos ao pacote automaticamente);
                • Provides: O que o pacote dá (nome e nome = versão por
                  omissão, mas podemos pôr outros);
                • BuildRequires: Pacotes que são necessários estar
                  instalados previamente para que seja possível
                  criar/compilar o pacote RPM binário a partir do pacote
                  source rpm (opcional mas facilita ao indicar algum requisito
                  para a compilação que pode não ser perceptível
                  facilmente);


15.03.2010                       Construir Pacotes RPM: arte e engenho           16
Energia Open Source




      Criar um src.rpm de raíz
             – Campos mais comuns do cabeçalho (Continuação):
                • BuildRoot: Directoria temporária onde a aplicação será
                  colocada após ser compilada e a partir da qual será
                  empacotada no RPM;
                • BuildArch: Arquitectura a construir (Se não indicado é
                  usada a arquitectura do sistema, é obrigatório definir se
                  quiseremos fazer um pacote com arquitectura “noarch”)
                • %description : Descrição pormenorizada da aplicação. Esta
                  descrição pode ter vários parágrafos;

             – E se tivermos mais do que ficheiro Source e mais do que
               um ficheiro Patch?
                 • Usa-se “Source:”, “Source1:”, “Source2:”,... “Patch:”,
                   “Patch1:”, “Patch2:”, ...);



15.03.2010                        Construir Pacotes RPM: arte e engenho       17
Energia Open Source




      Criar um src.rpm de raíz
             – Opções comuns da secção %prep:
                 • %setup -q -n nome_directoria_codigo_fonte
                   Descompacta o código fonte e entra na directoria indicada
                   (se não colocarmos o -n tenta entrar numa directoria com o
                   nome-versão do pacote). A opção -q é para ser silencioso e
                   não mostrar output;
                 • %patch
                   Aplica o patch ao código fonte (se quisermos aplicar o
                   ficheiro associado ao Patch3 fazemos: “%patch3”, pode
                   receber argumentos do nível de directorias,
                      ex: “%patch3 -p1”);
                 • Podemos acrescentar outros comando necessários à
                   preparação da compilação. Por exemplo:
                   chmod -R a+w *
                   tar xzvf %{SOURCE2}
                   etc...
15.03.2010                       Construir Pacotes RPM: arte e engenho          18
Energia Open Source




      Criar um src.rpm de raíz
             – Opções comuns da secção %build:
                 • %configure
                   Faz o comando “configure” já com as opções do autoconf
                   do nosso sistema (ex: prefixo padrão onde colocar os
                   binários)
                 • make
                   executa o comando make para compilar o código fonte.
                   Pode adicionar-se as opções de compilação que se
                   queiram.




15.03.2010                      Construir Pacotes RPM: arte e engenho       19
Energia Open Source




      Criar um src.rpm de raíz
             – Opções comuns da secção %install:
                 • make DESTDIR=$RPM_BUILD_ROOT install
                   Instala os binários gerados pela compilação na directoria
                   definida pela variável BuildRoot;
                 • Para instalar ficheiros extra, não criados a partir da
                   compilação podemos fazer algo como:
                      mkdir -p $RPM_BUILD_ROOT/usr/share/applications
                      cp %{SOURCE1} $RPM_BUILD_ROOT/usr/share/applications


             – Secção %clean:
                 • Normalmente só contém o comando:
                   rm -rf $RPM_BUILD_ROOT
                   para que da próxima vez que refizermos o build do RPM a
                   directoria associada a $RPM_BUILD_ROOT esteja vazia;


15.03.2010                       Construir Pacotes RPM: arte e engenho         20
Energia Open Source




      Criar um src.rpm de raíz
             – A secção %files (continuação):
                 • %config(noreplace) caminho/para/o/ficheiro
                      – Indica um ficheiro de configuração que não deve ser
                        substituído no caso de uma futura actualização deste pacote;
                 • %attr(660,utilizador,dono) /usr/share/less.tgz
                      – Indica umas permissões especificas só para este ficheiro sem
                        alterar o %defattr actual para os outros ficheiros seguintes.

                 • Se a secção %files tiver um argumento (ex: %files devel),
                   isso indica que deve ser criado um outro pacote cujo nome
                   será o nome actual seguido de “-devel” com os ficheiros
                   indicados;




15.03.2010                          Construir Pacotes RPM: arte e engenho               21
Energia Open Source




      Criar um src.rpm de raíz
             – Correr comandos na instalação ou remoção do próprio
               pacote:
                 • %pre
                      Os comandos colocados nesta secção serão executados antes
                      de instalar o pacote;
                 • %post
                      Os comandos colocados nesta secção serão executados depois
                      de instalar o pacote;
                 • %preun
                      Os comandos colocados nesta secção serão executados antes
                      de remover o pacote;
                 • %postun
                      Os comandos colocados nesta secção serão executados depois
                      de remover o pacote;




15.03.2010                       Construir Pacotes RPM: arte e engenho             22
Energia Open Source




      Criar um src.rpm de raíz
             – Correr comandos na instalação ou remoção de outros
               pacotes que possam afectar este pacote:
                 • %triggerin -- nome_do_pacote
                         Os comandos colocados nesta secção serão executados
                         quando o pacote “nome_do_pacote” for instalado ou
                         actualizado;
                 • %triggerun -- nome_do_pacote
                         Os comandos colocados nesta secção serão executados
                         quando o pacote “nome_do_pacote” for removido;

                      http://www.rpm.org/api/4.4.2.2/triggers.html




15.03.2010                          Construir Pacotes RPM: arte e engenho      23
Energia Open Source




      Criar um src.rpm de raíz
             – Histórico das alterações aos pacotes:
                 • %changelog
                      Última secção de um ficheiro .spec, permite indicar as
                      alterações feitas ao pacote e o que foi feito. Abaixo esta
                      secção deve ser colocada a informação da seguinte forma:

                      * Data empacotador <email do empacotador> versão-revisão
                      - Alteração efectuada
                      - Outra alteração efectuada

                      *Data_anterior empacotador <email do empacotador>
                      versãorevisão
                      - Alteração efectuada
                      …

                 • A data deve ter o formato “Tue Nov 13 2007”

15.03.2010                        Construir Pacotes RPM: arte e engenho            24
Energia Open Source




      Exemplo “Hands on”
             – KeepassX – Gestor de senhas
                 • Já existe um src.rpm em:
                   ftp://ftp.caixamagica.pt/14/contribuicoes/SRPMS/contrib/kee
                   passx-0.4.1-4xcm14.src.rpm

                 • Vamos instalá-lo:
                   rpm -ivh
                   ftp://ftp.caixamagica.pt/14/contribuicoes/SRPMS/contrib/kee
                   passx-0.4.1-4xcm14.src.rpm

                 • Que ficheiro temos em ~/rpmbuild/SOURCES:
                        keepassx-0.4.1.tar.gz keepassx.desktop translation-cxm-
                        pt_PT.patch
                 • Vamos analisar o SPEC file que está em:
                      – ~/rpmbuild/SPECS/keepassx.spec


15.03.2010                         Construir Pacotes RPM: arte e engenho          25
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               Name:        keepassx
               Version:     0.4.1
               Release:      %mkrel 4
               Epoch:       0
               Summary:        Cross Platform Password Manager
               License:     GPLv2+
               Group:       File tools
               URL:        http://www.keepassx.org/
               Source0:      http://downloads.sourceforge.net/keepassx/keepassx-%
               {version}.tar.gz
               Source1:      %{name}.desktop
               Patch0:      translation-cxm-pt_PT.patch
               Provides:     keepass = %{epoch}%{version}-%{release}
               Provides:     KeePassX = %{epoch}%{version}-%{release}
               Requires(post): desktop-file-utils
15.03.2010                        Construir Pacotes RPM: arte e engenho             26
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               Requires(postun): desktop-file-utils
               BuildRequires: desktop-file-utils
               BuildRequires: imagemagick
               BuildRequires: libxtst-devel
               BuildRequires: qt4-devel
               BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}-root

               %description
               KeePassX is a free/open-source password manager or safe which helps
               you to manage your passwords in a secure way. You can put all your
               passwords in one database, which is locked with one master key or a
               key-disk. So you only have to remember one single master password or
               insert the key-disk to unlock the whole database. The databases are
               encrypted using the best and most secure encryption algorithms
               currently known (AES and Twofish).


15.03.2010                        Construir Pacotes RPM: arte e engenho               27
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %prep
               %setup -q

               %patch0 -p1

               %build
               PATH=$PATH:/usr/lib/qt4/bin/ ./translations_update.sh
               PATH=$PATH:/usr/lib/qt4/bin/ ./translations_release.sh
               %{qt4dir}/bin/qmake
               %{make}




15.03.2010                         Construir Pacotes RPM: arte e engenho   28
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %install
               %{__rm} -rf %{buildroot}
               %{makeinstall_std} INSTALL_ROOT=%{buildroot}

               %{__mkdir_p}   %{buildroot}%{_datadir}/pixmaps
               %{__mkdir_p}   %{buildroot}%{_datadir}/icons/hicolor/16x16/apps
               %{__mkdir_p}   %{buildroot}%{_datadir}/icons/hicolor/32x32/apps
               %{__mkdir_p}   %{buildroot}%{_datadir}/icons/hicolor/64x64/apps

               %{_bindir}/convert -scale 32 share/keepassx/icons/keepassx.png %
               {buildroot}%{_datadir}/pixmaps/%{name}.png
               %{_bindir}/convert -scale 16 share/keepassx/icons/keepassx.png %
               {buildroot}%{_datadir}/icons/hicolor/16x16/apps/%{name}.png
               %{_bindir}/convert -scale 32 share/keepassx/icons/keepassx.png %
               {buildroot}%{_datadir}/icons/hicolor/32x32/apps/%{name}.png

15.03.2010                         Construir Pacotes RPM: arte e engenho          29
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %{_bindir}/convert -scale 64 share/keepassx/icons/keepassx.png %
               {buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.png

               %{__mkdir_p} %{buildroot}%{_datadir}/applications
               %{_bindir}/desktop-file-install --vendor "" 
                   --dir %{buildroot}%{_datadir}/applications 
                   %{SOURCE1}

               %clean
               %{__rm} -rf %{buildroot}




15.03.2010                        Construir Pacotes RPM: arte e engenho           30
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %post
               %{update_desktop_database}
               %update_icon_cache hicolor
               %{update_mime_database}

               %postun
               %{clean_desktop_database}
               %clean_icon_cache hicolor
               %{clean_mime_database}




15.03.2010                       Construir Pacotes RPM: arte e engenho   31
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %files
               %defattr(0644,root,root,0755)
               %doc changelog
               %attr(0755,root,root) %{_bindir}/keepassx
               %{_datadir}/keepassx
               %{_datadir}/applications/%{name}.desktop
               %{_datadir}/pixmaps/%{name}.png
               %{_datadir}/pixmaps/keepassx.xpm
               %{_datadir}/icons/hicolor/16x16/apps/%{name}.png
               %{_datadir}/icons/hicolor/32x32/apps/%{name}.png
               %{_datadir}/icons/hicolor/64x64/apps/%{name}.png
               %{_datadir}/mime/packages/keepassx.xml
               %{_datadir}/mimelnk/application/x-keepass.desktop



15.03.2010                        Construir Pacotes RPM: arte e engenho   32
Energia Open Source




      Exemplo “Hands on”
             – ~/rpmbuild/SPECS/keepassx.spec:
               %changelog
               * Mon Mar 15 2010 Flávio Moringa <flavio.moringa@caixamagica.pt>
               0.4.1-4xcm14
               - First Caixa Mágica build




15.03.2010                        Construir Pacotes RPM: arte e engenho           33
Energia Open Source




      Exemplo “Hands on”
             – E agora, vamos criar o pacote :
                      cd ~/rpmbuild/SPECS
                      rpmbuild -ba keepassx.spec

               esperar....

                 • Os pacotes RPM devem ficar em ~/rpmbuild/RPMS/i586/
                 • O pacote SRPM deve ficar em ~/rpmbuild/SRPMS/
                 • E está feito...




15.03.2010                         Construir Pacotes RPM: arte e engenho   34
Energia Open Source




      Documentação na Rede
             –   http://www.gurulabs.com/GURULABS-RPMLAB/
             –   GURULABS-RPM-GUIDE-v1.0.PDF
             –   http://wiki.mandriva.com/en/Development/Howto/RPM
             –   http://developer.novell.com/wiki/index.php/SUSE_Packag
                 e_Conventions
             –   http://docs.fedoraproject.org/drafts/rpm-guide-en/
             –   http://www.novell.com/coolsolutions/feature/11793.html
             –   http://www.rpm.org/max-rpm/
             –   http://www.ibm.com/developerworks/library/l-rpm1/




15.03.2010                      Construir Pacotes RPM: arte e engenho     35
Energia Open Source




      Notas Finais




             Obrigado



               Flavio.Moringa@caixamagica.pt




15.03.2010                      Construir Pacotes RPM: arte e engenho   36

Weitere ähnliche Inhalte

Was ist angesagt?

FLISOL 2014 - Banco de dados Firebird rodando em CentOS - Faceca
FLISOL 2014 - Banco de dados Firebird rodando em CentOS - FacecaFLISOL 2014 - Banco de dados Firebird rodando em CentOS - Faceca
FLISOL 2014 - Banco de dados Firebird rodando em CentOS - FacecaMárcio Henrique da Silva
 
Trabalho Configuração de Servidores Unix
Trabalho Configuração de Servidores UnixTrabalho Configuração de Servidores Unix
Trabalho Configuração de Servidores UnixVitor Savicki
 
Ligacao Em Rede A Outros Sistemas Operativos
Ligacao Em Rede A Outros Sistemas OperativosLigacao Em Rede A Outros Sistemas Operativos
Ligacao Em Rede A Outros Sistemas Operativosarturramisio
 
Apresentação fedora linux
Apresentação fedora linux Apresentação fedora linux
Apresentação fedora linux José Nascimento
 
Desenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto FedoraDesenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto FedoraAllisson Azevedo
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de ProgramasFrederico Madeira
 
Tópicos - Computacao Paralela Intalação Cluster Beowulf
Tópicos - Computacao Paralela Intalação Cluster BeowulfTópicos - Computacao Paralela Intalação Cluster Beowulf
Tópicos - Computacao Paralela Intalação Cluster BeowulfLuiz Arthur
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamentoCarlos Melo
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks3Way Networks
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks3Way Networks
 
Minicurso Slackware - Alexsandro Henrique
Minicurso Slackware - Alexsandro HenriqueMinicurso Slackware - Alexsandro Henrique
Minicurso Slackware - Alexsandro HenriquePotiLivre Sobrenome
 

Was ist angesagt? (19)

FLISOL 2014 - Banco de dados Firebird rodando em CentOS - Faceca
FLISOL 2014 - Banco de dados Firebird rodando em CentOS - FacecaFLISOL 2014 - Banco de dados Firebird rodando em CentOS - Faceca
FLISOL 2014 - Banco de dados Firebird rodando em CentOS - Faceca
 
Trabalho Configuração de Servidores Unix
Trabalho Configuração de Servidores UnixTrabalho Configuração de Servidores Unix
Trabalho Configuração de Servidores Unix
 
Ligacao Em Rede A Outros Sistemas Operativos
Ligacao Em Rede A Outros Sistemas OperativosLigacao Em Rede A Outros Sistemas Operativos
Ligacao Em Rede A Outros Sistemas Operativos
 
Proftpd
ProftpdProftpd
Proftpd
 
Apresentação fedora linux
Apresentação fedora linux Apresentação fedora linux
Apresentação fedora linux
 
Desenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto FedoraDesenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto Fedora
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Distribuição Linux fedora
Distribuição Linux fedoraDistribuição Linux fedora
Distribuição Linux fedora
 
Tópicos - Computacao Paralela Intalação Cluster Beowulf
Tópicos - Computacao Paralela Intalação Cluster BeowulfTópicos - Computacao Paralela Intalação Cluster Beowulf
Tópicos - Computacao Paralela Intalação Cluster Beowulf
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamento
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks
 
Samba4+freebsd
Samba4+freebsdSamba4+freebsd
Samba4+freebsd
 
Aula 10 semana
Aula 10 semanaAula 10 semana
Aula 10 semana
 
Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Linux - Servidor Web Apache
Linux - Servidor Web ApacheLinux - Servidor Web Apache
Linux - Servidor Web Apache
 
Minicurso Slackware - Alexsandro Henrique
Minicurso Slackware - Alexsandro HenriqueMinicurso Slackware - Alexsandro Henrique
Minicurso Slackware - Alexsandro Henrique
 

Ähnlich wie RPM Creation

(07) instalaã§ã£o de programas
(07) instalaã§ã£o de programas(07) instalaã§ã£o de programas
(07) instalaã§ã£o de programasAnderson Lago
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Gentoo - Sistema Operacional
Gentoo - Sistema OperacionalGentoo - Sistema Operacional
Gentoo - Sistema OperacionalAnderson Favaro
 
Project HA
Project HAProject HA
Project HAKarpv
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulosAnderson Lago
 
Segurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFSegurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFLuiz Arthur
 
Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos LinuxWellington Oliveira
 
Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxElexsandro Rangel
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory gigadrop
 
Yocto: Treinamento em Português
Yocto: Treinamento em PortuguêsYocto: Treinamento em Português
Yocto: Treinamento em PortuguêsOtavio Salvador
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasLuiz Arthur
 

Ähnlich wie RPM Creation (20)

(07) instalaã§ã£o de programas
(07) instalaã§ã£o de programas(07) instalaã§ã£o de programas
(07) instalaã§ã£o de programas
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Slackware Linux
Slackware LinuxSlackware Linux
Slackware Linux
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Gentoo - Sistema Operacional
Gentoo - Sistema OperacionalGentoo - Sistema Operacional
Gentoo - Sistema Operacional
 
4 instalação no Ubuntu
4 instalação no Ubuntu4 instalação no Ubuntu
4 instalação no Ubuntu
 
Pacotes
PacotesPacotes
Pacotes
 
Project HA
Project HAProject HA
Project HA
 
Linux Ubuntu
Linux   UbuntuLinux   Ubuntu
Linux Ubuntu
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulos
 
Arch Linux FGSL 2011
Arch Linux FGSL 2011Arch Linux FGSL 2011
Arch Linux FGSL 2011
 
Segurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PFSegurança da Informação - Firewall OpenBSD PF
Segurança da Informação - Firewall OpenBSD PF
 
Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos Linux
 
Gentoo
GentooGentoo
Gentoo
 
Gerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no LinuxGerenciamento de Pacotes no Linux
Gerenciamento de Pacotes no Linux
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
Yocto: Treinamento em Português
Yocto: Treinamento em PortuguêsYocto: Treinamento em Português
Yocto: Treinamento em Português
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 

RPM Creation

  • 1. Energia Open Source Construir pacotes RPM: arte e engenho Flávio Moringa flavio.moringa@caixamagica.pt
  • 2. Energia Open Source Pacotes RPM  Tópicos a abordar – Vantagens – Arquitectura – O RPM fonte – Criar um src.rpm – O ficheiro .spec em detalhe – Exemplo “Hands-On” – Documentação na rede 15.03.2010 Construir Pacotes RPM: arte e engenho 2
  • 3. Energia Open Source Vantagens  Instalação automática e “scriptable” de software;  Fácil de actualizar e remover software;  Fácil de descobrir onde estão os ficheiros de um determinado software;  Garante que as dependências de outro software necessárias à execução do actual estão instaladas;  Garante a autenticidade do software se assinado digitalmente;  Fácil de instalar software (se necessário recorrendo a meta-instaladores como o apt-rpm, yum, smart, urpmi, zypper, etc.);  Usado por algumas das principais distribuições mundiais (Red Hat/Fedora, openSUSE, Mandriva, etc.). 15.03.2010 Construir Pacotes RPM: arte e engenho 3
  • 4. Energia Open Source Arquitectura  O pacote RPM  O pacote Source RPM  Base de dados de RPM's – /var/lib/rpm/  Utilitários RPM – rpm – rpmbuild • essencial para construir pacotes, vem do pacote “rpm- build” – rpmsign – rpm2cpio  Ficheiros de configuração – /usr/lib/rpm/ – /etc/rpm/ 15.03.2010 Construir Pacotes RPM: arte e engenho 4
  • 5. Energia Open Source Arquitectura  Nomes Convencionados – nome-versão-revisão.arquitectura.rpm  Arquitecturas – source (src.rpm) – noarch (noarch.rpm) – binário • i386, i486, i586, i686 (compatíveis com intel/amd), x86_64, ia64 (compatíveis com intel e/ou amd de 64bits), ppc, ppc64 (powerpc), sparc64, etc...  Formato – Ficheiro cpio + Cabeçalho binário 15.03.2010 Construir Pacotes RPM: arte e engenho 5
  • 6. Energia Open Source O RPM fonte  Source RPM (src.rpm) – Permite gerar um ou mais pacotes binários (excepto se a arquitectura for noarch) a partir do código fonte de um determinado software.  Conteúdo – Código fonte original (normalmente do repositório oficial do software em formato tarball); – Patches que sejam necessários para alterar o código fonte original; – Ficheiros adicionais (scripts de inicialização, entradas de desktop, etc...); – Um ficheiro que indique como deve ser compilado o software, e como deve ser colocado no sistema – O ficheiro .spec. 15.03.2010 Construir Pacotes RPM: arte e engenho 6
  • 7. Energia Open Source Criar um src.rpm de raíz ou usar um existente  Criar de raíz – Se não existe ainda nenhum src.rpm do software; – Permite um maior controlo sobre todos os aspectos da compilação e da instalação; – Pode ser complicado, mas basta fazer uma vez.  Usar um já existente – Usar uma versão antiga de um src.rpm para criar uma versão mais nova; – A maioria das distribuições disponibilizam os src.rpm de todo o seu software; – Pode ser complicado se temos de adaptar o src.rpm de outra distribuição; – Basta alterar o necessário e está feito. 15.03.2010 Construir Pacotes RPM: arte e engenho 7
  • 8. Energia Open Source Usar um src.rpm já existente  Instalar o src.rpm – Como utilizador normal fazer: rpm -ivh xxx.src.rpm  Alterar os ficheiros fonte, patch's e ficheiros extra – ~/rpmbuild/SOURCES/  Alterar o ficheiro .spec – ~/rpmbuild/SPECS/  Criar o pacote – rpmbuild -ba ~/rpmbuild/SPECS/xxx.spec  Ficheiros disponíveis – ~/rpmbuild/RPMS/arquitectura/ – ~/rpmbuild/SRPMS/ 15.03.2010 Construir Pacotes RPM: arte e engenho 8
  • 9. Energia Open Source Criar um src.rpm de raíz  Criar o ambiente – mkdir -p ~/rpmbuild/{SPECS,SOURCES,SRPMS,BUILD,RPMS} – mkdir -p ~/rpmbuild/RPMS/{athlon,i386,i486,i586,i686,noarch}  Preparar o código fonte – Colocar o tarball oficial na directoria SOURCES • cp less-378.tar.gz ~/rpmbuild/SOURCES/ – Criar os patches necessários • tar xzvf less-378.tar.gz ; cd less-378 • cp edit.c edit.c.ori • Alterar o ficheiro edit.c • diff -Naur edit.c.ori edit.c > ~/rpmbuild/SOURCES/edit.patch 15.03.2010 Construir Pacotes RPM: arte e engenho 9
  • 10. Energia Open Source Criar um src.rpm de raíz  Preparar o código fonte (continuação) – Colocar outros ficheiros necessários • cp less.desktop less.png ~/rpmbuild/SOURCES/ 15.03.2010 Construir Pacotes RPM: arte e engenho 10
  • 11. Energia Open Source Criar um src.rpm de raíz  Criar o ficheiro SPEC em ~/rpmbuild/SPECS/ – O cabeçalho Summary: Descrição numa linha do software Name: less Version: 378 Release: 1.2 License: GPL Group: System/Utilities Source0: %{name}-%{version}.tar.gz Source1: less.desktop Source2: less.png Patch0: edit.patch BuildRoot: %{_tmppath}/%{name}-build 15.03.2010 Construir Pacotes RPM: arte e engenho 11
  • 12. Energia Open Source Criar um src.rpm de raíz  Criar o ficheiro SPEC – O corpo %description Este comando permite ver o conteúdo de um ficheiro e navegar ao contrário dentro dele (o contrário do comando more) %prep %setup -q %patch0 %build %configure make 15.03.2010 Construir Pacotes RPM: arte e engenho 12
  • 13. Energia Open Source Criar um src.rpm de raíz  Criar o ficheiro SPEC – O corpo (continuação) %install rm -rf %{buildroot} make install %clean rm -rf %{buildroot} %files %defattr(-,root,root) %{_bindir}/less /usr/share/man/man3/less.3pm.gz 15.03.2010 Construir Pacotes RPM: arte e engenho 13
  • 14. Energia Open Source Criar um src.rpm de raíz  Criar o ficheiro SPEC – O corpo (continuação) %files devel %defattr(-,root,root) /usr/include/less.h /usr/lib/less.a %changelog * Tue Nov 13 2007 Flavio Moringa <flavio.moringa@caixamagica.pt> 378-1.0 - Primeira versão do pacote para Caixa Mágica  Fazer o pacote – rpmbuild -ba ~/rpmbuild/SPECS/less.spec 15.03.2010 Construir Pacotes RPM: arte e engenho 14
  • 15. Energia Open Source Criar um src.rpm de raíz  O ficheiro .spec em detalhe – Campos mais comuns do cabeçalho: • Summary: Descrição curta da aplicação numa linha; • Name: Nome da aplicação; • Version: Versão da aplicação; • Release: Revisão do pacote RPM; • License: Licença da aplicação (licenças válidas disponíveis em http://wiki.mandriva.com/en/Development/Packaging/Licens es); • Group: Grupo a que pertence a aplicação grupos válidos em /usr/share/doc/rpm/GROUPS); • URL: Homepage da aplicação ou localização original dos ficheiros fonte da aplicação; 15.03.2010 Construir Pacotes RPM: arte e engenho 15
  • 16. Energia Open Source Criar um src.rpm de raíz – Campos mais comuns do cabeçalho (Continuação): • Source : Nome do ficheiro com o código fonte da aplicação; • Patch: Nome do ficheiro com o patch para o código fonte; • Requires: Pacotes/bibliotecas que são necessárias estarem instaladas previamente para a aplicação funcionar (opcional porque o pacote ao ser criado adiciona em build time os requisitos ao pacote automaticamente); • Provides: O que o pacote dá (nome e nome = versão por omissão, mas podemos pôr outros); • BuildRequires: Pacotes que são necessários estar instalados previamente para que seja possível criar/compilar o pacote RPM binário a partir do pacote source rpm (opcional mas facilita ao indicar algum requisito para a compilação que pode não ser perceptível facilmente); 15.03.2010 Construir Pacotes RPM: arte e engenho 16
  • 17. Energia Open Source Criar um src.rpm de raíz – Campos mais comuns do cabeçalho (Continuação): • BuildRoot: Directoria temporária onde a aplicação será colocada após ser compilada e a partir da qual será empacotada no RPM; • BuildArch: Arquitectura a construir (Se não indicado é usada a arquitectura do sistema, é obrigatório definir se quiseremos fazer um pacote com arquitectura “noarch”) • %description : Descrição pormenorizada da aplicação. Esta descrição pode ter vários parágrafos; – E se tivermos mais do que ficheiro Source e mais do que um ficheiro Patch? • Usa-se “Source:”, “Source1:”, “Source2:”,... “Patch:”, “Patch1:”, “Patch2:”, ...); 15.03.2010 Construir Pacotes RPM: arte e engenho 17
  • 18. Energia Open Source Criar um src.rpm de raíz – Opções comuns da secção %prep: • %setup -q -n nome_directoria_codigo_fonte Descompacta o código fonte e entra na directoria indicada (se não colocarmos o -n tenta entrar numa directoria com o nome-versão do pacote). A opção -q é para ser silencioso e não mostrar output; • %patch Aplica o patch ao código fonte (se quisermos aplicar o ficheiro associado ao Patch3 fazemos: “%patch3”, pode receber argumentos do nível de directorias, ex: “%patch3 -p1”); • Podemos acrescentar outros comando necessários à preparação da compilação. Por exemplo: chmod -R a+w * tar xzvf %{SOURCE2} etc... 15.03.2010 Construir Pacotes RPM: arte e engenho 18
  • 19. Energia Open Source Criar um src.rpm de raíz – Opções comuns da secção %build: • %configure Faz o comando “configure” já com as opções do autoconf do nosso sistema (ex: prefixo padrão onde colocar os binários) • make executa o comando make para compilar o código fonte. Pode adicionar-se as opções de compilação que se queiram. 15.03.2010 Construir Pacotes RPM: arte e engenho 19
  • 20. Energia Open Source Criar um src.rpm de raíz – Opções comuns da secção %install: • make DESTDIR=$RPM_BUILD_ROOT install Instala os binários gerados pela compilação na directoria definida pela variável BuildRoot; • Para instalar ficheiros extra, não criados a partir da compilação podemos fazer algo como: mkdir -p $RPM_BUILD_ROOT/usr/share/applications cp %{SOURCE1} $RPM_BUILD_ROOT/usr/share/applications – Secção %clean: • Normalmente só contém o comando: rm -rf $RPM_BUILD_ROOT para que da próxima vez que refizermos o build do RPM a directoria associada a $RPM_BUILD_ROOT esteja vazia; 15.03.2010 Construir Pacotes RPM: arte e engenho 20
  • 21. Energia Open Source Criar um src.rpm de raíz – A secção %files (continuação): • %config(noreplace) caminho/para/o/ficheiro – Indica um ficheiro de configuração que não deve ser substituído no caso de uma futura actualização deste pacote; • %attr(660,utilizador,dono) /usr/share/less.tgz – Indica umas permissões especificas só para este ficheiro sem alterar o %defattr actual para os outros ficheiros seguintes. • Se a secção %files tiver um argumento (ex: %files devel), isso indica que deve ser criado um outro pacote cujo nome será o nome actual seguido de “-devel” com os ficheiros indicados; 15.03.2010 Construir Pacotes RPM: arte e engenho 21
  • 22. Energia Open Source Criar um src.rpm de raíz – Correr comandos na instalação ou remoção do próprio pacote: • %pre Os comandos colocados nesta secção serão executados antes de instalar o pacote; • %post Os comandos colocados nesta secção serão executados depois de instalar o pacote; • %preun Os comandos colocados nesta secção serão executados antes de remover o pacote; • %postun Os comandos colocados nesta secção serão executados depois de remover o pacote; 15.03.2010 Construir Pacotes RPM: arte e engenho 22
  • 23. Energia Open Source Criar um src.rpm de raíz – Correr comandos na instalação ou remoção de outros pacotes que possam afectar este pacote: • %triggerin -- nome_do_pacote Os comandos colocados nesta secção serão executados quando o pacote “nome_do_pacote” for instalado ou actualizado; • %triggerun -- nome_do_pacote Os comandos colocados nesta secção serão executados quando o pacote “nome_do_pacote” for removido; http://www.rpm.org/api/4.4.2.2/triggers.html 15.03.2010 Construir Pacotes RPM: arte e engenho 23
  • 24. Energia Open Source Criar um src.rpm de raíz – Histórico das alterações aos pacotes: • %changelog Última secção de um ficheiro .spec, permite indicar as alterações feitas ao pacote e o que foi feito. Abaixo esta secção deve ser colocada a informação da seguinte forma: * Data empacotador <email do empacotador> versão-revisão - Alteração efectuada - Outra alteração efectuada *Data_anterior empacotador <email do empacotador> versãorevisão - Alteração efectuada … • A data deve ter o formato “Tue Nov 13 2007” 15.03.2010 Construir Pacotes RPM: arte e engenho 24
  • 25. Energia Open Source Exemplo “Hands on” – KeepassX – Gestor de senhas • Já existe um src.rpm em: ftp://ftp.caixamagica.pt/14/contribuicoes/SRPMS/contrib/kee passx-0.4.1-4xcm14.src.rpm • Vamos instalá-lo: rpm -ivh ftp://ftp.caixamagica.pt/14/contribuicoes/SRPMS/contrib/kee passx-0.4.1-4xcm14.src.rpm • Que ficheiro temos em ~/rpmbuild/SOURCES: keepassx-0.4.1.tar.gz keepassx.desktop translation-cxm- pt_PT.patch • Vamos analisar o SPEC file que está em: – ~/rpmbuild/SPECS/keepassx.spec 15.03.2010 Construir Pacotes RPM: arte e engenho 25
  • 26. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: Name: keepassx Version: 0.4.1 Release: %mkrel 4 Epoch: 0 Summary: Cross Platform Password Manager License: GPLv2+ Group: File tools URL: http://www.keepassx.org/ Source0: http://downloads.sourceforge.net/keepassx/keepassx-% {version}.tar.gz Source1: %{name}.desktop Patch0: translation-cxm-pt_PT.patch Provides: keepass = %{epoch}%{version}-%{release} Provides: KeePassX = %{epoch}%{version}-%{release} Requires(post): desktop-file-utils 15.03.2010 Construir Pacotes RPM: arte e engenho 26
  • 27. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: Requires(postun): desktop-file-utils BuildRequires: desktop-file-utils BuildRequires: imagemagick BuildRequires: libxtst-devel BuildRequires: qt4-devel BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root %description KeePassX is a free/open-source password manager or safe which helps you to manage your passwords in a secure way. You can put all your passwords in one database, which is locked with one master key or a key-disk. So you only have to remember one single master password or insert the key-disk to unlock the whole database. The databases are encrypted using the best and most secure encryption algorithms currently known (AES and Twofish). 15.03.2010 Construir Pacotes RPM: arte e engenho 27
  • 28. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %prep %setup -q %patch0 -p1 %build PATH=$PATH:/usr/lib/qt4/bin/ ./translations_update.sh PATH=$PATH:/usr/lib/qt4/bin/ ./translations_release.sh %{qt4dir}/bin/qmake %{make} 15.03.2010 Construir Pacotes RPM: arte e engenho 28
  • 29. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %install %{__rm} -rf %{buildroot} %{makeinstall_std} INSTALL_ROOT=%{buildroot} %{__mkdir_p} %{buildroot}%{_datadir}/pixmaps %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/16x16/apps %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/32x32/apps %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/64x64/apps %{_bindir}/convert -scale 32 share/keepassx/icons/keepassx.png % {buildroot}%{_datadir}/pixmaps/%{name}.png %{_bindir}/convert -scale 16 share/keepassx/icons/keepassx.png % {buildroot}%{_datadir}/icons/hicolor/16x16/apps/%{name}.png %{_bindir}/convert -scale 32 share/keepassx/icons/keepassx.png % {buildroot}%{_datadir}/icons/hicolor/32x32/apps/%{name}.png 15.03.2010 Construir Pacotes RPM: arte e engenho 29
  • 30. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %{_bindir}/convert -scale 64 share/keepassx/icons/keepassx.png % {buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.png %{__mkdir_p} %{buildroot}%{_datadir}/applications %{_bindir}/desktop-file-install --vendor "" --dir %{buildroot}%{_datadir}/applications %{SOURCE1} %clean %{__rm} -rf %{buildroot} 15.03.2010 Construir Pacotes RPM: arte e engenho 30
  • 31. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %post %{update_desktop_database} %update_icon_cache hicolor %{update_mime_database} %postun %{clean_desktop_database} %clean_icon_cache hicolor %{clean_mime_database} 15.03.2010 Construir Pacotes RPM: arte e engenho 31
  • 32. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %files %defattr(0644,root,root,0755) %doc changelog %attr(0755,root,root) %{_bindir}/keepassx %{_datadir}/keepassx %{_datadir}/applications/%{name}.desktop %{_datadir}/pixmaps/%{name}.png %{_datadir}/pixmaps/keepassx.xpm %{_datadir}/icons/hicolor/16x16/apps/%{name}.png %{_datadir}/icons/hicolor/32x32/apps/%{name}.png %{_datadir}/icons/hicolor/64x64/apps/%{name}.png %{_datadir}/mime/packages/keepassx.xml %{_datadir}/mimelnk/application/x-keepass.desktop 15.03.2010 Construir Pacotes RPM: arte e engenho 32
  • 33. Energia Open Source Exemplo “Hands on” – ~/rpmbuild/SPECS/keepassx.spec: %changelog * Mon Mar 15 2010 Flávio Moringa <flavio.moringa@caixamagica.pt> 0.4.1-4xcm14 - First Caixa Mágica build 15.03.2010 Construir Pacotes RPM: arte e engenho 33
  • 34. Energia Open Source Exemplo “Hands on” – E agora, vamos criar o pacote : cd ~/rpmbuild/SPECS rpmbuild -ba keepassx.spec esperar.... • Os pacotes RPM devem ficar em ~/rpmbuild/RPMS/i586/ • O pacote SRPM deve ficar em ~/rpmbuild/SRPMS/ • E está feito... 15.03.2010 Construir Pacotes RPM: arte e engenho 34
  • 35. Energia Open Source Documentação na Rede – http://www.gurulabs.com/GURULABS-RPMLAB/ – GURULABS-RPM-GUIDE-v1.0.PDF – http://wiki.mandriva.com/en/Development/Howto/RPM – http://developer.novell.com/wiki/index.php/SUSE_Packag e_Conventions – http://docs.fedoraproject.org/drafts/rpm-guide-en/ – http://www.novell.com/coolsolutions/feature/11793.html – http://www.rpm.org/max-rpm/ – http://www.ibm.com/developerworks/library/l-rpm1/ 15.03.2010 Construir Pacotes RPM: arte e engenho 35
  • 36. Energia Open Source Notas Finais Obrigado Flavio.Moringa@caixamagica.pt 15.03.2010 Construir Pacotes RPM: arte e engenho 36