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

Gestion des dépendances

38 réponses
Avatar
JEf
Bonjour,

J'aimerais avoir votre avis sur la gestion des dépendances de MacOS
comparée à celle de linux.

Sous Mac (en applications natives), il n'y a pas de dépendances, toutes
les librairies nécessaires à l'appli sont dans le folder .app de
l'application.

Sous linux, il y a une gestion complexe des dépendances.

Donc sur Mac pour installer une appli on la copie sur son disque dur et
on lui donne les autorisations d'exécution (la demande de mot de passe à
l'install dans le dossier /Applications).

Sous Linux vous savez comment cela fonctionne.

Un exemple ou cela serait utile :
- Ubuntu server 9.10
- python 2.6 (version installée par défaut)
- apt-get fail2ban

On démarre fail2ban, ça fonctionne pas. La dépendance est python 2.5. La
2.6 étant installée, pas de prob pour le gestionnaire de paquet par
contre fail2ban ne fonctionne pas bien.

Donc il faut faire en plus
- apt-get install python2.5
- modifier les fichiers de fail2ban pour utiliser cette version

Ce ne serait pas arrivé sur Mac.

Alors oui cela consommera plus de disque à la mac qu'à la linux. Et plus
de ram. Mais au prix de la ram et des disques, est-ce vraiment un problème ?

TIA,

JEf

10 réponses

1 2 3 4
Avatar
Nicolas George
JEf wrote in message :
Cette merde est bien utile je trouve.



À la lumière du reste de tes vues sur l'informatique, ça me confirme dans
mon opinion.

Qui parle de dev mac ? Quand je prends libpurple utilisée dans les softs
d'IM, elle n'est pas développée sur mac à la base.



Quoi la libpurple ?

Oui c'est ça avoir le choix. Soit tu prends le binaires et tu fais
confiance au dev de fournir un truc qui fonctionne. Soit tu prends les
sources et tu compiles toi-même. Un peu comme sous linux quoi :-)



Non, sous Linux, on fait confiance aux développeurs pour fournir les sources
d'un logiciel intéressant, et aux packageurs pour en faire un truc qui
marche, maintenu sur le long terme et mis à jour de manière cohérente. Deux
boulots différents, avec des enjeux bien séparés.

Je prends un exemple simple : une bibliothèque pour un protocole réseau, et
quatre ou cinq applications d'origines diverses qui l'utilisent. Un bug de
sécurité est découvert dans la bibliothèques ; les développeurs de la
bibliothèque publient immédiatement une version corrigée, totalement
compatible avec l'ancienne.

Tu veux compter sur le fait que tous les groupes qui ont publié une
application utilisant cette bibliothèque vont (1) suivre les alertes de
sécurité et (2) avoir une infrastructure de mises à jour impératives ? Même
si c'est le cas, c'est du gaspillage d'efforts considérable de refaire
plusieurs fois la même chose ainsi. Et en pratique, plus de la moitié
n'auront pas fait cet effort, et tu te retrouveras avec des applications
trouées sur ton système.
Avatar
JEf
On 10/08/10 12:30, Nicolas George wrote:
JEf wrote in message:
Cette merde est bien utile je trouve.



À la lumière du reste de tes vues sur l'informatique, ça me confirme dans
mon opinion.

Qui parle de dev mac ? Quand je prends libpurple utilisée dans les softs
d'IM, elle n'est pas développée sur mac à la base.



Quoi la libpurple ?



Si je prends la dernière version de libpurple avec les sources stables
de Adium, ça ne fonctionne pas. Soit je prends la version stable d'adium
avec la libpurple de la même époque (avec les backports pour supporter
les changements intervenus sur le réseau MSN) soit je prends la version
beta avec la dernière version de libpurple (et là ça fonctionne).


Oui c'est ça avoir le choix. Soit tu prends le binaires et tu fais
confiance au dev de fournir un truc qui fonctionne. Soit tu prends les
sources et tu compiles toi-même. Un peu comme sous linux quoi :-)



Non, sous Linux, on fait confiance aux développeurs pour fournir les sources
d'un logiciel intéressant, et aux packageurs pour en faire un truc qui
marche, maintenu sur le long terme et mis à jour de manière cohérente. Deux
boulots différents, avec des enjeux bien séparés.



???

Exemple liquidsoap, sur debian stable c'est la version 0.9.1 qui est
fournie. La dernière (0.9.2-2) est disponible en .deb sur le site du
dev. Je prends le binaire (.deb) sur le site du dev. Le packageur de
debian n'a rien à voir dans l'histoire. Je fais confiance au dev pour
son .deb.

