Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o...

35
1 Empacotamento deb e rpm Grupo: Espedito Grupo: Espedito Anderson Anderson Américo Américo Jean Jean

Transcript of Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o...

Page 1: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

1

Empacotamento deb

erpm

Grupo: EspeditoGrupo: Espedito Anderson Anderson Américo Américo Jean Jean

Page 2: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

2

IntroduçãoCompilaçãoPacotesGerenciadores

.deb

.rpmConclusão

Agenda

Page 3: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

3

compilador

Introdução

No princípio só existia o binário...

binário

machine code

linguagem demáquina

fonte

source code

linguagem deprogramação

interpretador

Page 4: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

4

Compilando programas

Obter o programa fonteftp://lynx.isc.org/> cd lynx2.8.6> bin> get lynx2.8.6rel.4.tar.gz> quit

89 gcc ...

Descompactartar ­xzvf lynx2.8.6rel.4.tar.gz

Obter informaçõescd lynx2.8.6less README

Compilargcc ­DHAVE_CONFIG ­02 ­DLINUX \ 

  ­c src/HTParce.c ...gcc ­DHAVE_CONFIG ­02 ­DLINUX \   ­c src/HTAccess.c ...

Dependências !

Page 5: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

5

Dependências:

Compilando programas

Obter o programa fontewget ­c ftp://lynx.isc.org/lynx2.8.6/ \

lynx2.8.6rel.2.tar.gz Descompactartar ­xzvf lynx2.8.6rel.4.tar.gz

Adequar o makefilecd lynx2­8­1./configure

Compilarmake

Instalarmake install

configure: error: no acceptable cc found in $PATH

sudo apt­get install build­essential

configure: error: no curses library found

sudo apt­get install libncurses5­dev

Page 6: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

6

Pacote

Arquivo, normalmente compactado, que contém todos os arquivos - binários, fontes, shell scripts, configuração, dados, copyright, documentação, etc - necessários a instalação de um software.Contém também as informações para sua remoção, configuração e manutenção pelo gerenciador de pacotes.

Binário Fonte

Page 7: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

7

Gerenciador de pacotes

Software cuja função é facilitar a instalação, remoção e configuração de pacotes.Também pode compilar e empacotar um aplicativo.

Dependências !

TGZ – Slackware

DPKG – Debian PacKaGe

RPM – RedHat Package Manager

Page 8: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

8

Gerenciador avançado de pacotes

Software que busca pacotes em repositórios locais ou remotos, se necessário resolve dependências, e utilizando um gerenciador de pacotes os instala, remove e configura.

Dependências

APT – Advanced Package Tool YUM – Yellow Dog - RedHat Enterprise – Fedora URPMI – MandrivaYOU – SuSEPorts – FreeBSDPortage – Gentoo

Repositórios

Page 9: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

9

DPKG – Debian PacKaGe

Poderoso gerenciador de pacotes- instalar- atualizar- remover- construir

Desenvolvido inicialmente para Debian (.deb)

Nome do arquivo: programa_1.0.1-1_i386.deb

Controla dependências mas não as instala

Pacote = arquivo de arquivos- configurações- binários

Page 10: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

10

Informações sobre os pacotes

Estado dos pacotes:- installed (desempacotado e configurado)- half-installed (instalação não concluída)- unpacked (desenpacotado e não configurado)- half-configured (desempacotado e configuração não

concluída)- config-files (só resta arquivos de configuração)

Estado de seleção dos pacotes:- install (marcado para instalação)- deinstall (marcado para remoção)- purge (marcado para remoção completa)

Flag dos pacotes:- hold (só pode ser manipulado com --force-hold)- reinst-required (quebrado, precisa dependências)

Page 11: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

11

Principais comandos do DPKG

Instalar o pacote# dpkg ­i pacote

Remover o pacote# dpkg ­P pacote

Informações sobre o pacote# dpkg ­I pacote# dpkg ­c pacote

Reconfigurar o pacote# dpkg­reconfigure pacote

Instalar mesmos pacotes em máquinas diferentes# dpkg ­­get­selections > pacotes.txt# dpkg ­­set­selections < pacotes.txt# dselect install

