Fabrication d'un modeste paquet debian : pb avec la gestion de fichiers « pe rsistants »
8 réponses
Francois Lafont
Bonjour à tous,
Voici mon problème. J'essaye de fabriquer un paquet Debian assez simple
puisqu'au final il ne consiste qu'en des données. Pour faire simple, mon
paquet revient à créer un répertoire mon-paquet/ dans /usr/share/ afin
d'avoir un truc comme ça par exemple :
L'idée c'est que l'administrateur du système n'est pas censé toucher aux
sous-répertoires d1/ et d2/ (ainsi qu'à leur contenu). En revanche,
l'administrateur du système peut modifier le contenu des
sous-répertoires perso1/ et perso2/ comme il le souhaite. Et c'est là
que pour moi les choses se compliquent. Je n'arrive pas à gérer
correctement le fait que les sous-répertoires perso1/ et perso2/ soient
conservés lors d'une réinstallation du paquet ou bien lors d'un upgrade.
Précisément, je voudrais ceci :
---------------------------------------------------------------
1) Lors d'une primo-installation (apt-get install mon-paquet), je
voudrais que perso1/ et perso2/ possèdent un contenu par défaut prévu
par le paquet.
Entre temps, l'administrateur du système modifie perso1/ et perso2/ à sa
guise...
je voudrais que l'administrateur du système retrouve les contenus par
défaut de perso1/ et perso2/ tels qu'ils sont prévus dans le paquet.
---------------------------------------------------------------
J'ai tenté des choses avec les scripts prerm, postrm, preinst, et
postinst en m'aidant de cette page :
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Luc.Habert.00__arjf
Francois Lafont :
En revanche, l'administrateur du système peut modifier le contenu des sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait, donc je ne peux pas t'aider plus.
Francois Lafont :
En revanche, l'administrateur du système peut modifier le contenu des
sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires
perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou
bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais
fait, donc je ne peux pas t'aider plus.
En revanche, l'administrateur du système peut modifier le contenu des sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait, donc je ne peux pas t'aider plus.
Francois Lafont
Le 31/07/2012 15:15, Luc Habert a écrit :
En revanche, l'administrateur du système peut modifier le contenu des sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en rien des fichiers de conf. Il s'agit vraiment de données.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait,
Moi non plus. :-)
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
donc je ne peux pas t'aider plus.
Pas de souci.
-- François Lafont
Le 31/07/2012 15:15, Luc Habert a écrit :
En revanche, l'administrateur du système peut modifier le contenu des
sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en
rien des fichiers de conf. Il s'agit vraiment de données.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires
perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou
bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais
fait,
Moi non plus. :-)
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet
était considéré comme conf et ne disparaissait pas après un « apt-get
remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît
quand même !?
En revanche, l'administrateur du système peut modifier le contenu des sous-répertoires perso1/ et perso2/ comme il le souhaite.
Il vaudrait mieux les mettre sous /etc.
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en rien des fichiers de conf. Il s'agit vraiment de données.
Je n'arrive pas à gérer correctement le fait que les sous-répertoires perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait,
Moi non plus. :-)
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
donc je ne peux pas t'aider plus.
Pas de souci.
-- François Lafont
Luc.Habert.00__arjf
Francois Lafont :
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en rien des fichiers de conf. Il s'agit vraiment de données.
Mouais. J'imagine que l'esprit d'apt serait que chaque admin doive fabriquer un package avec le contenu qu'il veut y mettre, mais c'est de l'arrachage de cheveux. Tu pourrais aussi le mettre dans /usr/local, ça serait toujours moins moche.
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour le spécifier à la création du package, j'ai l'impression qu'il faut mettre un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Francois Lafont :
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en
rien des fichiers de conf. Il s'agit vraiment de données.
Mouais. J'imagine que l'esprit d'apt serait que chaque admin doive fabriquer
un package avec le contenu qu'il veut y mettre, mais c'est de l'arrachage de
cheveux. Tu pourrais aussi le mettre dans /usr/local, ça serait toujours
moins moche.
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet
était considéré comme conf et ne disparaissait pas après un « apt-get
remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît
quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois
installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour
le spécifier à la création du package, j'ai l'impression qu'il faut mettre
un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Ah sans doute, mais dans l'esprit perso1/ et perso2/ ne contiennent en rien des fichiers de conf. Il s'agit vraiment de données.
Mouais. J'imagine que l'esprit d'apt serait que chaque admin doive fabriquer un package avec le contenu qu'il veut y mettre, mais c'est de l'arrachage de cheveux. Tu pourrais aussi le mettre dans /usr/local, ça serait toujours moins moche.
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour le spécifier à la création du package, j'ai l'impression qu'il faut mettre un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Damien Wyart
* (Luc Habert) in fr.comp.os.linux.configuration:
Il vaudrait mieux les mettre sous /etc.
+1
> Je n'arrive pas à gérer correctement le fait que les sous-répertoires > perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou > bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait, donc je ne peux pas t'aider plus.
* Luc.Habert.00__arjf@normalesup.org (Luc Habert) in fr.comp.os.linux.configuration:
Il vaudrait mieux les mettre sous /etc.
+1
> Je n'arrive pas à gérer correctement le fait que les sous-répertoires
> perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou
> bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai
jamais fait, donc je ne peux pas t'aider plus.
Oui, c'est sans doute le plus simple.
Un peu de doc sur le sujet :
http://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/
http://wiki.debian.org/ConfigPackages (indigeste...)
et l'outil ucf qui permet de gérer des conffiles en externe d'un paquet :
http://packages.debian.org/fr/sid/ucf
Sinon une bonne doc sur le packaging en général (n'aborde pas les
conffiles) :
http://www.debian.org/doc/manuals/packaging-tutorial/packaging-tutorial.en.pdf
> Je n'arrive pas à gérer correctement le fait que les sous-répertoires > perso1/ et perso2/ soient conservés lors d'une réinstallation du paquet ou > bien lors d'un upgrade.
Il doit falloir les spécifier comme fichier de conf du package. J'ai jamais fait, donc je ne peux pas t'aider plus.
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour le spécifier à la création du package, j'ai l'impression qu'il faut mettre un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que je mette tous les fichiers/répertoires qui sont dedans dans le fichier DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un problème.)
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il pas ?
Par ailleurs, autre problème : si l'administrateur du système *ajoute* un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme un fichier de conf puisqu'il sera présent dans le conffiles du paquet. Du coup, le fichier "toto" ne va-t-il pas disparaître après un « apt--get remove le-paquet » ?
-- François Lafont
Le 31/07/2012 15:52, Luc Habert a écrit :
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet
était considéré comme conf et ne disparaissait pas après un « apt-get
remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît
quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois
installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour
le spécifier à la création du package, j'ai l'impression qu'il faut mettre
un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui
peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que
je mette tous les fichiers/répertoires qui sont dedans dans le fichier
DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un
problème.)
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il
pas ?
Par ailleurs, autre problème : si l'administrateur du système *ajoute*
un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme un
fichier de conf puisqu'il sera présent dans le conffiles du paquet. Du
coup, le fichier "toto" ne va-t-il pas disparaître après un « apt--get
remove le-paquet » ?
Au départ, je pensais que tous ce qui était dans /etc/ dans un paquet était considéré comme conf et ne disparaissait pas après un « apt-get remove le-paquet ». Je viens de faire un essai et chez moi ça disparaît quand même !?
Non, il y a vraiment une liste de fichiers de conf dans le package. Une fois installé, on la trouve dans /var/lib/dpkg/info/nomdupackage.conffiles. Pour le spécifier à la création du package, j'ai l'impression qu'il faut mettre un fichier «DEBIAN/conffiles» contenant les fichiers de conf un par ligne.
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que je mette tous les fichiers/répertoires qui sont dedans dans le fichier DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un problème.)
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il pas ?
Par ailleurs, autre problème : si l'administrateur du système *ajoute* un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme un fichier de conf puisqu'il sera présent dans le conffiles du paquet. Du coup, le fichier "toto" ne va-t-il pas disparaître après un « apt--get remove le-paquet » ?
-- François Lafont
Francois Lafont
Le 31/07/2012 16:12, Francois Lafont a écrit :
fichier de conf puisqu'il sera présent dans le conffiles du paquet.
^^^^^^^ Il faut lire « puisqu'il ne sera pas présent ».
-- François Lafont
Le 31/07/2012 16:12, Francois Lafont a écrit :
fichier de conf puisqu'il sera présent dans le conffiles du paquet.
^^^^^^^
Il faut lire « puisqu'il ne sera pas présent ».
fichier de conf puisqu'il sera présent dans le conffiles du paquet.
^^^^^^^ Il faut lire « puisqu'il ne sera pas présent ».
-- François Lafont
Damien Wyart
* Francois Lafont in fr.comp.os.linux.configuration:
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que je mette tous les fichiers/répertoires qui sont dedans dans le fichier DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un problème.)
Oui.
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il pas ?
Non, on ne peut pas lister de répertoires ni de caractères jokers (?, *).
Par ailleurs, autre problème : si l'administrateur du système *ajoute* un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme un fichier de conf puisqu'il sera présent dans le conffiles du paquet. Du coup, le fichier "toto" ne va-t-il pas disparaître après un « apt--get remove le-paquet » ?
Non car toto ne sera pas considéré comme faisant partie du paquet donc par précaution le fichier ne sera pas effacé.
Et avec --purge ça va effacer les conffiles mais s'il reste des fichiers, par précaution, /usr/share/mon-paquet/perso1/ et /usr/share/mon-paquet/ ne seront pas supprimés (il y aura un message d'avertissement).
A tester pour être sûr mais je pense que cela fonctionne comme cela.
-- DW
* Francois Lafont <francois.lafont@nospam.invalid>
in fr.comp.os.linux.configuration:
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui
peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que
je mette tous les fichiers/répertoires qui sont dedans dans le fichier
DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un
problème.)
Oui.
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il
pas ?
Non, on ne peut pas lister de répertoires ni de caractères jokers (?, *).
Par ailleurs, autre problème : si l'administrateur du système *ajoute*
un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme
un fichier de conf puisqu'il sera présent dans le conffiles du paquet.
Du coup, le fichier "toto" ne va-t-il pas disparaître après un
« apt--get remove le-paquet » ?
Non car toto ne sera pas considéré comme faisant partie du paquet donc
par précaution le fichier ne sera pas effacé.
Et avec --purge ça va effacer les conffiles mais s'il reste des
fichiers, par précaution, /usr/share/mon-paquet/perso1/ et
/usr/share/mon-paquet/ ne seront pas supprimés (il y aura un message
d'avertissement).
A tester pour être sûr mais je pense que cela fonctionne comme cela.
* Francois Lafont in fr.comp.os.linux.configuration:
Ah en effet, mais ici perso1/ et perso2/ sont des répertoires qui peuvent contenir une bonne cinquantaine de fichiers chacun. Il faut que je mette tous les fichiers/répertoires qui sont dedans dans le fichier DEBIAN/conffiles, c'est ça ? (Si oui, techniquement, ce ne sera pas un problème.)
Oui.
Par exemple un contenu comme celui-ci dans le conffiles ne suffirait-il pas ?
Non, on ne peut pas lister de répertoires ni de caractères jokers (?, *).
Par ailleurs, autre problème : si l'administrateur du système *ajoute* un fichier "toto" dans perso1/, celui-ci ne sera pas considéré comme un fichier de conf puisqu'il sera présent dans le conffiles du paquet. Du coup, le fichier "toto" ne va-t-il pas disparaître après un « apt--get remove le-paquet » ?
Non car toto ne sera pas considéré comme faisant partie du paquet donc par précaution le fichier ne sera pas effacé.
Et avec --purge ça va effacer les conffiles mais s'il reste des fichiers, par précaution, /usr/share/mon-paquet/perso1/ et /usr/share/mon-paquet/ ne seront pas supprimés (il y aura un message d'avertissement).
A tester pour être sûr mais je pense que cela fonctionne comme cela.
-- DW
Luc.Habert.00__arjf
Regarde voir comment sont fichus les packages qui ont un ploum.d dans lequels d'autres packages, mais aussi l'administrateur directement peuvent ajouter des fichiers (de conf/hook, en général). Par exemple, sudo avec /etc/sudoers.d.
Regarde voir comment sont fichus les packages qui ont un ploum.d dans
lequels d'autres packages, mais aussi l'administrateur directement peuvent
ajouter des fichiers (de conf/hook, en général). Par exemple, sudo avec
/etc/sudoers.d.
Regarde voir comment sont fichus les packages qui ont un ploum.d dans lequels d'autres packages, mais aussi l'administrateur directement peuvent ajouter des fichiers (de conf/hook, en général). Par exemple, sudo avec /etc/sudoers.d.