Criando pacotes para o Arch Linux

                    Hugo Doria

                 contato@hugodoria.org


     10o Fórum Internacional de Software Livre




1                Hugo Doria   Criando pacotes para o Arch Linux
Conteúdo

      1   Introdução
             Formato dos pacotes
             Porque (re)construir pacotes?

      2   Ferramentas utilizadas
            PKGBUILD
            makepkg
            namcap

      3   Publicando um pacote

      4   Perguntas

      5   Agradecimentos



2                             Hugo Doria   Criando pacotes para o Arch Linux
Formato dos pacotes




      Formato de um pacote
      nome-versão-release-arquitetura.pkg.tar.gz

      Exemplo
      firefox-3.0.10-4-i686.pkg.tar.gz




3                             Hugo Doria   Criando pacotes para o Arch Linux
Formato dos pacotes




      Conteúdo do .pkg.tar.gz
      usr/bin/foobar
      etc/foobar.conf
      .PKGINFO # Informações sobre o pacote (nome, versão etc)
      .INSTALL # Comandos a serem rodados na instalação




4                           Hugo Doria   Criando pacotes para o Arch Linux
Porque (re)construir pacotes?




         Facilitar a vida do usuário
         Otimizar o software para a máquina
         Adicionar recursos
         Manter alguma versão específica
         Realizar testes




5                             Hugo Doria   Criando pacotes para o Arch Linux
Ok! Mas como eu construo um pacote?




6             Hugo Doria   Criando pacotes para o Arch Linux
PKGBUILD


     Estrutura do PKGBUILD
     pkgname=nome-do-pacote
     pkgver=versão
     pkgrel=release
     pkgdesc=’descrição do software’
     arch=(’arquitetura’)
     depends=(’dependencias’)
     license=(’licensa’)
     source=(url do source)
     md5sum=(’md5sum dos sources’)
     build() {
     Instruções de compilação
     }



7                         Hugo Doria   Criando pacotes para o Arch Linux
PKGBUILD

     Exemplo de PKBUILD
     # Maintainer: Joe User <joe.user@example.com>

     pkgname=patch
     pkgver=2.5.4
     pkgrel=3
     pkgdesc="A utility to apply patch files to original sources"
     arch=(’i686’ ’x86_64’)
     url="http://www.gnu.org/software/patch/patch.html"
     license=(’GPL’)
     groups=(’base-devel’)
     depends=(’glibc’ ’ed’)
     source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-
     $pkgver.tar.gz)
     md5sums=(’ee5ae84d115f051d87fca1aef3b4ae782’)

8                            Hugo Doria   Criando pacotes para o Arch Linux
PKGBUILD




     Exemplo de PKBUILD
     build() {
     cd $srcdir/$pkgname-$pkgver
     ./configure –prefix=/usr
     make || return 1
     make prefix=$pkgdir/usr install
     }




9                           Hugo Doria   Criando pacotes para o Arch Linux
makepkg: construindo o pacote




      Ferramenta utilizada para gerar o pacote
      O makepkg já faz parte do pacman
      Deve ser rodado dentro do diretório onde está o
      PKGBUILD




10                      Hugo Doria   Criando pacotes para o Arch Linux
makepkg: construindo o pacote

     Exemplo de uso do makepkg
     [hugo@meryl patch]$ makepkg

     ==> Making package: patch 2.5.9-2 i686 (Thu Jun 11 23:33:01
     BRT 2009)
     == > Checking Runtime Dependencies...
     ==> Checking Buildtime Dependencies...
     ==> Retrieving Sources...
     -> Downloading patch-2.5.9.tar.gz...
     ==> Validating source files with md5sums...
     patch-2.5.9.tar.gz ... Passed
     ==> Extracting Sources...
     -> bsdtar -x -f patch-2.5.9.tar.gz
     ==> Entering fakeroot environment...
     ==> Starting build()...

11                         Hugo Doria   Criando pacotes para o Arch Linux
makepkg: construindo o pacote

     Exemplo de uso do makepkg
     [hugo@meryl patch]$ makepkg

     (...)

     ==> Tidying install...
     -> Compressing man pages...
     -> Stripping debugging symbols from binaries and libraries...
     ==> Creating package...
     -> Generating .PKGINFO file...
     -> Compressing package...
     ==> Leaving fakeroot environment.
     ==> Finished making: patch 2.5.9-2 i686 (Thu Jun 11 23:33:29
     BRT 2009)
     ==> patch-2.5.9-3-i686.pkg.tar.gz

12                          Hugo Doria   Criando pacotes para o Arch Linux
namcap: analisando o pacote



         Ferramenta para auxiliar a criação do pacote
         Analisa tanto pacotes, quanto PKGBUILDs
         Não corrige os problemas, apenas avisa

     Exemplo de uso do makepkg
     $ namcap pygtk-2.14.1-1-i686.pkg.tar.gz
     pygtk W: Dependency included and not needed (pycairo)
     pygtk W: Dependency included and not needed (pygobject)




13                         Hugo Doria   Criando pacotes para o Arch Linux
AUR - Arch Linux User Repository




      Repositório voltado para a comunidade
      Não contém binários
      Berço de boa parte dos pacotes do Arch


                     http://aur.archlinux.org




14                      Hugo Doria   Criando pacotes para o Arch Linux
Perguntas




15           Hugo Doria   Criando pacotes para o Arch Linux
Obrigado! :-)




                          Hugo Doria
                 < contato@hugodoria.org >
                     http://hugodoria.org