Page 12: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

12

Ferramentas - dselect

Front-end texto para o DPKG

Page 13: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

13

APT – Advanced Package Tool

É uma extensão do DPKG

Gerencia dependências

Conecta o sistema a um repositório/etc/apt/sources.list

Salva os pacotes em /var/cache/apt/archives# apt­get clean

Page 14: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

14

Principais comandos do APT

# apt­get update

apt-cdrom (adiciona CDROMs no sources.list)# apt­cdrom add

apt-get (download e instalação de pacotes)# apt­get install pacote# apt­get remove pacote# apt­get remove ­­purge pacote

apt-cache (manipula cache dos pacotes e faz consultas)# apt­cache search pacote

Obter o programa fonte (precisa ter o deb-src habilitado)# apt­get source pacote# apt­get ­d install pacote# dpkg ­x ­e pacote diretório

Page 15: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

15

Ferramentas - aptitude

Front-end texto para o APT

Page 16: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

16

Ferramentas - synaptic

- Front-end gráfico para o APT- Criado por Alfredo Kojima com ajuda de Gustavo Niemeyer (Conectiva)

Page 17: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

17

Ferramentas - debfoster

Mantém uma lista de pacotes que foram instalados explicitamente e suas dependências

Page 18: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

18

Empacotamento .deb

dh_make:converte os fontes para o padrão Debian

dpkg-buildpackage:constrói pacotes binários, fontes e assina os arquivos .dsc e .changesdpkg-source:constrói pacotes fonte

lintian e linda:verifica e reporta bugs e violações na política dos pacotes Debian.dbuild:faz o mesmo que o dpkg-buildpackage e executa o lintian e/ou linda.uupdate:atualiza pacotes-fonte.

Estrutura para empacotamento:- .orig.tar.gz (código fonte original)

- .diff.gz (alterações feitas para empacotar)

- .dsc (arquivo com informações de controle)

- .changes (mudanças na revisão atual)

Page 19: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

19

Construindo um pacote do zero

A partir do código original:$ wget http://ftp.gnu.org/gnu/hello/hello­2.1.1.tar.gz$ tar ­zxvf hello­2.1.1.tar.gz$ cd hello­2.1.1$ dh_make ­e [email protected] ­f ../hello­2.1.1.tar.gz

Ou a partir do fonte do repositório:$ apt­get source hello$ rm hello_2.1.1*$ cd hello­2.1.1

Então gerar o pacote:$ dpkg­buildpackage ­rfakeroot ­us ­uc$ cd ..$ lintian ­i *.dsc

Page 20: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

20

Metapacotes

Nome do sistema: programa-1.0$ mkdir ­p programa­1.0/debian/changelog$ mkdir programa­1.0/debian/control$ mkdir programa­1.0/debian/copyright$ mkdir programa­1.0/debian/rules$ chmod 755 programa­1.0/debian/rules$ debuild ­us ­uc

control:

Page 21: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

21

Recursos interessantes

svn-autoreleasedeb – Empacota direto do SVNcvs-autoreleasedeb – Empacota direto do CVS

alien – Converte pacotes de um formato de empacotamento para outro

.deb

.rpm

.tgz

.pkg

Page 22: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

22

Uso do RPM

Pacotesbinários .rpmpacotes­fonte .src.rpm

Modos de operaçãoinstalação ­idesinstalação ­eatualização ­Uconsulta ­qverificação ­V

Freshen ­Fimportação de chave ­­importAssinatura de pacotes ­­addsignreassinatura de pacotes ­­resignverificação de assinatura de pacotes ­Kinicialização ­initdbreconstrução do banco de dados ­rebuilddb

Comando rpm

Obter pacotesrepositórios

Page 23: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

23

Instalando pacotes rpm

Obtendo pacotes  # su# mount /dev/cdrom /mnt/ # cd /mnt/Fedora/RPMS

Para instalar  # rpm ­ivh mc­4.6.1a­26.fc5.i386.rpm

