Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2 3 4
Avatar
Bzzz
On Sun, 26 Jan 2014 02:33:15 +0100
Francois Lafont wrote:

Bon, après, il est indiqué qu'un paquet peut quand même cr éer
des répertoires vides si j'ai bien tout compris.



Non, il est indiqué qu'il est interdit de créer des DIRs
tels que: /usr/local/<kékchoz>, mais qu'il est légal de
créer /usr/local/*/<kékchoz> ET qu'un pkg qui contient
<kékchoz> _doit_ le supprimer s'il est vide lors de
la désinstallation.

Ça précise aussi que /usr/local/ étant susceptible d'êt re
monté R/O, les scripts inst&uninst ne doivent pas planter.

Et pour finir, ça explique que comme /usr/local/*/ est la
chasse gardée de l'admin, un pkg ne doit pas _compter_ sur
des fichiers pré-installés ici.

En bref, absolument rien ne s'oppose à ce que la hiérarchie
/usr/local/*/ soit choisie en lieu et place de /usr/*/.

Ce qui apporte une certaine logique, aussi bien dans l'esprit
de l'admin que dans celui de l'utilisateur:
/usr/local/*/ = alpha|bêta|maison(non-distribué),
/usr/*/ = stable|distribué.

--
* Clara has joined #XCHat
<Clara> bonjour tout le monde
<jojo> bonjour :)
<christophe> euh Clara...Morgane ? ^^
<Clara> nan arretez sa devient lourd , je ne suis pas chanteuse

--
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
Francois Lafont
Bonjour,

Le 26/01/2014 13:24, Bzzz a écrit :
On Sun, 26 Jan 2014 02:33:15 +0100
Francois Lafont wrote:

Bon, après, il est indiqué qu'un paquet peut quand même créer
des répertoires vides si j'ai bien tout compris.



Non,



C'est vrai que ma lecture a été vraiment superficielle.
Malgré tes précisions, tout n'est pas encore clair à 100 %
pour moi. J'indique ci-dessous ce qui coince pour moi.

il est indiqué qu'il est interdit de créer des DIRs
tels que: /usr/local/<kékchoz>, mais qu'il est légal de
créer /usr/local/*/<kékchoz>



Ok, mais le « * » dans ton chemin doit correspondre à
un répertoire qui existe déjà sur le système (genre « bin »
par exemple) ou bien à un répertoire listé dans FHS section
4.5 (pas réussi à trouver), sans quoi, ça voudrait dire que
le paquet a créé un répertoire /usr/local/<kékchoz> ce qui
est interdit. J'ai bon ?

Enfin, je me trompe peut-être car mon niveau en anglais
est vraiment plus que moyen, mais quand je lis ça :

« However, the package may create *empty* directories below /usr/local
so that the system administrator knows where to place site-specific files.
These are not directories in /usr/local, but are children of directories in
/usr/local. These directories (/usr/local/*/dir/) should be removed on
package removal if they are empty. »

je comprends qu'un package peut créer un répertoire
/usr/local/<bidul>/<kékchoz> (à condition que <bidul>
existe déjà ou soit dans FHS) mais que le <kékchoz> doit
être vide. C'est correct ?

En bref, absolument rien ne s'oppose à ce que la hiérarchie
/usr/local/*/ soit choisie en lieu et place de /usr/*/.



Ben perso, j'ai compris qu'à part créer des répertoires
vides, on ne peut pas faire grand chose, mais j'ai sans
doute mal compris. Car franchement, je trouve le texte
quand même pas super clair.

Merci pour tes précisions.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/lc35ma$973$
Avatar
Bzzz
On Sun, 26 Jan 2014 15:22:14 +0100
Francois Lafont wrote:


Ok, mais le « * » dans ton chemin doit correspondre à
un répertoire qui existe déjà sur le système (genre « bin »
par exemple) ou bien à un répertoire listé dans FHS section
4.5 (pas réussi à trouver), sans quoi, ça voudrait dire que
le paquet a créé un répertoire /usr/local/<kékchoz> c e qui
est interdit. J'ai bon ?



Vi.

