Empacotamento Debian Básico
Upcoming SlideShare
Loading in...5
×
 

Empacotamento Debian Básico

on

  • 6,959 views

Empacotamento Debian Básico

Empacotamento Debian Básico

Statistics

Views

Total Views
6,959
Views on SlideShare
6,850
Embed Views
109

Actions

Likes
4
Downloads
173
Comments
0

6 Embeds 109

http://www.webly.com.br 70
http://www.slideshare.net 14
http://www.f2suporte.com 13
http://forum.ievolutionweb.com 6
http://centraldesuporte.com.br 4
http://forum.webly.com.br 2

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • # Parte 1: Motivação 1. Importância do Empacotamento (usar os slides da apresentacão do ciência livre) 2. Política de Empacotamento Debian - Alta qualidade dos pacotes # Parte 2: Informação de Background 1. FHS - Filesystem Hierarchy Standard 2. Anatomia de Um pacote Debian 1. Dissecando: dpkg-info, dpkg-deb 2. Pacotes Binários 3. Pacotes Source # Parte 3: Criando Um Pacote Manualmente 1. criar árvore de diretórios 2. "instalar" conteúdos na árvore 3. arquivo "copyright" 4. arquivo "changelog" 5. DEBIAN/control 6. DEBIAN/md5sums 7. Empacotar: control.tar.gz + data.tar.gz + debian-binary = pacote.deb 8. Instalar, Verificar, Remover # Parte 4: Debianizando pacotes 1. ... 2. dh_make 3. ...