# rpm ­i *.rpm # rpm ­i ­­test mc­4.6.1a­26.fc5.i386.rpm# rpm ­i ­­replacepkgs mc­4.6.1a­26.fc5.i386.rpm# rpm ­i ­­excludedocs mc­4.6.1a­26.fc5.i386.rpm# rpm ­i ­­nodeps mc­4.6.1a­26.fc5.i386.rpm

/usr/bin/etc/usr/share/nome_do_programa

Page 24: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

24

Desinstalando pacotes rpm

Para desinstalar# rpm ­e mc# rpm ­e ­­nodeps mc

Page 25: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

25

Atualizando pacotes rpm

Para atualizar# rpm ­Uvh mc­4.6.1a­26.fc5.i386.rpm

Para recarregar# rpm ­Fvh mc­4.6.1a­26.fc5.i386.rpm# rpm ­Fvh *.rpm

Page 26: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

26

Consultando pacotes rpm

Para consultar# rpm ­qa# rpm ­ql mc# rpm ­qlp mc­4.6.1a­26.fc5.i386.rpm# rpm ­qi mc# rpm ­qip mc­4.6.1a­26.fc5.i386.rpm

Page 27: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

27

Verificando pacotes rpm

Para verificar# rpm ­Va# rpm ­V mc# rpm ­Vp mc­4.6.1a­26.fc5.i386.rpm # rpm ­Vg alunos# rpm ­Vv mc# man rpm

Page 28: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

28

RPMRPM

RPM Package Manager;

Gerenciador de pacote criado pela RedHat sob licença GPL;

Usado pelas distribuições baseadas em RedHat como: Suse, OpenSuse, Fedora Core, Mandriva etc.

Funções de gerenciador de pacotes: instalar, atualizar, remover, consultar, construir e assinar pacotes.

Page 29: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

29

Arquivos do RPMArquivos do RPM

Configuração geral/usr/lib/rpm/rpmrc/home/<usuario>/.rpmrc/root/.rpmrc

Configuração de macros/usr/lib/rpm/macros/home/<usuario>/.rpmmacros/root/.rpmmacros

Banco de dados/var/lib/rpm

Page 30: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

30

.rpm.rpm

Pacotes binárioUtilizados para encapsular o software a

ser instalado

Pacotes-fonteContém o código-fonte e o

procedimento necessário para produzir os pacotes binários, tudo em um único arquivo .src.rpm

Page 31: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

31

Construção de pacote Construção de pacote .rpm.rpm

rpmbuildrpmbuild é o comando para construção de pacote .rpm, para tanto é necessário que sejam fornecidos:

arquivo-fonte do programa e seus patches no diretório /usr/src/redhat/SOURCES

arquivos spec no diretório /usr/src/redhat/SRPMS

Depois de criados os pacotes-fonte são colocados no diretório /usr/src/redhat/SRPMS

Enquanto que os pacotes binários são colocados no diretório /usr/src/RPMS/arquitetura

Requer outros pacotes instalados como por exemplo: rpm-devel, rpm-python, make, gcc,gcc-c++, gnupg, etc.

Page 32: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

32

Arquivo specO arquivo spec é o coração do processo de construção de

pacote .rpm, trata-se de arquivo bastante complexo sendo dividido em nove seções:

% c h a n g e l o g ( r e g i s t r o   d a s   a t u a l i z a ç õ e s   q u e   o   p a c o t e   s o f r e u  d e s d e   s u a   c r i a ç ã o ) .

M u d a n ç a s

% f i l e s ( l i s t a   d e   a r q u i v o s   q u e   f a z   p a r t e   d o   p a c o t e :   c o n f i g u r a ç ã o  e   d o c u m e n t a ç ã o )   a l é m   d e   m a c r o s   p a r a   d e f i n i ç ã o   a t r i b u t o s .

A r q u i v o s

% c l e a n ( l i m p a r   s i s t e m a   a p ó s   c o n s t r u ç ã o   d e   p a c o t e s )L i m p e z a