16                    Hugo Doria   Criando pacotes para o Arch Linux

Criando pacotes para o Arch Linux

  • 1.
    Criando pacotes parao Arch Linux Hugo Doria contato@hugodoria.org 10o Fórum Internacional de Software Livre 1 Hugo Doria Criando pacotes para o Arch Linux
  • 2.
    Conteúdo 1 Introdução Formato dos pacotes Porque (re)construir pacotes? 2 Ferramentas utilizadas PKGBUILD makepkg namcap 3 Publicando um pacote 4 Perguntas 5 Agradecimentos 2 Hugo Doria Criando pacotes para o Arch Linux
  • 3.
    Formato dos pacotes Formato de um pacote nome-versão-release-arquitetura.pkg.tar.gz Exemplo firefox-3.0.10-4-i686.pkg.tar.gz 3 Hugo Doria Criando pacotes para o Arch Linux
  • 4.
    Formato dos pacotes Conteúdo do .pkg.tar.gz usr/bin/foobar etc/foobar.conf .PKGINFO # Informações sobre o pacote (nome, versão etc) .INSTALL # Comandos a serem rodados na instalação 4 Hugo Doria Criando pacotes para o Arch Linux
  • 5.
    Porque (re)construir pacotes? Facilitar a vida do usuário Otimizar o software para a máquina Adicionar recursos Manter alguma versão específica Realizar testes 5 Hugo Doria Criando pacotes para o Arch Linux
  • 6.
    Ok! Mas comoeu construo um pacote? 6 Hugo Doria Criando pacotes para o Arch Linux
  • 7.
    PKGBUILD Estrutura do PKGBUILD pkgname=nome-do-pacote pkgver=versão pkgrel=release pkgdesc=’descrição do software’ arch=(’arquitetura’) depends=(’dependencias’) license=(’licensa’) source=(url do source) md5sum=(’md5sum dos sources’) build() { Instruções de compilação } 7 Hugo Doria Criando pacotes para o Arch Linux
  • 8.
    PKGBUILD Exemplo de PKBUILD # Maintainer: Joe User <joe.user@example.com> pkgname=patch pkgver=2.5.4 pkgrel=3 pkgdesc="A utility to apply patch files to original sources" arch=(’i686’ ’x86_64’) url="http://www.gnu.org/software/patch/patch.html" license=(’GPL’) groups=(’base-devel’) depends=(’glibc’ ’ed’) source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname- $pkgver.tar.gz) md5sums=(’ee5ae84d115f051d87fca1aef3b4ae782’) 8 Hugo Doria Criando pacotes para o Arch Linux
  • 9.
    PKGBUILD Exemplo de PKBUILD build() { cd $srcdir/$pkgname-$pkgver ./configure –prefix=/usr make || return 1 make prefix=$pkgdir/usr install } 9 Hugo Doria Criando pacotes para o Arch Linux
  • 10.
    makepkg: construindo opacote Ferramenta utilizada para gerar o pacote O makepkg já faz parte do pacman Deve ser rodado dentro do diretório onde está o PKGBUILD 10 Hugo Doria Criando pacotes para o Arch Linux
  • 11.
    makepkg: construindo opacote Exemplo de uso do makepkg [hugo@meryl patch]$ makepkg ==> Making package: patch 2.5.9-2 i686 (Thu Jun 11 23:33:01 BRT 2009) == > Checking Runtime Dependencies... ==> Checking Buildtime Dependencies... ==> Retrieving Sources... -> Downloading patch-2.5.9.tar.gz... ==> Validating source files with md5sums... patch-2.5.9.tar.gz ... Passed ==> Extracting Sources... -> bsdtar -x -f patch-2.5.9.tar.gz ==> Entering fakeroot environment... ==> Starting build()... 11 Hugo Doria Criando pacotes para o Arch Linux
  • 12.
    makepkg: construindo opacote Exemplo de uso do makepkg [hugo@meryl patch]$ makepkg (...) ==> Tidying install... -> Compressing man pages... -> Stripping debugging symbols from binaries and libraries... ==> Creating package... -> Generating .PKGINFO file... -> Compressing package... ==> Leaving fakeroot environment. ==> Finished making: patch 2.5.9-2 i686 (Thu Jun 11 23:33:29 BRT 2009) ==> patch-2.5.9-3-i686.pkg.tar.gz 12 Hugo Doria Criando pacotes para o Arch Linux
  • 13.
    namcap: analisando opacote Ferramenta para auxiliar a criação do pacote Analisa tanto pacotes, quanto PKGBUILDs Não corrige os problemas, apenas avisa Exemplo de uso do makepkg $ namcap pygtk-2.14.1-1-i686.pkg.tar.gz pygtk W: Dependency included and not needed (pycairo) pygtk W: Dependency included and not needed (pygobject) 13 Hugo Doria Criando pacotes para o Arch Linux
  • 14.
    AUR - ArchLinux User Repository Repositório voltado para a comunidade Não contém binários Berço de boa parte dos pacotes do Arch http://aur.archlinux.org 14 Hugo Doria Criando pacotes para o Arch Linux
  • 15.
    Perguntas 15 Hugo Doria Criando pacotes para o Arch Linux
  • 16.
    Obrigado! :-) Hugo Doria < contato@hugodoria.org > http://hugodoria.org 16 Hugo Doria Criando pacotes para o Arch Linux