Sylvain LE GALL wrote:

Bonjour,

On Sat, May 08, 2004 at 04:33:39PM +0200, JusTiCe8 wrote:
Bonjour,

attention risque d'apparition d'un gros troll m�chant pas beaux, j'aurai pr�venu ;).


Pkoi un troll ? Ca me parait un tr�s bonne question, qui n'a pas de
raison de faire un troll.

en raison de la rivalit� sous jacente Gnome/KDE ;)

Je me demandais si quelqu'un parmi vous pouvez m'expliquer le pourquoi du comment de la pr�sence des diff�rentes libpngx-dev (x= ,2,3), leur utilit� et la raison pour laquelle un paquet A utilise une version y plut�t que z (avantages/inconv�nients).

Aussi, et c'est la que c'est le plus emb�tant, c'est que par un esprit plus que tordu et, �videmment ;), par le plus grand des hasard, les libs qt3 (kde) d�pendent d'une version (libpng-dev) et les lib gtk (gnome) d'une autre (libpng2-dev), ces 2 versions �tant conflictuelles.

Pour ma part, je pense que c'est une ab�rration de voir une chose pareil et c'est plus que sao�lant de devoir vir� des libs de dev qt pour compiler une appli gtk et vice-versa. Surtout que la solution du chroot-ing me parait un peu lourde dans ce genre de cas.


Ben en fait c'est tr�s simple,
C'est une question d'API. Les API de libpngX et libpngY ( X != Y ) sont
incompatibles ( je ne parles pas des paquets de dev ). La c'est tr�s
simple, puisque le fichier qui contient ces API ( � savoir les .so )
portent la marque de la version ( .X ou .Y + dans le fichier ) et son
g�r� par ld.

Donc pour les librairies y a pas de pb.

En revanche, et c'est la que ca se corse, les API des fichiers header
sont aussi diff�rents, mais peuvent ne pas l'�tre suffisament pour
emp�cher une compil ( ie g�n�ralement le cas quand une fonction initX()
faisait A + B et que pour des raisons quelconques elle fait plus que A
mais il faut faire B quand m�me � la main, ca se voit pas, mais ca fait
un SIGSEGV ). Et la, c'est rare que le fichiers headers porte la marque de leur version, ou plutot c'est compliqu� qu'il porte la marque de leur version : - les fichiers headers sont souvent dans /usr/include/ ( png.h par ex )
- tous les progs qui utilisent un header l'utilisent explicitement ( ou
 presque ) #include <png.h>

Donc si les headers port� la marque de leur version, comme avec ld, ca
serait bien, mais il faudrait une certaines forme de gestion de la
version ( note ca existe, ca s'appelle pkgconfig, avec lequel tu fais
pkgconfig "gtk2.0 > 2.0.0" par exemple" ). La plupart des programmes
n'utilisant pas ce type de chose, ben on se trouve dans la n�cessit�
d'avoir recour � des libs exclusives ( parcequ'elles ont le meme fichier
header qu'elles installent au meme endroit ).
Note : ce type de probleme peut se r�soudre avec des bons
configure/config.h/Makefile... Mais pour penser � tous et faire des
programmes parfait c'est difficile.

Voila ma r�ponse -- peut etre fausse
fausse je ne pense pas, mais qui ne r�pond pas � mes questions plut�t.

Cordialement Sylvain Le Gall
A+,

 J8.

Répondre à