O primeiro arquivo necessário para utilizarmos o
DebConf é o arquivo "config", é através dele que a chamada para o DebConf é feita:
gedit config
#!/bin/sh -e
# Fonte da library do debconf.
. /usr/share/debconf/confmodule
# Chamada para ler meu arquivo "template"
# observe que é necessário ter essas entradas no arquivo
db_input high espaco-disco/cota
db_go
O segundo, e não menos importante, é o arquivo "templates":
gedit templates
Template: espaco-disco/cota
Type: string
Default: 400
Description: Informe o limite que o usuário poderá armazenar na conta (MB):
# Valor em MB que o sistema espaco-disco-labs mostre o limite em uso.
O terceiro arquivo é o "pulo do gato"!
Deve ser criando um arquivo chamado "postinst", que fará a leitura do que usuário digitou no momento da instalação. No meu caso, criei um arquivo armazenando esse valor:
gedit postinst
#!/bin/sh -e
# Origem da library
. /usr/share/debconf/confmodule
#Obtenho o que o usuário digitou
db_get espaco-disco/cota
#Jogo o valor para o arquivo - a variável RET veio através do confmodule
echo $RET>/usr/share/espaco_disco_labs/limite_conta
#Muda a permissão da pasta para todos executarem
chmod -R 755 /usr/share/espaco_disco_labs/
O quarto arquivo serve para a remoção do pacote e, consequentemente, a exclusão do mesmo do sistema operacional, inclusive da base de dados do DebConf.
gedit postrm
if [ "$1" = "purge" -a -e /usr/share/debconf/confmodule ]; then
# Source debconf library.
. /usr/share/debconf/confmodule
# Remove my changes to the db.
db_purge
fi
O quinto arquivo necessário é o mesmo arquivo mostrado no capítulo acima, o arquivo "control".
Com todos eles criados e revisados, vamos à criação do pacote:
dpkg-deb -b pasta_deb meu_primeiro_deb.deb
Testando para ver se funciona tudo corretamente:
dpkg -i meu_primeiro_deb.deb
Solução de problemas
Durante os meus primeiros testes, tentava instalar o pacote e nada, foi aí que descobri o local que as
templates ficavam armazenadas:
sudo gedit /var/cache/debconf/config.dat
* Tome cuidado para apagar somente o registro correspondente à sua template.
É só isso!