web-dev-qa-db-fra.com

Comment créer un répertoire et en changer le propriétaire avec le paquet deb

J'ai besoin de créer un paquet deb qui créera un répertoire pour les journaux. Je veux créer le répertoire /var/logs/my_package et en changer le propriétaire en my_user.

Dans la documentation il y a des informations que je peux créer le fichier debian/dir. Mais il y a des informations que ce n'est pas la meilleure façon de le faire. Et il n’ya pas d’information sur la manière de changer de propriétaire de répertoire (je pense à placer la commande chown my_user.my_user /var/logs/my_packageit dans le fichier debian/postinst).

Quelle est la méthode recommandée pour créer un répertoire avec le paquet deb?

10
bessarabov

Vous aviez raison, vous avez besoin d'un fichier debian/my_package.postint pour effectuer cette opération:

#!/bin/sh

#DEBHELPER#

set -e

USER="my_user"

mkdir -p /var/log/my_package/    
if id -u $USER > /dev/null 2>&1; then    
    chown ${USER}:${USER} /var/log/my_package/
fi

Note: Le script vérifie si l'utilisateur existe avant d'appeler chown.

8
Sylvain Pineau

Vous n'avez pas besoin de créer un script postinst, mais la solution reste un peu délicate. J'utilise dh wildcard dans debian/rules:

#!/usr/bin/make -f
%:
        dh $@

binary:
        dh $@

qui fait tout le nécessaire. Mais je dois remplacer la propriété de certains dir (appelons ça des données). Donc, je dois faire une exception, j'utilise une directive spéciale (ceci est un exemple):

    override_dh_install:
        dh_install   #calls default *.install and *.dirs installation
        install -d -o www-data -g www-data $(CURDIR)/debian/<package_name>/var/www/<something>/data 

Le répertoire de données n'a pas besoin d'être dans le fichier * .dirs. Mais il y a toujours un truc. Debhelper contient le script dh_fixperms, qui permettrait de redonner la propriété à la racine. Nous devons donc remplacer aussi:

override_dh_fixperms:
    dh_fixperms --exclude data

C'est tout. N'oubliez pas que le répertoire de données ne compte pas comme un fichier de configuration, il sera donc supprimé lors de la suppression du paquet. Si vous devez en faire un fichier, c'est une autre histoire.

3
Marek Šimon