Criando um pacote Debian que não remove diretórios depois que ele é removido

2

Estou tentando criar um pacote Debian que não exclua um diretório vazio depois que ele for removido. Especificamente, estou criando meu próprio pacote contendo alguns certificados de CA nos quais confio.

Estou seguindo o método sugerido pelo Debian para instalar os certificados em /usr/local/share/ca-certificates . O problema em que estou correndo é que o pacote ca-certificates cria /usr/local/share/ca-certificates quando é instalado e gostaria que o diretório permanecesse quando meu pacote fosse removido.

Meu objetivo é instalar minha cadeia de confiança em /usr/local/share/ca-certificates/mychain , mas quando meu pacote Debian for removido, eu quero que o dpkg não remova /usr/local/share/ca-certificates se estiver vazio, pois o pacote ca-certificates criou explicitamente diretório.

Procurei uma resposta definitiva, mas tudo o que consegui encontrar foram longas postagens no fórum e tópicos de e-mail.

    
por livingstaccato 07.02.2013 / 21:26

2 respostas

1

Adicione o script postrm :

#!/bin/sh

set -e

case "$1" in
  purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
    # Recreate the /usr/local/share/ca-certificates directory, since we are
    # ignoring Debian Policy by intentionally installing here. Removal of
    # ca-certificates-local removes this directory if empty.
    if [ ! -e /usr/local/share/ca-certificates ]; then
        if mkdir /usr/local/share/ca-certificates 2>/dev/null; then
            chown root:staff /usr/local/share/ca-certificates
            chmod 2775 /usr/local/share/ca-certificates
        fi
    fi
;;

*)
    echo "postrm called with unknown argument \'$1'" >&2
    exit 1
;;
esac

#DEBHELPER#

exit 0

Este código é de ca-certificates-local :

This is an example stub source package that includes a dummy CA certificate in the local/ directory. Remove the dummy certificate, copy your trusted local root CA (in PEM format with the filename ending in ".crt") to the local/ directory, edit files in the debian/ directory as desired, and build your custom package.

Veja LEIA-ME , Etapas para criar sua CA raiz local personalizada pacote deste exemplo

Assim, a maneira rápida de criar e instalar esses pacotes:

git clone git://anonscm.debian.org/collab-maint/ca-certificates.git ~/ca-certificates
cd ~/ca-certificates/examples/ca-certificates-local/
rm local/Local_Root_CA.crt
cp <path-to-your-cert> local/
# edit debian/control: change package-name, description, etc
# install build dependencies: http://unix.stackexchange.com/questions/177505/how-to-install-parse-build-dependencies-from-debian-control/211319#211319
dpkg-buildpackage
dpkg -i ../<package-name-version>.deb
    
por 11.07.2015 / 19:15
1

Instale em um caminho local diferente e escreva um script postinst para criar o diretório em /usr/local e copiar os arquivos lá.

Como você pode imaginar, isso provavelmente viola tanto a letra quanto o espírito da política do Debian. Mas é sua rede, suas regras, seus usuários (e suas soluções fáceis de descobrir).

Para uma melhor usabilidade, você poderia marcar esses arquivos como arquivos de configuração para que pelo menos eles sejam removidos se você limpar o pacote, mas permaneça se você simplesmente desinstalá-lo.

Resumindo, os arquivos dpkg não sabem, não podem ser removidos.

    
por 07.02.2013 / 22:29