Pourquoi devrais-je attendre que le packageur fournisse la 0.9.2-2 alors
que la 0.9.1 est bugguée. Je dois rester des mois (temps qu'il a fallu
pour que cette version soit dispo sur debian stable) avec un truc qui
prend 100% du cpu a cause d'un bug alors que la solution existe à un
wget et dpkg -i près ?


Je prends un exemple simple : une bibliothèque pour un protocole réseau, et
quatre ou cinq applications d'origines diverses qui l'utilisent. Un bug de
sécurité est découvert dans la bibliothèques ; les développeurs de la
bibliothèque publient immédiatement une version corrigée, totalement
compatible avec l'ancienne.



Oui si c'est juste une correction de sécurité ça peut le faire. Mais
quand il y a des ajouts/supressions de fonctions, ce n'est pas toujours
le cas.

Passer d'un 2.5.1 à 2.5.2 se fait souvent sans prob. Passer d'un 2.5.X à
2.6 pas toujours. Et tous les dev ne sont pas tous sérieux dans leurs
tests de retro-compatibilité. Ne fut-ce que ceux de python qui n'ont pas
vérifié que les appels de style fail2ban fonctionnaient toujours. Je
suppute une modification dans la forme des regular expressions entre la
2.5 et la 2.6.


Tu veux compter sur le fait que tous les groupes qui ont publié une
application utilisant cette bibliothèque vont (1) suivre les alertes de
sécurité et (2) avoir une infrastructure de mises à jour impératives ? Même
si c'est le cas, c'est du gaspillage d'efforts considérable de refaire
plusieurs fois la même chose ainsi. Et en pratique, plus de la moitié
n'auront pas fait cet effort, et tu te retrouveras avec des applications
trouées sur ton système.



On est d'accord dans le cas d'un patch de sécurité qui ne comble
généralement que la faille et ne fait rien d'autre. Par contre dans une
mise à jour fonctionnelle je ne suis pas d'accord, le remède peut être
pire que le mal.

JEf
Avatar
JKB
Le 10 Aug 2010 10:23:09 GMT,
Nicolas George <nicolas$ écrivait :
JKB wrote in message :
Si quelqu'un veut utiliser Solaris, qu'il se débrouille avec les merdes
inhérentes à Solaris, ce n'est pas le problème des développeurs.


Ah bon ?



Non, bien sûr. C'est le problème de celui qui veut installer / déployer /
packager le logiciel pour Solaris.

Non, ça montre juste ta mentalité. Tu ne peux pas reprocher à
quelqu'un d'utiliser Solaris pour de _bonnes_ raisons.



Je ne lui reproche pas, je dis juste que c'est son problème.

Et lorsqu'il
utilise Solaris, c'est à toi de t'adapter puisque tu ne peux pas
l'envoyer balader d'un simple revers de main.



Bien sûr que si tu peux l'envoyer balader. Ou alors c'est qu'il te paye pour
administrer ses machines.



Sors de ta bulle, parce que tu deviens pénible avec tes oeillères.
Tu peux très bien packager un logiciel pour un client qui utilise
Solaris alors même que tu n'administres pas ses machines.

Et dans ce cas, excuse-moi de te le dire, mais si ta solution pour
administrer une machine est d'installer des bibliothèques par-ci, par-là au
cas par cas, je n'ai vraiment pas envie d'avoir besoin de tes services.



Sans commentaires. De toute façon, je n'administre pas de machine
pour des types qui prétendent avoir la science infuse. Ceux-là se
démerdent sans moi.

Là où ça se corse, c'est juste au moment où les
différentes bibliothèques se parchent sur les pieds et que les
versions qui se suivent de la même bibliothèque ont des ABI
subtilement incompatibles.



Si elles ont des ABI différentes, elles ont des SONAME différents, et ça se
voit. Ça se voit moins directement quand c'est une dépendance de second
ordre, mais ça reste visible. Et c'est essentiellement le point délicat du
boulot d'administrateur / packageur de gérer ces cas.



Et non, ça ne se voit pas, en tout cas pas aussi facilement que tu
le prétends. Ça se voit même tellement facilement que GNU
ld se prend les pieds dans le tapis à la première occasion qui se
présente. Là, tu vois, pour le coup, ld de Solaris fait mieux.
Et lorsque tu as un programme qui utilise une fonction d'une
bibliothèque système (au travers d'un autre bibliothèque chargée
dynamiquement) et la même fonction mais d'une bliothèque plus
récente, le truc se casse la gueule malgré les SONAME's différents.

Tu peux utiliser OpenSSL pour cryper un fichier. S'il y a une
faiblesse de OpenSSL, elle est déjà dans le fichier que tu as
chiffré avec une version foireuse de la bibliothèque. Autre argument ?



Et donc puisqu'un vieux fichier a été chiffré avec une faiblesse, continuons
à chiffrer les fichiers suivants avec la même faiblesse ?



