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

Faire un paquet Debian avec une dépendance en fonction de la distribution

5 réponses
Avatar
Francois Lafont
Bonjour à tous,

J'ai fait un petit package Debian « perso » assez simple, il consiste
seulement à placer des fichiers dans l' arborescence du système, en
l'occurrence des scripts shell très basiques qui, a priori, marchent
sous Lenny, Squeeze et Wheezy. Mais mon souci est que j'ai une
dépendance en fonction de la distribution. En effet, dans mes scripts
j'ai besoin de la commande timeout. Seulement voilà :

- sur Squeeze et Wheezy, timeout appartient au paquet core-utils;
- mais sur Lenny, il appartient au paquet timeout.

Du coup, dans le champ "Depends" du fichier debian/control de mon
paquet, je voudrais indiquer la dépendance vers le paquet timeout si on
est sur Lenny et vers core-utils sinon.

Je n'ai pas trouvé comment faire sur les docs de Debian. J'ai vu qu'on
pouvait faire des dépendances en fonction de l'architecture comme dans :

Depends: foo [i386], bar [amd64]

mais je n'ai pas trouvé comment faire le même genre de chose en fonction
du nom de la distribution.

1) Est-ce possible ?

2) Si ce n'est pas possible, suis-je obligé de faire 2 paquets
différents (un pour Lenny et un pour les autres distributions) ? J'avoue
que j'aimerais éviter. Peut-être y a t-il une astuce pour éviter d'en
arriver là ?

Merci d'avance.

--
François Lafont

5 réponses

Avatar
Nicolas George
Francois Lafont , dans le message <521f702f$, a
écrit :
1) Est-ce possible ?



Je pense que non. Les dépendances ne savent pas dans quelles distributions
elles « sont », ne serait-ce que parce qu'on peut mélanger des paquets de
plusieurs distributions.

2) Si ce n'est pas possible, suis-je obligé de faire 2 paquets
différents (un pour Lenny et un pour les autres distributions) ? J'avoue
que j'aimerais éviter. Peut-être y a t-il une astuce pour éviter d'en
arriver là ?



Exprime ton besoin tel qu'il est : tu as besoin de timeout, qui est soit
dans le paquet timeout, soit dans un paquet coreutils de version assez
récente, donc tu écris « coreutils (>= 7.1-1) | timeout » (après avoir bien
vérifié que c'est la version 7.1-1 la première qui te convient).
Avatar
Francois Lafont
Le 29/08/2013 18:07, Nicolas George a écrit :

1) Est-ce possible ?



Je pense que non. Les dépendances ne savent pas dans quelles distributions
elles « sont », ne serait-ce que parce qu'on peut mélanger des paquets de
plusieurs distributions.



Ok, je me doutais de cette réponse négative étant donné que je ne voyais
rien là-dessus sur les docs de Debian. Ton argument confirme la chose
définitivement. :-)

2) Si ce n'est pas possible, suis-je obligé de faire 2 paquets
différents (un pour Lenny et un pour les autres distributions) ? J'avoue
que j'aimerais éviter. Peut-être y a t-il une astuce pour éviter d'en
arriver là ?



Exprime ton besoin tel qu'il est : tu as besoin de timeout, qui est soit
dans le paquet timeout, soit dans un paquet coreutils de version assez
récente, donc tu écris « coreutils (>= 7.1-1) | timeout » (après avoir bien
vérifié que c'est la version 7.1-1 la première qui te convient).



Super. Merci beaucoup pour cette « astuce ». Sincèrement, je n'aurais pas
pensé à exprimer les choses ainsi tant j'étais focalisé sur le nom de la
distribution.

PS: c'est quoi la subtilité avec le tiret (-) dans le numéro de version ?
En général, on a plutôt des trucs comme "7.1.1" par exemple.

--
François Lafont
Avatar
Francois Lafont
Le 30/08/2013 00:40, Francois Lafont a écrit :

PS: c'est quoi la subtilité avec le tiret (-) dans le numéro de version ?
En général, on a plutôt des trucs comme "7.1.1" par exemple.



J'ai rien dit, c'est ici:

http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version

Si j'ai bien compris dans "7.1-1", 7.1 est le numéro de version du logiciel
lui-même qui est packagé et le "-1" correspond au numéro de version du paquet
lui-même pour cette version du logiciel. Après, il me semble bien avoir vu
des numéros de version encore plus exotiques que ce genre là...


--
François Lafont
Avatar
Sergio
Le 29/08/2013 17:57, Francois Lafont a écrit :
Bonjour à tous,

J'ai fait un petit package Debian « perso » assez simple, il consiste seulement à placer des fichiers dans l' arborescence du
système, en l'occurrence des scripts shell très basiques qui, a priori, marchent sous Lenny, Squeeze et Wheezy. Mais mon souci est
que j'ai une dépendance en fonction de la distribution. En effet, dans mes scripts j'ai besoin de la commande timeout. Seulement
voilà :

- sur Squeeze et Wheezy, timeout appartient au paquet core-utils;
- mais sur Lenny, il appartient au paquet timeout.

Du coup, dans le champ "Depends" du fichier debian/control de mon paquet, je voudrais indiquer la dépendance vers le paquet timeout
si on est sur Lenny et vers core-utils sinon.



À quoi ça sert que dans un dépôt il y ait différentes versions en fonction de la distribution ?

Fais des versions différentes pour Lenny, Squeeze et Wheezy...


--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Francois Lafont
Le 30/08/2013 09:01, Sergio a écrit :

À quoi ça sert que dans un dépôt il y ait différentes versions en
fonction de la distribution ?

Fais des versions différentes pour Lenny, Squeeze et Wheezy...



C'est juste que c'est plus pratique de n'avoir qu'un seul paquet
à modifier et à builder le cas échéant. D'autant plus que vraiment,
à part cette histoire de commande timeout, le reste est 100% compatible
entre Lenny, Squeeze et Wheezy. Les scripts shell contenus dans ce
paquets sont très basiques (on a du df, du grep et du sed en gros).

--
François Lafont