« However, the package may create *empty* directories
below /usr/local so that the system administrator knows where to
place site-specific files. These are not directories
in /usr/local, but are children of directories in /usr/local.
These directories (/usr/local/*/dir/) should be removed on package
removal if they are empty. »

je comprends qu'un package peut créer un répertoire
/usr/local/<bidul>/<kékchoz> (à condition que <bidul>
existe déjà ou soit dans FHS) mais que le <kékchoz> doit
être vide. C'est correct ?



Nan, ça veut dire que le pkg _peut_ créer un/des DIRs dans
/usr/local/*/ mais _sans_ toucher à '*'; ergo, on ne touche
pas à l'arborescence jusqu'au 3ème niveau.

C'est qqch qui est cassé par exemple par adobe avec acrobat
reader (mais bon, ça, on s'en serait douté), qui brise le
FHS en créant: /usr/local/Adobe (et d'ailleurs, le 'A' pète
aussi une autre règle (IIRC) qui stipule que les noms
_doivent_ rester en minuscules; au moins pour des pkgs).

Ben perso, j'ai compris qu'à part créer des répertoires
vides, on ne peut pas faire grand chose, mais j'ai sans
doute mal compris.



Tapakompry:

if pkg.écrit.nawak(/usr/local) then
call R.Stallman -> instant(excommunication)+segfault
elseif pkg.écrit.nawak(/usr/local/*/) then
call debian.user.french -> say(jèunouvopakajkilèbôét ou9)
endif

traduction:
tu peux tout à fait packager en envoyant
tes dirs+fichiers dans /usr/local/*/ ('*' représentant
les dirs existant de base), par contre, c'est interdit
de créer/benner quoique ce soit directement dans /usr/local/

Car franchement, je trouve le texte
quand même pas super clair.



Ben si, il est limpide pourtant.

--
* Terminator has joined
<Terminator> Sarah Connor?
<Jo> oO
<sten> Non, c'est le chan d'à coté.
* Terminator has left
<sten> ...

--
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
Francois Lafont
Le 26/01/2014 15:40, Bzzz a écrit :

« However, the package may create *empty* directories
below /usr/local so that the system administrator knows where to
place site-specific files. These are not directories
in /usr/local, but are children of directories in /usr/local.
These directories (/usr/local/*/dir/) should be removed on package
removal if they are empty. »

je comprends qu'un package peut créer un répertoire
/usr/local/<bidul>/<kékchoz> (à condition que <bidul>
existe déjà ou soit dans FHS) mais que le <kékchoz> doit
être vide. C'est correct ?



Nan, ça veut dire que le pkg _peut_ créer un/des DIRs dans
/usr/local/*/ mais _sans_ toucher à '*'; ergo, on ne touche
pas à l'arborescence jusqu'au 3ème niveau.



Ok, je comprends très bien ce que tu m'expliques. C'est juste
que je ne pige pas le « empty » dans la phrase :

« However, the package may create *empty* directories ... »

"Le paquet peut créer des répertoires *vides*", c'est pas la
bonne trad ?

Ben perso, j'ai compris qu'à part créer des répertoires
vides, on ne peut pas faire grand chose, mais j'ai sans
doute mal compris.



Tapakompry:



Oui, apparemment.

if pkg.écrit.nawak(/usr/local) then
call R.Stallman -> instant(excommunication)+segfault
elseif pkg.écrit.nawak(/usr/local/*/) then
call debian.user.french -> say(jèunouvopakajkilèbôétou9)
endif

traduction:



Ouf ! :)

tu peux tout à fait packager en envoyant
tes dirs+fichiers dans /usr/local/*/ ('*' représentant
les dirs existant de base), par contre, c'est interdit
de créer/benner quoique ce soit directement dans /usr/local/



Ok.

Car franchement, je trouve le texte
quand même pas super clair.



Ben si, il est limpide pourtant.



C'est sûrement mon niveau d'anglais qui me trahit encore
une fois. Je butte sur le « empty ». Bref, ce que tu me
dis je le comprends, le texte de la Debian Policy en
revanche non.

Merci pour ton aide.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/lc39r3$jos$
Avatar
Bzzz
On Sun, 26 Jan 2014 16:33:03 +0100
Francois Lafont wrote:


Ok, je comprends très bien ce que tu m'expliques. C'est juste
que je ne pige pas le « empty » dans la phrase :

« However, the package may create *empty* directories ... »

"Le paquet peut créer des répertoires *vides*", c'est pas la
bonne trad ?



N'exagérons rien, il suffisait de copier/coller le § dans
http://translate.google.com pour obtenir une traduction
compréhensible:

"Toutefois, le package peut créer des répertoires vides
sous /usr/local afin que l'administrateur système sait
où placer les fichiers spécifiques au site.
Ce ne sont pas des répertoires dans /usr/local, mais sont
des enfants de répertoires dans /usr/local.
Ces répertoires (/usr/local/*/dir/) devraient être supprimés
sur la suppression de paquets s'ils sont vides" (SIC).

À toutes fins utiles, il existe une autre façon de faire:
passer par un fichier tar…

--
<Doo^away> j'ai fait peur a mon chat en pétant..
<Doo^away> c'est dans ces moments là que je ressens
le mieux ma propre puissance

--
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
Francois Lafont
Bzzz vraiment je ne comprends la traduction que tu me donnes
(en revanche ton interprétation je l'ai bien comprise). Voir
ci-dessous :

Le 26/01/2014 16:45, Bzzz a écrit :

Ok, je comprends très bien ce que tu m'expliques. C'est juste
que je ne pige pas le « empty » dans la phrase :

« However, the package may create *empty* directories ... »

"Le paquet peut créer des répertoires *vides*", c'est pas la
bonne trad ?



N'exagérons rien, il suffisait de copier/coller le § dans
http://translate.google.com pour obtenir une traduction
compréhensible:

"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).

sous /usr/local afin que l'administrateur système sait
où placer les fichiers spécifiques au site.
Ce ne sont pas des répertoires dans /usr/local, mais sont


^^
On parle bien des répertoires vides précédents.

des enfants de répertoires dans /usr/local.



Ok, ça se présice, ces répertoires vides sont des
répertoires enfants de répertoires dans /usr/local/,
des trucs du genre /urs/local/truc/machin en somme.

Ces répertoires (/usr/local/*/dir/) devraient être supprimés


^^^
Il s'agit toujours des répertoires vides précédents

sur la suppression de paquets s'ils sont vides" (SIC).



Vraiment désolé, il n'y a un truc que je ne pige pas
car de cette traduction je comprends que les répertoires
/usr/local/*/dir/ sont des répertoires vides.

Ce n'est pas contre toi Bzzz bien sûr. Au contraire,
j'ai bien compris tes propos mais pour moi ça ne colle
pas avec ce que dit le texte. Ceci étant je dois être
un peu fatigué. Encore désolé.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/lc3f3c$bpb$
Avatar
Bzzz
On Sun, 26 Jan 2014 18:02:48 +0100
Francois Lafont wrote:


> "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 *>

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"

Disons que c'est l'inverse de ce que ça pourrait être si
c'était le contraire de la même chose.
--
<Pérus> Punaise je me laverai plus souvent les cheveux...
<Darky> T'as des poux, Pérus ?

--
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
Sylvain L. Sauvage
Le dimanche 26 janvier 2014 18:02:48 Francois Lafont a écrit :
[… blabla répertoires vides blabla …]



Les paquets Debian sont destinés à être installés dans /usr.
Un paquet qui s’installerait dans /usr/local n’a pas de sens
dans l’optique d’une distribution. (Ça en a pour u n paquet qui
ne fait pas partie de la distribution, un paquet « local ».)
Donc les docs Debian ne parlent pas de mettre des fichiers dans
/usr/local.

Les docs parlent quand même de /usr/local parce que cette
hiérarchie peut servir à installer des bibliothèques, de s
greffons, des applications, des documents, etc., qui ne sont pas
empaquetés dans la distribution mais qui peuvent être utilisà ©s
par (ou modifier, compléter…) des applications qui sont, e lles,
empaquetées. P.ex., dans /usr/local/share/texmf/…, on peut
mettre des classes LaTeX qui seront accessibles par le programme
latex empaqueté. Dans ce cadre, il semble donc logique que les
paquets qui peuvent chercher des fichiers dans /usr/local/
créent eux-mêmes les bons répertoires, ne serait-ce que pour
guider l’admin sur l’endroit où placer ces trucs ( p.ex.
/usr/local/share/texmf et pas (plus) /usr/local/lib/texmf).

Si tu fais un paquet avec l’objectif de l’intégr er dans la
distribution, tu ne mettras pas de fichiers dans /usr/local. Si
tu fais un paquet qui va rester local, tu peux mettre tes
fichiers dans /usr/local ; c’est fait pour ça. Le fait de passer
par un paquet pour installer des trucs dans /usr/local est alors
juste un moyen pratique (plus pratique qu’un tarball).

--
Sylvain Sauvage

--
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
Stéphane GARGOLY
Bonjour à tous les utilisateurs et développeurs de Debian :

Le 26/01/2014, Sylvain L. Sauvage a écrit :

Le dimanche 26 janvier 2014 18:02:48 Francois Lafont a écrit :
[… blabla répertoires vides blabla …]





C'est affolant qu'un répertoire vide peut amener à une si longue discus sion. :-)

Cordialement et à bientôt,

Stéphane.

--
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/CAAqHXE7EcP8eyzZXTgiCmf8O9i69L_=
Avatar
Francois Lafont
Le 26/01/2014 18:29, Sylvain L. Sauvage a écrit :
Le dimanche 26 janvier 2014 18:02:48 Francois Lafont a écrit :
[… blabla répertoires vides blabla …]





Oui désolé si ce n'est pas passionnant, je reconnais.
Mais j'espère qu'il n'y a pas de mépris quand même derrière
ce commentaire.

Les paquets Debian sont destinés à être installés dans /usr.
Un paquet qui s’installerait dans /usr/local n’a pas de sens
dans l’optique d’une distribution. (Ça en a pour un paquet qui
ne fait pas partie de la distribution, un paquet « local ».)



Ok.

Donc les docs Debian ne parlent pas de mettre des fichiers dans
/usr/local.

Les docs parlent quand même de /usr/local parce que cette
hiérarchie peut servir à installer des bibliothèques, des
greffons, des applications, des documents, etc., qui ne sont pas
empaquetés dans la distribution mais qui peuvent être utilisés
par (ou modifier, compléter…) des applications qui sont, elles,
empaquetées. P.ex., dans /usr/local/share/texmf/…, on peut
mettre des classes LaTeX qui seront accessibles par le programme
latex empaqueté. Dans ce cadre, il semble donc logique que les
paquets qui peuvent chercher des fichiers dans /usr/local/
créent eux-mêmes les bons répertoires, ne serait-ce que pour
guider l’admin sur l’endroit où placer ces trucs (p.ex.
/usr/local/share/texmf et pas (plus) /usr/local/lib/texmf).



Oui, et il me semble que ce sont justement des répertoires
vides à chaque fois.

Si tu fais un paquet avec l’objectif de l’intégrer dans la
distribution,



Je n'ai pas cette prétention, il s'agit de paquets locaux donc.
Mais mon point de réflexion de départ, ce n'est pas vraiment
la distinction "paquet destiné à la distrib" vs paquet « local »,
mais plutôt de savoir ce qui est respectueux de la debian
policy et ce qui ne l'est pas.

tu ne mettras pas de fichiers dans /usr/local. Si
tu fais un paquet qui va rester local, tu peux mettre tes
fichiers dans /usr/local ; c’est fait pour ça. Le fait de passer
par un paquet pour installer des trucs dans /usr/local est alors
juste un moyen pratique (plus pratique qu’un tarball).



Ok. Il me semble simplement que :

- selon la politique Debian, un paquet peut créer des répertoires
vides /usr/local/*/machin à condition que /usr/local/truc/
existe déjà ou fasse partie de la FHS.

- et si le répertoire n'est pas vide ce n'est plus respectueux
de la Debian policy.

Je me trompe ?

Je remarque par exemple que si je me fais rapidement un paquet
« pipeau » via debhelper (qui sont les outils recommandés pour
faire des paquets qui respectent la politique Debian si j'ai
bien compris [1]) et que je fais en sorte que ce paquet installe
un répertoire vide /usr/local/lib/mon-paquet/ (par exemple) alors
ça passe au niveau du build. Si jamais je veux que mon paquet
fournisse des fichiers dans ce répertoire ça ne passe plus (via
les debhelpers toujours). J'obtiens :

dh_usrlocal: debian/mon-paquet/usr/local/lib/mon-paquet/fichier is not a directory
rmdir: failed to remove `debian/mon-paquet/usr/local/lib/mon-paquet': Directory not empty
dh_usrlocal: rmdir debian/mon-paquet/usr/local/lib/mon-paquet returned exit code 1

Après, bien sûr on peut toujours faire un override de la
cible dh_usrlocal pour ne pas avoir (on n'est tjs libre
de faire ce qu'on veut bien sûr) mais il me semble que
ça ne respecte plus la debian policy.

[1] même si pour moi, les debhelper représentent davantage
un moyen de faire des paquets de manière « commode » car
ils vont gérer pour moi des tâches auto lors du build etc.

--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/lc3ld2$i2l$
1 2 3 4