Empacotamento Debian Básico Empacotamento Debian Básico Presentation Transcript

  • Empacotamento Básico
  •  
  • Importância do Empacotamento
  • Vivendo Com Um Sistema Operacional
    • Depois de instalado o sistema a tarefa de manutenção mais realizada pelo usuário é a instalação e remoção de softwares
    • Tomemos outro SO como exemplo:
      • HiperDownloads, BaixaAcolá
      • Next, Next, Next, Finish...
      • Duplicação de DLLs
      • Desinstaladores sebosos
      • As pessoas se acostumam com cada coisa...
  • Alguém Quer Instalar Um Software Linux...
    • Procura na internet e acha isso:
      • NumSeiQ.tar.gz
    (...) char *category = libhal_device_get_property_string (ctx, udi, "info.category" , NULL); if (category && (!strcmp (category, "net.80203" ) || !strcmp (category, "net.80211" ))) { char *temp = libhal_device_get_property_string (ctx, udi, "net.interface" , NULL); iface = g_strdup (temp); libhal_free_string (temp); } libhal_free_string (category); (...)
  • Aquele Amigo Esquisito Dá A Dica...
    • É “só” compilar... :P
    $ ./configure (texto rolando tela acima...) $ make (mais texto rolando tela acima...) $ make install (ainda mais texto rolando...)
  • O Inferno de Cabeça Para Baixo das 666 Dependências Programa Depende de A B C D E F J K G H I
  • Esforços Duplicados progama.tar.gz Programador Descompacta Compila Executável Executável Executável Executável
  • Surge o Empacotador! progama.tar.gz Programador Descompacta Empacotador Compila Executável Menos trabalho pra muita gente.
  • Empacotadores Orgulhosos, Repositórios Cheios e Usuários Felizes Repositório de Softwares Pré-compilados
  • Pacotes no Debian Repositório Debian Lista de pacotes disponíveis apt-get update apt-get install foo Packages.gz foo_0.2.3-1_i386.deb
  • O Paraíso das Dependências Satisfeitas Programa Depende de A B C D E F J K G H I
  • Informações Interessantes pra Quem Pretende Empacotar
  • FHS Filesystem Hierarchy Standard dev/ / usr/ etc/ tmp/ bin/ doc/ lib/ share/ home/ bin/
  • Anatomia de Um Pacote Binário
      • mednafen_0.6.5-1_i386.deb
    versão - revisão Debian nome arquitetura debian-control control.tar.gz data.tar.gz
  • Anatomia de Um Pacote Binário
    • Estruturalmente, arquivos .deb nada mais são que arquivos compactados com o utilitário ar , contendo:
      • debian-binary – contém apenas a string “2.0” (versão do formato do pacote Debian)
      • data.tar.gz – “imagem” do pacote instalado no sistema de arquivos
      • control.tar.gz – informações de controle para as ferramentas de manipulação de pacotes
  • data.tar.gz
    • Conteúdo de data.tar.gz para o pacote libmad0-dev
    • Extrair isso na raiz do sistema é quase o mesmo que instalar o pacote.
    • ./usr/
    • ./usr/lib/
    • ./usr/lib/libmad.a
    • ./usr/lib/libmad.la
    • ./usr/lib/pkgconfig/
    • ./usr/lib/pkgconfig/mad.pc
    • ./usr/include/
    • ./usr/include/mad.h
    • ./usr/share/
    • ./usr/share/doc/
    • ./usr/share/doc/libmad0-dev/
    • ./usr/share/doc/libmad0-dev/changelog.Debian.gz
    • ./usr/share/doc/libmad0-dev/TODO
    • ./usr/share/doc/libmad0-dev/copyright
    • ./usr/share/doc/libmad0-dev/examples/
    • ./usr/share/doc/libmad0-dev/examples/minimad.c.gz
    • ./usr/share/doc/libmad0-dev/changelog.gz
    • ./usr/share/doc/libmad0-dev/CREDITS.gz
    • ./usr/share/doc/libmad0-dev/README.gz
    • ./usr/lib/libmad.so
  • control.tar.gz
    • Conteúdo de control.tar.gz para o pacote libmad0-dev
      • control, md5sums
    • Pouca coisa. Vejamos outro: mozilla-thunderbird
      • conffiles, config, control, md5sums, postinst, postrm, preinst, prerm, templates
  • control.tar.gz
    • conffiles
    • config
    • control
    • md5sums
    • postinst
    • postrm
    • preinst
    • prerm
    • templates
    • shlibs
  • Dissecando Um Pacote Binário
    • Os pacotes baixados pelo apt-get são guardados em /var/cache/apt/archives
    • Vamos copiar algum .deb para uma mesa de cirurgia em /tmp/lab
  • Dissecando Um Pacote Binário
    • file pacote.deb
    • ar -t pacote.deb
    • dpkg-deb --info pacote.deb
    • dpkg-deb --contents pacote.deb
    • dpkg-deb --field pacote.deb depends
    • ar x pacote.deb
    • dpkg-deb --control pacote.deb
    • dpkg-deb --extract pacote.deb ./data
  • Criando Um Pacote Manualmente
  • Tema Para O Desktop
    • Vamos criar um pacote simples – um tema para o Desktop, contendo:
        • Papel de Parede: /usr/share/backgrounds/diad-background.png
        • Tema GDM: /usr/share/gdm/themes/diad/*
        • Splash Screen: /usr/share/pixmaps/splash/diad-splash.png
  • Criando Um Pacote Manualmente (1)
    • Crie a estrutura de diretórios
      • $ mkdir -p diad-artwork/usr/share/backgrounds $ mkdir -p diad-artwork/usr/share/pixmaps/splash $ mkdir -p diad-artwork/usr/share/gdm/themes/diad $ mkdir -p diad-artwork/usr/share/doc/diad-artwork $ mkdir diad-artwork/ DEBIAN
    • Copie conteúdo $ cp diad-splash.png diad-artwork/usr/share/pixmaps/splash $ cp diad-background.png diad-artwork/usr/share/backgrounds $ cp diad diad-artwork/usr/share/gdm/themes/diad-artwork -r $ chmod 644 diad-artwork/* -R
  • Criando Um Pacote Manualmente (2)
    • Estrutura de diretórios
    diad-artwork/ |-- DEBIAN `-- usr `-- share |-- backgrounds |-- doc | `-- diad-artwork |-- gdm | `-- themes | `-- diad `-- pixmaps `-- splash
  • Documentação (1)
    • diad-artwork/usr/share/doc/diad-artwork/copyright
        • This package was manually created by James Bond <007@england.go.uk> on Mon, 30 Jul 2007, 08:25:00 +0000 It was downloaded from ... Upstream Author: James Bond < [email_address] >
        • Copyright: [...]
  • Documentação (2)
    • diad-artwork/usr/share/doc/diad-artwork/changelog.Debian.gz
        • diad-artwork (1.0-1) unstable; urgency=low
        • * &quot;License to Kill&quot; release.
        • -- James Bond <007@england.go.uk> Mon, 30 Jul 2007 08:28:00 +0000
  • DEBIAN/control
        • Package: diad-artwork
        • Section: misc
        • Priority: extra
        • Maintainer: James Bond <007@england.co.uk>
        • Architecture: all
        • Version: 1.0-1
        • Description: theme artwork for the Debian D, 2007
        • Includes background and splash screen images, and GDM theme.
  • DEBIAN/md5sums
    • $ find usr -type f -exec md5sum {} ; > DEBIAN/md5sums
        • 3a3346e545ad9d1058fa5a48ceada9e5 usr/share/backgrounds/diad-background.png
        • 93171425730b46aa4debbaa58568402f usr/share/doc/diad-artwork/copyright
        • e1cce7981a1dfd51f518f1c15e7a87cc usr/share/doc/diad-artwork/changelog.Debian.gz
        • 8f45891b27c85f01fd40bac603883650 usr/share/pixmaps/splash/diad-splash.png
        • 7f2d2f712840525f75ab34ecf540cd9f usr/share/gdm/themes/diad/GdmGreeterTheme.desktop
        • eafe4de8c42ef34de37ec0b9a2f05d57 usr/share/gdm/themes/diad/background.svg
        • a826c77b077e0b782914f32ad5e5ddab usr/share/gdm/themes/diad/debsmith.png
        • 84513d7282b4cfc745c63d2b8ae971a7 usr/share/gdm/themes/diad/diad.xml
        • adcc7b98011b1ed7f00695fbdb2afa86 usr/share/gdm/themes/diad/help.png
        • dba080eb88405fdd911b5cfb3b8d2bc0 usr/share/gdm/themes/diad/options.png
        • c588c56e88007469e55e0c084e830cd4 usr/share/gdm/themes/diad/screenshot.png
        • 0960f0c80ff0e503288d2ea5e704fbe8 usr/share/gdm/themes/diad/debsmiths.png
  • diad-artwork_1.0-1_all.deb
    • $ echo 2.0 > debian-binary
    • $ fakeroot # tar cz -C diad-artwork/DEBIAN -f control.tar.gz . # tar cz --exclude=DEBIAN -C diad-artwork -f data.tar.gz .
      • # ar rcu diad-artwork.deb > debian-binary control.tar.gz data.tar.gz
      • # exit
      • $ file diad-artwork.deb
      • $ dpkg-name diad-artwork.deb
  • Instalando e Removendo Seu Novo Pacote
    • Instalando
      • $ sudo dpkg -i diad-artwork_1.0-1_all.deb Selecting previously deselected package diad-artwork. (Reading database ... 221664 files and directories currently installed.) Unpacking diad-artwork (from diad-artwork_1.0-1_all.deb) ... Setting up diad-artwork (1.0-1) ...
    • Verificando se está instalado $ aptitude search python
  • Instalando e Removendo Seu Novo Pacote
    • Removendo $ sudo apt-get remove diad-artwork Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: diad-artwork 0 upgraded, 0 newly installed, 1 to remove and 40 not upgraded. Need to get 0B of archives. After unpacking 0B of additional disk space will be used. Do you want to continue [Y/n]? y (Reading database ... 221677 files and directories currently installed.) Removing diad-artwork ...
  • Debianizando Pacotes Existentes
  • Debianizando ./DEBIAN ./usr ./usr/share ...
      • pacote-0.1-1_i386.deb
      • código fonte debianizado
    ./pacote-0.1 ./pacote-0.1/src/* ./pacote-0.1/ debian/* ./pacote-0.1/*
  • Debianizando
    • Vamos obter o código fonte de uma aplicação qualquer $ wget http://logicparser.googlecode.com/files/logicparser-0.7.2.tar.gz $ tar -xvzf logicparser-0.7.2.tar.gz $ cd logicparser-0.7.2
  • dh_make
    • Poderíamos criar “na mão” todos os arquivos necessários para criação do deb
    • Mas o dh_make ( pacote: dh-make ) poderia fazer isso por nós... :) $ cd logicparser-0.7.2 $ DEBFULLNAME=&quot;Marcelo Lira dos Santos&quot; > DEBEMAIL=&quot;setanta@gmail.com&quot; > dh_make --file ../logicparser-0.7.2.tar.gz > --single -c gpl
    • Serão criados o diretório logicparser_0.7.2/ debian e o arquivo logicparser_0.7.2.orig.tar.gz
  • Modificando os Arquivos em debian/*
    • O dh_make cria vários arquivos, muitos dos quais não precisaremos. Vamos apagá-los: $ rm debian/*.ex debian/*.EX README.Debian
    • Vejamos o que sobrou $ ls debian changelog compat control copyright dirs docs rules
    Invoca o Makefile Você já conhece esse.
  • debian/control
      • Source: logicparser Section: misc Priority: optional Maintainer: Marcelo Lira dos Santos <meuemail@email.com> Build-Depends: debhelper (>= 5), autotools-dev Standards-Version: 3.7.2
      • Package: logicparser Architecture: i386 Depends: ${shlibs:Depends}, ${misc:Depends} Description: Simple parser for logical expressions. Parser of logical propositions. It generates a parsed tree, a graph in DOT format, and renders it in PNG if GraphViz is available. It also calculates the expression based in values given by the user.
  • Criando o Pacote Binário
    • fakeroot
      • usado para simular privilégios de root
      • a princípio não serve pra exploitar (tão pensando que o céu é perto)
    • Usamos o rules para criar o pacote $ fakeroot debian/rules binary
    • Fora do diretório do código fonte estará o arquivo logicparser_0.7.2-1_i386.deb
  • Pacotes Fonte
    • Fatos:
      • Além de pacotes binários o Debian possui pacotes fonte.
      • Pacotes binários são criados a partir de pacotes fonte.
      • Pacotes fonte podem gerar múltiplos pacotes binários.
        • Exemplo: o pacote fonte de uma biblioteca pode gerar pacotes binários runtime , desenvolvimento e documentação
  • Anatomia de Um Pacote Fonte
    • Um pacote fonte não é um arquivo, mas 3:
      • foo_1.0-1.orig.tar.gz – código fonte original
      • foo_1.0-1.diff.gz – mudanças feitas no código fonte original; pode ser o acréscimo do diretório debian , ou mudanças na própria aplicação para se adequar às políticas do Debian.
      • foo_1.0-1.dsc – descrição do pacote fonte.
  • Criando o Pacote Fonte
    • Devemos ter no presente diretório, o arquivo orig do código fonte, mais o diretório com o código fonte alterado ( debian/* e outras coisas): $ ls logicparser-0.7.2 logicparser_0.7.2.orig.tar.gz $ dpkg-source -b logicparser-0.7.2 $ ls logicparser-0.7.2 logicparser_0.7.2.orig.tar.gz logicparser_0.7.2-1.diff.gz logicparser_0.7.2-1.dsc
  • Criando o Pacote Fonte
    • Vamos copiar o pacote fonte para outro lugar onde podemos brincar em paz: $ mkdir playground $ cp logicparser_0.7.2* playground $ cd playground
    • Usamos o comando dpkg-source para aplicar as diferen ç as no pacote fonte original segundo as informa ções em dsc $ dpkg-source -x logicparser_0.7.2-1.dsc $ ls logicparser-0.7.2 logicparser_0.7.2-1.diff.gz logicparser_0.7.2-1.dsc logicparser_0.7.2.orig.tar.gz
  • Criando o Pacote Fonte
    • Finalmente construímos o pacote binário: $ cd logicparser-0.7.2 $ dpkg-buildpackage -rfakeroot -b -us -uc $ cd .. $ ls logicparser-0.7.2 logicparser_0.7.2-1.dsc logicparser_0.7.2-1_i386.deb logicparser_0.7.2-1.diff.gz logicparser_0.7.2-1_i386.changes logicparser_0.7.2.orig.tar.gz
    u = unsigned não faz uso de assinaturas criptográficas
  • Resumo Visual do Processo de Empacotamento Upstream Source Rename Unpack Build Build Create Working Files Debian packaging files and changes Debian binary package Debian source package Descaradamente copiado de: http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf foo-1.0.tar.gz foo-1.0 foo-1.0/debian/* foo_1.0-1_i386.deb foo_1.0-1.orig.tar.gz foo_1.0-1.diff.gz foo_1.0-1.dsc
  • Autor: Marcelo Lira dos Santos <setanta@gmail.com> Chefe, posso usar algumas horas de trabalho pra fazer os slides do Dia D ? Pro Dia D ? Claro que pode! [meu chefe no INdT]
  • Referências
  • Referências
    • KRAFFT, Martin F. The Debian System
    • The Debian GNU/Linux FAQ Chapter 6 - Basics of the Debian package management system
      • http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html
    • Debian Policy Manual
      • http://www.debian.org/doc/debian-policy/
    • Debian Packaging School: Lesson 1
      • http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf
    • Atribuição-Compartilhamento pela mesma licença 2.5 ( http://creativecommons.org/licenses/by-sa/2.5/deed.pt )
    • Você pode:
      • copiar, distribuir, exibir e executar a obra
      • criar obras derivadas
      • fazer uso comercial da obra
    • Sob as seguintes condições:
    • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
    • Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.
      • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra.
      • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.
    • Qualquer direito de uso legítimo (ou &quot;fair use&quot;) concedido por lei, ou qualquer outro direito protegido pela legislação local, não são em hipótese alguma afetados pelo disposto acima.
    • Este é um sumário para leigos da Licença Jurídica (na íntegra: http://creativecommons.org/licenses/by-sa/2.5/br/legalcode ). Termo de exoneração de responsabilidade: http://creativecommons.org/licenses/disclaimer-popup?lang=pt