Você está na página 1de 5

8 GERENCIAMENTO DE PACOTES - Criação de Pacote .

deb

Procedimentos para a criação de um pacote com a estrutura .deb, para gerenciamento via apt-get e suas
demais ferramentas.

Os procedimentos seguintes demonstram como gerar um pacote de software para ser distribuído na
estrutura de gerenciamento de pacotes do sistema apt.

Nosso objetivo é a geração do pacote de software composto pelo script usrmgr.sh e demais arquivos
acessórios, os quais são requeridos pela estrutura de gerenciamento apt.

Seguir os procedimento abaixo, os quais são discutidos em sala de aula:

1- Criar os diretórios para abrigar todos os arquivos necessários para a geração do pacote que será
gerado, contendo o script usrmgr.sh:
# mkdir -p /temp/pktusr
# mkdir -p /temp/pktusr/debian/DEBIAN
# mkdir -p /temp/pktusr/debian/bin
# mkdir -p /temp/pktusr/debian/usr/share/doc/usrmgr
# mkdir -p /temp/pktusr/debian/usr/share/man/man1

2- Entrar no diretório criado /temp/pktusr;

# cd /temp/pktusr

3- Copiar o script usrmgr.sh para o diretório /temp/pktusr/debian/bin:


# cp /etc/usrmgr.sh /temp/pktusr/debian/bin/usrmgr (aqui o arquivo ganha novo nome)

4- Criar o arquivo debian/DEBIAN/prerm com o seguinte conteúdo:

#!/bin/sh
set -e
# Automaticamente exclui o script usrmgr na remoção do pacote
if [ \( "$1" = "upgrade" -o "$1" = "remove" -o "$1" = "purge" \) -a -L /bin/usrmgr ]; then
rm -f /bin/usrmgr
echo "Script /bin/usrmgr removido do sistema."
fi
# Fim do script

5- Criar o arquivo debian/DEBIAN/postinst com o seguinte conteúdo:

#!/bin/sh
set -e
# Automaticamente faz alguma coisa após a instalação do pacote
if [ "$1" = "configure" ]; then
echo "Script rodando para fazer alguma configuracao, caso necessario..."
echo "Fim do script de configuracao e instalacao...Fui!"
sleep 3
fi
# Fim do script
6- Criar o arquivo debian/usr/share/doc/usrmgr/copyright com o seguinte conteúdo:

usrmgr.
Copyright: SENAI CTAI - Floripa - Turma Redes 2010 <redes2010@sc.senai.br>

05/10/2010

The home page of usrmgr.sh is at:


http://www.sc.senai.br

The entire code base may be distributed under the terms of the GNU General
Public License (GPL), which appears immediately below. Alternatively, all
of the source code as any code derived from that code may instead be
distributed under the GNU Lesser General Public License (LGPL), at the
choice of the distributor. The complete text of the LGPL appears at the
bottom of this file.

See /usr/share/common-licenses/(GPL|LGPL)

7- Criar o arquivo debian/DEBIAN/control com o seguinte conteúdo:

Package: usrmgr
Version: 1.0
Section: admin
Priority: optional
Architecture: all
Depends: passwd (>= 1:4.1.4.2-1), base-passwd (>= 3.5.20)
Suggests:
Conflicts:
Replaces:
Installed-Size: 13
Maintainer: SENAI CTAI Redes 2010 <redes2010@sc.senai.br>
Description: Este pacote contem o script usrmgr.sh que objetiva
a administracaoo de usuarios locais. Possui carater didatico e
se desejar, altere conforme suas necessidades.

8- Criar o arquivo debian/usr/share/doc/usrmgr/changelog, com o seguinte conteúdo:

usrmgr (1.0)

* Made Debian package lintian clean.

-- SENAI CTAI Redes 2010 <redes2010@sc.senai.br> 2010-10-04

9- - Criar o arquivo debian/usr/share/doc/usrmgr/changelog.DEBIAN, com o seguinte conteúdo:

usrmgr (1.0) stable; urgency=low

* Primeira versão do sistema..


Nada a fazer, se desejar reporte os bugs no email abaixo.

-- SENAI CTAI Redes 2010 <redes2010@sc.senai.br> Mon, 04 Oct 2010 14:30:00 +1000
10- Criar o arquivo que será o manual do sistema em linha de comando, colocando o conteúdo abaixo:
# vi debian/usr/share/man/man1/usrmgr/usrmgr.1
Colocar o conteúdo abaixo:

.TH usrmgr 1 Manual Usuario

.SH NAME
usrmgr - script para administracao de usuarios.

.SH SYNOPSIS
usrmgr.sh [sem parametros]

.SH DESCRIPTION
usrmgr.sh foi desenvolvido para fins didaticos e objetiva
a administracao de usuarios e grupos locais. O script foi
desenvolvido em bash e podera ser alterado conforme a
necessidade do usuario. Altere conforme deseja.

.SH OPTIONS
-v Apresenta a versao do script.

-p parametro
O parametro nao faz nada, esta aqui pra testar a
sintaxe deste arquivo de manual.

.SH FILES
/bin/usrmgr
O arquivo shell para administracao de usuarios locais.

.SH ENVIRONMENT