Ça ne t'est jamais venu à l'esprit que tu peux avoir besoin de
relire ces fichiers ? Ça ne t'est jamais venu à l'esprit que le
chiffrement en question même troué peut être suffisant pour ce que
tu en fais ?

Ce que tu ne veux pas comprendre parce que tu veux toujours avoir
raison, c'est qu'il y a des impondérables et que tu es contraint de
faire avec. Tu ne peux pas les ignorer d'un revers de main parce que
ce n'est pas propre. Toutes tes arguties prouvent juste que tu n'as
jamais été confronté à des machines sur lesquelles tu dois faire
tourner un outil et que tu n'as pas le droit de modifier même si tu
as un accès root.

<EOT>

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
Nicolas George
JKB wrote in message :
Tu peux très bien packager un logiciel pour un client qui utilise
Solaris alors même que tu n'administres pas ses machines.



Si tu packages un logiciel spécifiquement pour quelqu'un, tu as déjà quitté
le domaine du développement pour le domaine de l'administration.

Sans commentaires.



Si tu veux.

Et lorsque tu as un programme qui utilise une fonction d'une
bibliothèque système (au travers d'un autre bibliothèque chargée
dynamiquement) et la même fonction mais d'une bliothèque plus
récente, le truc se casse la gueule malgré les SONAME's différents.



Sauf qu'il n'y a aucune raison que des bibliothèques rendues incompatibles
par leurs dépendances soient présentes sur le système. Si c'est le cas,
c'est que quelqu'un a fait n'importe quoi. Probablement celui qui insiste
pour fournir sa version maison de la bibal.

Ça ne t'est jamais venu à l'esprit que tu peux avoir besoin de
relire ces fichiers ?



Parce que tu crois que boucher une faille cryptographique, ça empêche de
relire les vieux formats ?

Ça ne t'est jamais venu à l'esprit que le
chiffrement en question même troué peut être suffisant pour ce que
tu en fais ?



Oui, peut-être. Ou peut-être pas. Tu n'as aucune idée de la gravité de la
faille qui va être découverte demain, et qui ne sera pas corrigée dans la
version que tu distribues.
Avatar
Nicolas George
JEf wrote in message :
Si je prends la dernière version de libpurple avec les sources stables
de Adium, ça ne fonctionne pas. Soit je prends la version stable d'adium
avec la libpurple de la même époque (avec les backports pour supporter
les changements intervenus sur le réseau MSN) soit je prends la version
beta avec la dernière version de libpurple (et là ça fonctionne).



Et donc ?

Exemple liquidsoap, sur debian stable c'est la version 0.9.1 qui est
fournie. La dernière (0.9.2-2) est disponible en .deb sur le site du
dev. Je prends le binaire (.deb) sur le site du dev. Le packageur de
debian n'a rien à voir dans l'histoire. Je fais confiance au dev pour
son .deb.



Eh bien tu n'as rien compris à l'utilisation d'un système de paquets. Et le
développeurs qui fournit un .deb non plus :

- Un .deb publié seul comme ça (par opposition à un dépôt Apt) est
complètement ignoré lors du processus de mise à jour. Le développeur peut
très bien trouver un bug gravissime, qui risque de faire perdre des
données sans préavis, publier un nouveau .deb sur son site, tu n'en sauras
rien et tu garderas la vieille version buggée jusqu'à ce que le bug te
frappe.

- Les packageurs Debian ont l'infrastructure qui leur permet de tester
globalement la compatibilité des dépendances d'un paquet. Pas le
développeur d'un petit logiciel bien précis. À cause de ça, installer un
paquet d'une origine tierce peut bloquer la mise à jour de certains
composants du système.

Passer d'un 2.5.1 à 2.5.2 se fait souvent sans prob. Passer d'un 2.5.X à
2.6 pas toujours. Et tous les dev ne sont pas tous sérieux dans leurs
tests de retro-compatibilité.



C'est pour ça qu'on compte sur des distributions pour faire le boulot
d'uniformiser le tout.
Avatar
JEf
On 10/08/10 13:21, Nicolas George wrote:
JEf wrote in message:
Si je prends la dernière version de libpurple avec les sources stables
de Adium, ça ne fonctionne pas. Soit je prends la version stable d'adium
avec la libpurple de la même époque (avec les backports pour supporter
les changements intervenus sur le réseau MSN) soit je prends la version
beta avec la dernière version de libpurple (et là ça fonctionne).



Et donc ?



Si je veux utiliser la dernière version stable de libpurple avec la
dernière version stable d'adium ça ne fonctionne pas.


Exemple liquidsoap, sur debian stable c'est la version 0.9.1 qui est
fournie. La dernière (0.9.2-2) est disponible en .deb sur le site du
dev. Je prends le binaire (.deb) sur le site du dev. Le packageur de
debian n'a rien à voir dans l'histoire. Je fais confiance au dev pour
son .deb.



