15 votes

Pourquoi les logiciels ne sont-ils pas regroupés dans un seul fichier ?

Nous voyons que la plupart des logiciels Windows sont regroupés dans un seul fichier exécutable. Lorsque je double-clique sur le fichier d'installation, il installe tous les fichiers, les binaires et les bibliothèques avec lui.

Je comprends la dépendance des paquets Ubuntu ou plus généralement linux. Mais je me demande pourquoi elles existent. N'est-il pas possible de construire un seul fichier avec toutes les dépendances ? Quel est le problème avec cette méthode ?

Veuillez essayer de donner la raison en détail.

17voto

8128 Points 28272

La principale raison pour laquelle les dépendances ne sont pas incluses dans le programme lui-même est que les composants du système peuvent être facilement mis à jour.

Imaginez qu'une dépendance soit utilisée par cinq programmes différents. Si une faille de sécurité est découverte dans cette dépendance, une seule copie doit être mise à jour, au lieu de cinq.

Pour l'utilisateur, le fait que plusieurs paquets doivent être installés n'a pas d'importance : l'installation du logiciel souhaité entraîne automatiquement celle de ses dépendances.


La principale différence entre les emballages .deb et .exe n'est pas que les logiciels Ubuntu ne sont pas publiés dans un seul fichier. La principale différence réside dans le concept de dépôt de logiciels qui contient des paquets et à partir duquel des mises à jour peuvent être facilement fournies.

Cela peut parfois être problématique pour les ordinateurs qui ne disposent pas d'une connexion directe à l'internet. Il existe des outils, comme APTonCD qui contribuent à minimiser ces difficultés.

4voto

leousa Points 964

Ce n'est pas totalement vrai. Les logiciels Ubuntu sont généralement fournis dans un seul fichier .deb. De manière tout à fait simpliste (et inexacte), les fichiers .deb sont les fichiers .exe correspondants pour Windows. Tous les programmes, y compris ceux de Windows, utilisent des dépendances vers d'autres fichiers du système opérationnel (bibliothèques). Le processus d'installation est simplement plus ou moins explicite dans les différents systèmes d'exploitation. Lorsque vous utilisez le centre logiciel d'Ubuntu pour télécharger un programme, vous ne téléchargez que les dépendances qui ne sont pas installées sur votre système et les fichiers du programme proprement dit. Cela permet d'éviter que le système ne soit surchargé de fichiers et de fonctionnalités en double, ce qui entraînerait des conflits.

Croyez-le ou non, la seule différence entre l'installation d'un programme dans Windows ou Ubuntu est la quantité d'informations qu'ils fournissent aux utilisateurs. Windows pense que ses utilisateurs sont stupides et ne veut pas qu'ils sachent ce qui est installé lorsqu'ils exécutent un fichier exe. Sous Linux, vous obtenez ces informations pour certains utilisateurs, c'est trop de détails, mais d'autres (la plupart) apprécient vraiment cela.

J'espère que cela a un sens.

3voto

arielf Points 2623

Sur Ubuntu, la plupart des logiciels sont fournis dans un seul fichier. Il s'agit d'un *.deb fichier de paquet debian qui est téléchargé, décompressé et installé à partir de votre gestionnaire de paquets.

Pourquoi Ubuntu n'installe-t-il pas les logiciels à partir d'exécutables auto-extractibles comme le font la plupart des logiciels Windows ?

Parce que l'auto-extraction *.exe sont une proposition très dangereuse à accepter.

Les différences les plus importantes entre un exécutable auto-extractible et un système d'empaquetage, comme celui de debian/Ubuntu, sont les suivantes :

  • Sécurité
  • Transparence
  • Un contrôle plus granulaire

Plus en détail :

Sécurité

Dans le monde Windows, vous devez faire confiance à l'unique *.exe fichier. Comment peut-on vraiment être sûr qu'on peut lui faire confiance ? Comment peut-on savoir qu'il installe quelque chose ? Comment pouvez-vous être sûr qu'il ne fait pas d'autres choses derrière votre dos ?

Dans Ubuntu, tous les paquets sont signés numériquement, donc en utilisant un fichier de paquet séparé - le gestionnaire de paquets (qu'il s'agisse de muon, synaptic, aptitude, ou même simplement apt) - vous obtenez le contenu vérifié. antes de il n'est même pas déballé, et encore moins installé. Cela suppose, bien sûr, que vous faites confiance aux dépôts. Je préfère faire confiance aux dépôts Ubuntu (une autorité unique) plutôt qu'à des centaines de sources différentes, souvent peu familières, à partir desquelles télécharger.

Contrôle granulaire

Avec un *.exe vous pouvez essentiellement faire une seule chose : l'exécuter. Dans Ubuntu, vous pouvez inspecter le contenu du paquet, les descriptions, les configurations, les fichiers individuels, les dernières modifications, les corrections de bogues, etc. depuis la commodité de votre gestionnaire de paquets, antes de décider de l'installer ou non.

