Onde devo colocar modelos e arquivos de configuração na hierarquia do Debian?

1

Estou escrevendo um pacote binário debian para meu aplicativo (foo). O script postinst (post install) quer fazer algumas perguntas ao usuário e obter as respostas também. Eu estou tentando conseguir isso usando o debconf. Mas não consigo ver a tela da interface do usuário, solicitando ao usuário perguntas. Duvido que minhas configurações e templates sejam chamados pelo dpkg. Estou usando todas as instruções conforme o link tutorial do debconf Alguém poderia me esclarecer sobre as perguntas abaixo:

  1. Estou colocando o script “config” e o arquivo “templates” dentro de / debian / tmp / DEBIAN /. Então, é o local correto na hierarquia do Debian? Os nomes estão corretos?
  2. Os scripts abaixo estão corretos?

Snippet do arquivo de controle (somente os campos relevantes que estou postando)

Depends: debconf (>= 0.2.17)

Snippet do arquivo de configuração

#!/bin/sh
set -e

#echo "Config being called"

# Source debconf library.
. /usr/share/debconf/confmodule

# Do you like debian?
db_input medium foo/like_debian || true
db_go

# Check their answer.
db_get foo/like_debian
if [ "$RET" = "false" ]; then
    # Poor misguided one..
    db_input high foo/why_debian_is_great || true
    db_go
fi

Snippet do arquivo de modelos

Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
We'd like to know if you like the Debian GNU/Linux system.

Template: foo/why_debian_is_great
Type: note
Description: Poor misguided one. Why are you installing this package?
Debian is great. As you continue using Debian, we hope you will
discover the error in your ways.

Snippet de preinst:

#!/bin/sh
set -e
#echo "Stage preinst" 

exit 0

Snippet de postinst:

#!/bin/sh
set -e
#echo "Stage postinst" 

# Source debconf library.
. /usr/share/debconf/confmodule

db_get foo/like_debian
if [ "$RET" = "false" ]; then
    touch "/home/myhome/ITWORKED"
fi

exit 0

Snippet de prerm:

#!/bin/sh
set -e
#echo "Stage prerm" 

exit 0

Snippet de postrm:

#!/bin/sh
set -e
#echo "postrm" 

exit 0

Obrigado -Sandar

    
por Sandeep 17.07.2013 / 14:58

2 respostas

3

Eu fiz uma postagem no blog sobre como criar seus próprios pacotes debian em:

link

Para salvar você de alguma leitura, a estrutura do diretório deve ser assim:

  • DEBIAN
    • controle (obrigatório)
    • modelos (opcionais)
    • preinst (opcional, chmod 0755)
    • postinst (opcional, chmod 0755)
    • prerm (opcional, chmod 0755)
    • postrm (opcional, chmod 0755)
  • … (arquivos a serem instalados no local especificado)

Certifique-se de que as permissões e localizações sejam assim e que funcionem:)

    
por RvGaTe 18.07.2013 / 08:54
0

Eu resolvi o problema digitando

echo PURGE | debconf-communicate <packagename>

Este comando limpa todas as seleções no banco de dados debconf . Percebi que quando as seleções estão presentes no banco de dados debconf , o instalador de pacotes nunca executa os comandos de entrada no arquivo config . Portanto, eu coloquei o comando purge no arquivo postrm .

    
por FBG 02.11.2016 / 17:43