Eh bien tu n'as rien compris à l'utilisation d'un système de paquets. Et le
développeurs qui fournit un .deb non plus :

- Un .deb publié seul comme ça (par opposition à un dépôt Apt) est
complètement ignoré lors du processus de mise à jour. Le développeur peut
très bien trouver un bug gravissime, qui risque de faire perdre des
données sans préavis, publier un nouveau .deb sur son site, tu n'en sauras
rien et tu garderas la vieille version buggée jusqu'à ce que le bug te
frappe.



Oui mais le deb est sorti pour corriger le bug en attendant que le
mainteneur l'ajoute au système de package. Je suis au courant puisque je
suis la liste des bugs.

Donc selon toi, un admin doit attendre le bon vouloir d'un packageur
quand son système est instable et un patch disponible. Ben moi
j'applique le patch (qu'il soit en deb ou en source) directement.


- Les packageurs Debian ont l'infrastructure qui leur permet de tester
globalement la compatibilité des dépendances d'un paquet. Pas le
développeur d'un petit logiciel bien précis. À cause de ça, installer un
paquet d'une origine tierce peut bloquer la mise à jour de certains
composants du système.



Pas dans le cas d'espèce mais quand bien même je ne vais pas laisser mon
serveur crasher parce que ce soft n'est pas une priorité chez debian.


Passer d'un 2.5.1 à 2.5.2 se fait souvent sans prob. Passer d'un 2.5.X à
2.6 pas toujours. Et tous les dev ne sont pas tous sérieux dans leurs
tests de retro-compatibilité.



C'est pour ça qu'on compte sur des distributions pour faire le boulot
d'uniformiser le tout.



Haha. Pour les gros trucs et sur archi x86/64 peut-être mais alors en
PPC ou plus exotique je n'y crois pas.

JEf
Avatar
Nicolas George
JEf wrote in message :
Si je veux utiliser la dernière version stable de libpurple avec la
dernière version stable d'adium ça ne fonctionne pas.



Tant que tu te contenteras de vagues affirmations « ça marche pas », tu ne
pourras rien prouver.

Donc selon toi, un admin doit attendre le bon vouloir d'un packageur
quand son système est instable et un patch disponible.



Tu caricatures au point de n'avoir plus aucune ressemblance avec la réalité.

Haha. Pour les gros trucs et sur archi x86/64 peut-être mais alors en
PPC ou plus exotique je n'y crois pas.



Ta religion ne nous intéresse pas.
Avatar
JEf
On 10/08/10 13:44, Nicolas George wrote:
JEf wrote in message:
Si je veux utiliser la dernière version stable de libpurple avec la
dernière version stable d'adium ça ne fonctionne pas.



Tant que tu te contenteras de vagues affirmations « ça marche pas », tu ne
pourras rien prouver.



Il n'y a rien à prouver, tu prends et tu compile si tu veux tester.


Donc selon toi, un admin doit attendre le bon vouloir d'un packageur
quand son système est instable et un patch disponible.



Tu caricatures au point de n'avoir plus aucune ressemblance avec la réalité.



??

Tu n'as jamais découvert un bug dans un soft relativement confidentiel
que tu as remonté chez le dev qui fait son boulot et sort un patch ?

Quand le patch est dispo tu attends combien de temps que le package
arrive dans ta distribution avec ton serveur qui plante 1 ou 2 fois par
jour ? Et moi ce soft était installé sur 60 serveurs, tu crois que
j'allais continuer longtemps à les redémarrer sans arrêt parce qu'un mec
chez debian prenait son temps ?


Haha. Pour les gros trucs et sur archi x86/64 peut-être mais alors en
PPC ou plus exotique je n'y crois pas.



Ta religion ne nous intéresse pas.



Pour toi il n'y a rien en dehors du x86/64 ? Faut sortir un peu !

JEf
Avatar
Nicolas George
JEf wrote in message :
Il n'y a rien à prouver


<snip>

J'en ai marre. Ton discours part dans tous les sens, sans aucune cohérence.
Autant discuter avec une savonnette. Au moins, une savonnette, ce n'est pas
apple qui lui a fait son lavage de cerveau.
Avatar
Tonton Th
On 08/10/2010 01:39 PM, JEf wrote:

Pas dans le cas d'espèce mais quand bien même je ne vais pas laisser mon
serveur crasher parce que ce soft n'est pas une priorité chez debian.



Si ce soft a une priorité plus forte chez toi que chez Debian,
c'est à toi de gérer manuellement la chose. Il est donc temps
de passer au papier, au crayon, à la gomme et à Slackware.

--
Et pendant ce temps-là, dans le golfe du Mexique...
1 2 3 4