Lorsque vous effectuez une installation à partir d'un *.exe vous devez également faire confiance à son crochet de désinstallation (et tous les fichiers de désinstallation ne sont pas disponibles). *.exe sont garantis en avoir un). Dans Ubuntu, tous les fichiers appartenant à des paquets standard installés par le gestionnaire de paquets, peuvent toujours être désinstallés car c'est une fonction du gestionnaire de paquets, et non du paquet lui-même. Le gestionnaire de paquets est une application distincte et fiable, qui fournit à la fois l'installateur et le désinstallateur, le paquet ne peut pas vous enlever le crochet de désinstallation. Bien sûr, un paquet malveillant peut faire des choses en douce via des actions post-installation, mais c'est pour cela que nous avons le système de dépôts officiels et les mêmes personnes en qui nous avons confiance pour les maintenir.

Transparence

Cela va plus loin. Sous Ubuntu, je peux vraiment faire confiance à mon système, car je peux vérifier le logiciel à plusieurs niveaux. Le niveau ultime est de pouvoir regarder le code source. Les paquets binaires ont des paquets sources correspondants. Je peux réellement regarder le code source (exemple : ' apt-get source bash ' vous donnera les sources complètes du bash Shell). Dans le monde des fichiers *.exe, il n'y a généralement que des binaires, et qui sait ce qu'ils font réellement en coulisse ?

Cela dit, il y a toujours des exceptions aux règles, mais pour moi, la sécurité et la confiance signifient que je ne peux pas accepter l'exécution de binaires provenant de centaines de sources différentes et difficiles à vérifier comme moyen standard d'installer des composants sur mon système.

2voto

Mariusz Points 1072

En plus de ce qui a été dit par d'autres, il arrive qu'un seul logiciel soit divisé en plusieurs paquets parce que toutes les fonctionnalités ne sont pas pertinentes pour tous les utilisateurs. Par exemple, si la documentation d'un programme est volumineuse, elle est généralement fournie par un paquet séparé. Cela permet aux utilisateurs qui ne sont pas intéressés par ces fonctionnalités optionnelles d'économiser de l'espace disque et de la bande passante/du temps pour le téléchargement.

0voto

Anwar Points 72431

Essayons de partager ma compréhension des dépendances. (Oui, j'étais conscient des mérites d'Ubuntu ou plus généralement de la manière dont Linux gère les logiciels. J'essayais simplement de rassembler toutes les bonnes opinions et tous les bons raisonnements d'une manière centralisée, afin de pouvoir en faire la démonstration à certains de mes amis). .

Les logiciels Windows sont généralement regroupés dans un seul fichier. Cela signifie-t-il qu'ils n'ont pas de dépendance ?

Non, presque tous les logiciels sont dépendants d'autres logiciels. (Sauf si ce logiciel est de très bas niveau et peut parler directement avec le matériel, comme le système d'exploitation lui-même). . Les logiciels de Microsofts ne sont pas exempts de dépendance. Donc, la question importante est : comment gèrent-ils cela ?

Réponse : Ils gèrent cela de manière traditionnelle. Partant du principe que la plupart des utilisateurs sont stupides, ils mettent simplement toutes les dépendances dans un seul fichier, ce qui donne un logiciel de plus grande taille (1 fichier).
Pour un exemple, voir les jeux sortis pour Microsoft. Presque tous les jeux incluent des configurations DirectX, bien que les utilisateurs puissent déjà disposer de versions mises à jour.

Voici quelque chose que j'ai trouvé sur Google sur la raison pour laquelle DirectX est inclus dans chaque jeu.

Même si une version ultérieure du binaire est déjà installée, cette version ne peut pas être utilisée, et même si votre installation de DirectX est à jour parce que vous avez exécuté une version plus récente de l'installateur qui n'est pas garantie d'avoir installé toutes les versions précédentes. Pire encore, si une version est installée pour x86, cela ne garantit pas que la même version soit installée pour x64, de sorte que les jeux 64 bits et 32 bits peuvent avoir besoin d'exécuter la même version exacte de l'installateur mais cibler des plates-formes différentes lors de l'exécution.

cliquez ici pour l'article complet. Il est clair qu'ils ne se débrouillent pas très bien pour gérer la dépendance.

La plupart du temps, indépendamment des dépendances déjà en place, ils le fournissent pour gagner en simplicité (pour leurs utilisateurs) . Voyez aussi combien de logiciels incluent eux-mêmes les composants du runtime .NET.
Un autre exemple tiré de mon expérience : Une fois, j'ai téléchargé et installé un logiciel MS. Satisfait du processus, j'ai cliqué sur l'icône pour ouvrir le logiciel, mais il m'a dit que "j'ai besoin de Java pour fonctionner". Une telle situation ne se produit jamais dans un monde Linux grâce à la gestion des paquets. (à moins que vous n'essayiez de télécharger les fichiers .deb depuis le site de dépôt et de les installer en double-cliquant, à la manière de MS). .

Comment Linux gère-t-il ce problème de dépendance ?

Eh bien, Linux ou Ubuntu ne cache pas le fait que vous devez avoir des dépendances installées pour utiliser le logiciel (contrairement à la méthode de Microsoft). Mais lorsque vous avez installé les composants, un autre logiciel qui dépend du même composant utilise les dépendances installées précédemment (contrairement aux logiciels MS qui incluent toutes les choses).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X