OVH Cloud OVH Cloud

Package perso qui supprime /opt/ suite à un remove

33 réponses
Avatar
Francois Lafont
Bonjour à tous,

Je me suis fait un paqckage perso qui consistait simplement
à déposer des fichiers dans /opt/mon-paquet. Je ne suis pas
un expert en packaging mais je pense que le paquet était fait
à peu près correctement (j'ai mis un fichier mon-paquet.install
dans le répertoire de build debian/ et voilà).

Mais lorsque je faisais un remove (apt-get remove mon-paquet),
le répertoire /opt/ était tout simplement effacé... plus de
/opt/ sur mon système. Ça fait un peu drôle quand même.
Est-ce vraiment normal ?

Au départ, je me suis dit que c'est parce que j'ai un paquet
qui s'installe dans /opt/ et que /opt/ n'est pas fait pour
ça. Mais quand je lis ici :

http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES

« /opt is reserved for the installation of add-on application
software packages. »

Je me dis que que finalement /opt/ est une destination licite
pour un paquet.

Autre point : avant le remove, si je mets un petit fichier dans
/opt/ (via un petit « touch /opt/toto » et qu'ensuite je fais
un remove, j'obtiens :

dpkg: warning: unable to delete old directory '/opt': Directory not empty

Ouf, ça va. Debian est gentil avec moi et n'ira pas jusqu'à
m'effacer des fichiers autres que ceux du paquet. Donc rien
de très grave au final.

J'ai trouvé ce message sur le web :
https://lists.debian.org/debian-devel/2006/03/msg00214.html

où en gros il est expliqué que tout ça est normal et que
si j'ai bien compris :

lors d'un remove d'un paquet si
1. plus aucun paquet installé sur le système ne n'a de fichier
recensé dans un répertoire A et
2. qu'il s'avère que ce répertoire A devient totalement vide
suite à la suppression du paquet
alors dpkg détruit le répertoire A. Enfin, si au moins une
des deux conditions 1 et 2 n'est pas remplies alors le
répertoires A est alors conservé (avec un petit warning
dans le cas où 1 est remplie mais pas 2).

Bref, tout ça pour dire qu'après quelques recherches, ce que je
trouve penche plutôt pour le fait que la disparition de /opt/
soit finalement « normale ». Mais en même temps, ça j'ai du mal
à me résoudre au fait que ça soit normal de ne plus avoir de /opt/
sur mon système après un remove, alors que /opt/ fait quand même
partie du "Filesystem Hierarchy Standard". Ça me semble bien
étrange.

En pratique, on peut toujours s'arranger pour recréer
le répertoire /opt/ dans le script postrm bien sûr. Et,
toujours en pratique, le problème se résout sans difficulté.
Mais ce qui m'intéresse, c'est surtout de savoir si ce
phénomène est normal ou non et si ce n'est pas normal,
qu'elle est mon erreur dans l'histoire.

Merci de vos lumières.

--
François Lafont

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/lbr0br$9fd$1@ger.gmane.org

3 réponses

1 2 3 4
Avatar
Bzzz
On Sun, 26 Jan 2014 22:50:08 +0100
Francois Lafont wrote:

De ton côté, est-ce que tu voudras bien admettre alors que
dans ce lien :

http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.1.2

il s'agissait bel et bien de répertoires vides et que mon anglais
n'est finalement pas si catastrophique que ça ? ;-)



Absolument, sauf que tu ne peux appliquer cela à un pkg hors-distro.

--
If your hands are clean and your cause is just and your demands are
reasonable, at least it's a start.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
aishen
Le 26/01/2014 20:58, Francois Lafont a écrit :
Le 26/01/2014 18:17, Bzzz a écrit :

"Toutefois, le package peut créer des répertoires vides


^^^^^
ok, ces répertoires sont vides (répertoires pas encore
super bien identifiés à ce stade, on sait juste qu'ils
sont « sous /usr/local » ce que je trouve assez ambigu).


C'est parce que la formulation est faire en 2 fois:
1- des dirs vides dans /usr/local
2- "Ce ne sont pas des répertoires dans /usr/local,
mais sont des enfants de répertoires dans /usr/local."
Donc: /usr/local/*/<enfant de *>


Mouais, suis pas convaincu.
L'exemple donné par Sylvain avec TeXLive m'incite vraiment
à penser qu'il s'agit des répertoires vides au final.
Je parle de ce lien bien sûr :
http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.1.2

Par ailleurs, ils peuvent être pleins, puisque:
"Ces répertoires (/usr/local/*/dir/) devraient être supprimés
sur la suppression de paquets s'ils sont vides"


Oui mais rempli par l'administrateur du système. Toujours
en reprenant l'exemple de Sylvain avec TeXLive qui va
créer le répertoire vide /usr/local/share/texmf/ afin
que l'admin du système puisse y mettre ses classes etc.
Mais le paquet TeXLive lui n'y déposera rien. Et bien
sûr, lors d'un remove/purge, si le répertoire est non
vide (parce que l'admin y a mis des classes), celui-ci
n'est pas supprimé afin que l'admin ne perde pas son
travail.


J'avais installé project-neon qui est crée dans opt puis je l'ai effacé,
j'ai remarqué que opt avait été effacé, c'est la première fois que ça se
passe, car avant opt n'était pas effacé. Par contre entre temps j'ai
installé teamviewer et la seconde fois le répertoire opt n'a pas été effacé.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
maderios
On 01/26/2014 09:03 PM, Francois Lafont wrote:
Bonsoir,

Le 26/01/2014 10:45, maderios a écrit :

On aurait pu mettre ton paquet dans le répertoire "/usr/local".



Là, je dis non. ;-)

D'après ce que j'ai compris de quelques lectures ici ou là,
aucun paquet ne doit installer quoi que ce soit dans /usr/local/,


Bonjour
Hum... C'est nouveau ? Chez moi:
/usr/local/src répertoire pour les sources à compiler, sauf celles du
noyau (dans /usr/src)
Tout ce qui est compilé maison (sauf le noyau) est installé dans:
/usr/local/bin
/usr/local/share
/usr/local/lib
etc, etc,....



Et pour construire tes paquets « maisons », tu utilises les
debhelpers ? Si oui, tu redéfinis la cible dh_usrlocal dans
ton fichier ./debian/rules ?


Nous sommes sur deux longueurs d'ondes différentes. La tienne utilise la
démarche Debian officielle, la mienne, non.
Au départ, c'est pareil: compilation des sources avec ./configure &make.
Ensuite, j'utilise Checkinstall qui construit automatiquement un .deb.
Par ailleurs, avec cette méthode, on peut choisir ou laisser par défaut
les répertoires d'installation.
Concernant la "Debian policy", je pense qu'elle est indispensable
concernant le système mais inutile et compliquée concernant quelques
paquets compilés ici et là, n'affectant pas le système (ex Mnogosearch,
G'mic). C'est une démarche comme une autre, je n'en fais pas une
religion. Si certains trouvent leur bonheur avec la méthode Debian
officielle, tant mieux...

On peut également en mettre dans /opt
/opt/bin
etc, etc,...
Ce n'est qu'une histoire de conventions.



Oui, bien sûr, conventions que chacun est libre de respecter
ou non, pas de problème. Après justement je m'interrogeais
sur la convention telle que définie par la Debian policy.
Au départ, je pensais qu'un paquet respectueux d'elle ne
devait strictement rien dans /usr/local ce qui était faux.






--
Maderios


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2 3 4