% v e r i f y s c r i p t ( e x i b i d a s   a o   u t i l i z a r   m o d o   d e   v e r i f i c a ç ã o   R P M )V e r i f i c a ç ã o

% p r e ,   % p o s t ,   % p o s t u n ( l o c a l   d e   o r g a n i z a ç ã o   d e   s c r i p t s   p a r a  i n s t a l a ç ã o   e   o u   r e m o ç ã o   d e   p a c o t e )

S c r i p t s

s c r i p t   % i n s t a l lI n s t a l a ç ã o

s c r i p t   % b u i l d ( c o m p i l a ç ã o )   s h e l l s c r i p t s   e   m a k eC o n s t r u ç ã o

s c r i p t   % p r e p ( d e s c o m p a c t a r   o s   p r o g r a m a s ­ f o n t e )   s h e l l s c r i p t s   e  m a c r o s

P r e p a r a ç ã oi n f o r m a ç õ e s   e x i b i d a s   a o   u t i l i z a r   m o d o   d e   c o n s u l t a   d o   R P MP r e â m b u l o

% c h a n g e l o g ( r e g i s t r o   d a s   a t u a l i z a ç õ e s   q u e   o   p a c o t e   s o f r e u  d e s d e   s u a   c r i a ç ã o ) .

M u d a n ç a s

% f i l e s ( l i s t a   d e   a r q u i v o s   q u e   f a z   p a r t e   d o   p a c o t e :   c o n f i g u r a ç ã o  e   d o c u m e n t a ç ã o )   a l é m   d e   m a c r o s   p a r a   d e f i n i ç ã o   a t r i b u t o s .

A r q u i v o s

% c l e a n ( l i m p a r   s i s t e m a   a p ó s   c o n s t r u ç ã o   d e   p a c o t e s )L i m p e z a

% v e r i f y s c r i p t ( e x i b i d a s   a o   u t i l i z a r   m o d o   d e   v e r i f i c a ç ã o   R P M )V e r i f i c a ç ã o

% p r e ,   % p o s t ,   % p o s t u n ( l o c a l   d e   o r g a n i z a ç ã o   d e   s c r i p t s   p a r a  i n s t a l a ç ã o   e   o u   r e m o ç ã o   d e   p a c o t e )

S c r i p t s

s c r i p t   % i n s t a l lI n s t a l a ç ã o

s c r i p t   % b u i l d ( c o m p i l a ç ã o )   s h e l l s c r i p t s   e   m a k eC o n s t r u ç ã o

s c r i p t   % p r e p ( d e s c o m p a c t a r   o s   p r o g r a m a s ­ f o n t e )   s h e l l s c r i p t s   e  m a c r o s

P r e p a r a ç ã oi n f o r m a ç õ e s   e x i b i d a s   a o   u t i l i z a r   m o d o   d e   c o n s u l t a   d o   R P MP r e â m b u l o

Page 33: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

33

.rpm

Fonte: www.ibm.com/linux

Page 34: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

34

Conclusão

E a evolução continua...

Smart Package ManagerGustavo Niemeyer - Canonical

Conary

Page 35: Empacotamento deb e rpm - Colab · 3 compilador Introdução No princípio só existia o binário... binário machine code linguagem de máquina fonte source code linguagem de programação

35

Bibliografia

João Eriberto Mota Filho, Descobrindo o Linux – Novatec Editora Ltda, 2006.Rubem E. Ferreira, Gerenciamento de Pacotes de Software no LINUX –

Novatec Editora Ltda, 2006.http://www.debian.org/doc/FAQ/ch-pkg_basicshttp://www.pcwebpedia.comhttp://www.wiggy.net/presentations/2000/PackageManagement/article/article.pdfhttp://www1.mandrivalinux.com/cooker/urpmi.htmlhttp://www.redhat.comhttp://www.vivaolinux.com.br

http://wiki.rpath.com/wiki/Conary

http://labix.org/smar

O Guia de Empacotamento no Ubuntu - Ubuntu GNU/Linux 6.06 Dapperhttp://www.wikipedia.orghttp://www.redhat.comhttp://www.ibm.com/openhttp://www.ibm.com/linux