USRMGR
Uma variavel de ambiente caso seja necessario.
O script nao usa nada do ambiente.

.SH DIAGNOSTICS
O script testa o usuario e se nao for o root sai fora.
O script testa a existencia dos arquivos /etc/passwd, /etc/group
e o comando useradd.

.SH BUGS
O script nao formata a apresentacao dos grupos corretamente, pois
depende da resolucao do terminal onde o mesmo esta sendo executado.

.SH AUTHOR
SENAI CTAI FLORIPA
Turma Redes 2010 <redes2010@.sc.senai.br>

.SH SEE ALSO


usrmgr(1), passwd(5)
11- Instalar o pacote groff para testar a formatação do arquivo usrmgr.1, o qual será o manual do
script no sistema;

# apt-get install groff


# Responda aos questionamentos com um Sim (S).
# Executar o groff no arquivo usrmgr.1
#
# groff -man -Tascii debian/usr/share/man/man1/usrmgr.1
#
# se a formatação ficou ok, podemos passar para o próximo passo.

12- Compactar os arquivos pelo gzip, conforme segue:

# gzip –-best debian/usr/share/doc/usrmgr/changelog.DEBIAN


# gzip –-best debian/usr/share/doc/usrmgr/changelog
# gzip --best debian/usr/share/man/man1/usrmgr.1

13- Criar os arquivos de checksum dos arquivos que fazem parte do pacote, conforme os comandos
abaixo:

# cd debian
# md5sum bin/usrmgr >> DEBIAN/md5sums
# md5sum usr/share/man/man1/usrmgr.1.gz >> DEBIAN/md5sums
# md5sum usr/share/doc/usrmgr/changelog.gz >> DEBIAN/md5sums
# md5sum usr/share/doc/usrmgr/changelog.DEBIAN.gz >> DEBIAN/md5sums
# md5sum usr/share/doc/usrmgr/copyright >> DEBIAN/md5sums

14- Após os procedimentos anteriores, verifique se os seguintes arquivos estão nos diretórios abaixo;

# se posicione no diretório /temp/pktusr


# cd /temp/pkusr
# find ./ -type f
./debian/DEBIAN/prerm
./debian/DEBIAN/control
./debian/DEBIAN/md5sums
./debian/DEBIAN/postinst
./debian/usr/share/man/man1/usrmgr.1.gz
./debian/usr/share/doc/usrmgr/changelog.gz
./debian/usr/share/doc/usrmgr/changelog.DEBIAN.gz
./debian/usr/share/doc/usrmgr/copyright
./debian/bin/usrmgr

15- Se os arquivos anteriores estiverem nos diretórios corretos, ajuste as permissões conforme segue:

# find ./ -type d | xargs chmod 755

16- Instalar o pacote lintian o qual objetiva a verificação da estrutura dos pacotes .deb:

# apt-get install lintian


17- Gerar o pacote debian, a partir da estrutura de arquivos criada anteriormente, conforme segue:

# cd /temp/pktusr
# dpkg-deb --build debian/

18- O comando anterior gerou o arquivo debian.deb, agora executar o comando lintian para verificação
da estrutura do pacote recém-criado, conforme segue:

# lintian --allow-root debian.deb


#
W: usrmgr: syntax-error-in-debian-changelog line 6 "found eof where expected first heading"
W: usrmgr: manpage-has-errors-from-man usr/share/man/man1/usrmgr.1.gz can't set the locale; make sure $LC_* and $LANG
are correct

18- Se as mensagens anteriores forem somente de aviso (warning – W), indica que o pacote está
correto, restando somente renomeá-lo para o padrão de nomes dos pacotes .deb:

# mv debian.deb usrmgr_1.0_all.deb

19- Agora é só instalar o pacote no seu computador, conforme segue:

# dpkg -i usrmgr_1.0_all.deb

20- Através dos comandos abaixo, verifique os detalhes do seu pacote recém-criado e veja se está
tudo correto, inclusive execute o script e veja se há um manual on-line para o mesmo:

# dpkg -l | grep usrmgr (ver se o pacote está instalado)


# dpkg -L usrmgr (mostra os arquivos do pacote)
# aptitude (usar o “/” para procurar o pacote usrmgr e veja as informações)
# usrmgr (executa o script instalado)
# man usrmgr (mostra o manual on-line do script)
# dpkg –purge (exclui o pacote e todos os seus arquivos no sistema.

Após os procedimentos anteriores, você viu como proceder para gerar um pacote .deb. O próximo passo
seria tornar o mesmo disponível para as comunidades GNU/Linux. Este procedimento é mais simples e
se resume na colocação do arquivo em algum repositório.

Entretanto, lembramos que para um pacote compor a estrutura de repositórios da distribuição Debian,
ele precisa ser disponibilizado para a equipe do projeto e aprovado, para então ficar constando num
repositório oficial.

Outra alternativa muito interessante é criar sua própria estrutura de repositório e disponibilizar o seu
pacote, ou simplesmente disponibiliza em um servidor web, num blog, etc.

Veja mais nos seguintes endereços acessados em 03/10/2010.

http://tldp.org/HOWTO/Man-Page/index.html
http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/#AEN35

Você também pode gostar