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

15

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

Je comprends la dépendance d'Ubuntu ou plus généralement des packages Linux. Mais je me demande pourquoi cela existe. N'est-il pas possible de construire un seul fichier avec toutes les dépendances? Quels sont les problèmes avec cette méthode?

Veuillez essayer de donner la raison en détail.

Anwar
la source

Réponses:

17

La raison principale pour laquelle les dépendances ne sont pas incluses avec 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 vulnérabilité de sécurité est détectée dans cette dépendance, une seule copie doit être mise à jour, plutôt que cinq copies.

Pour l'utilisateur, peu importe que plusieurs packages doivent être installés - l'installation du logiciel que vous souhaitez installe automatiquement ses dépendances.


La principale différence entre les packages .deb et .exe n'est pas que le logiciel Ubuntu n'est pas publié dans un seul fichier. La principale différence est tout le concept d'un référentiel de logiciels qui contient des packages, et dont les mises à jour peuvent être facilement fournies.

Cela peut parfois être problématique pour les ordinateurs sans connexion Internet directe. Il existe des outils, comme APTonCD , qui aident à minimiser ces difficultés.

8128
la source
2
compte parfois avec des utilisateurs comme nous sans accès approprié à Internet
Anwar
2
De toute façon, je déteste cette fonctionnalité car mon Internet est lent. Et le partage de logiciels ubuntu téléchargés est très difficile, (ne suggère pas de sauvegarder apt-cache parce que je le fais quotidiennement)
Tachyons
1
Mais alors, vous devriez vraiment aimer la fonctionnalité! Parce qu'au lieu de télécharger une bibliothèque cinq fois, vous ne la téléchargez qu'une seule fois. Imaginez que chaque programme de votre installation Ubuntu soit livré avec sa propre installation GTK + ou Qt! Ces choses sont énormes .
Michael Wild
4

Ce n'est pas totalement vrai. Le logiciel Ubuntu est généralement fourni dans un seul fichier .deb. Étant tout à fait simpliste (et inexact), les fichiers .deb sont le fichier .exe correspondant pour Windows. Tous les programmes, y compris ceux de Windows, utilisent des dépendances avec d'autres fichiers du système d'exploitation (bibliothèques). Le processus d'installation est juste plus ou moins explicite dans différents OS. Lorsque vous utilisez le centre logiciel d'Ubuntu pour télécharger un programme, vous téléchargez uniquement les dépendances qui ne sont pas installées sur votre système et les fichiers de programme réels. Cela empêche le système d'être surchargé de fichiers en double et de fonctionnalités en double qui se retrouveraient dans 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 veulent pas qu'ils sachent ce qu'il est installé lors de l'exécution d'un fichier exe. Sous Linux, vous obtenez ces informations ... pour certains utilisateurs, c'est trop de détails, mais d'autres (la plupart) l'apprécient vraiment.

j'espère que cela a du sens.

leousa
la source
2
Absolument raison. Même d'autres distributions (pas aussi performantes qu'Ubuntu) utilisent .rpms. La chose à propos d'un .exe, .deb, ou autre, c'est que c'est essentiellement un grand .tar qui s'extrait à différents endroits! Sous Windows, il va dans Program Files et vous montre une barre de progression, mais sous linux il vous en montre beaucoup plus.
WindowsEscapist
1
Je pense que la suggestion qu'un fichier exe est comme un gros fichier tar va beaucoup trop loin dans le sens de la simplification. Un fichier tar n'est pas exécutable. Un fichier exe (naturellement) est. Autrement dit, avec un fichier deb (qui est en fait un fichier tar), c'est le gestionnaire de packages qui gère le processus réel de déplacement des fichiers, de sorte que le système peut rester au courant des choses de manière assez élégante. Avec un programme d'installation (comme sous Windows), c'est l'installateur lui-même qui le fait. Il pourrait parler à certains composants du système pour garder les choses en ordre, mais seulement si cela en a envie.
Dylan McCall
1
La meilleure façon de résumer cela est que Windows a des fabricants de programmes d'installation comme InstallShield et NSIS. Il existe également des outils comme celui-ci pour Linux. MojoSetup est populaire. C'est là que vous téléchargez parfois un programme et il a un fichier exécutable (se terminant généralement par .sh ou .run) et il vous donne un petit assistant. Ceux-ci ne parlent généralement pas au gestionnaire de packages et fonctionnent un peu comme les programmes d'installation de Windows. Sur cette note, Windows Installer (avec ses fichiers .msi) est une sorte de tentative de nettoyer ce gâchis de leur côté;)
Dylan McCall
Je pense que les méthodes Linux sont bien meilleures que les méthodes Windows. Mais oui, les méthodes Windows sont simples et faciles
Anwar
2
Le format de fichier Windows qui correspond à .debest .msi.
Eliah Kagan
3

Sur Ubuntu, la plupart des logiciels sont fournis dans un seul fichier. Il s'agit d'un *.debfichier 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 de logiciel à partir d'exécutables à extraction automatique comme la plupart des logiciels Windows?

Parce que les *.exefichiers auto-extractibles sont une proposition très dangereuse à accepter.

Les différences les plus critiques entre un exécutable auto-extractible et un système de packaging, comme celui de Debian / Ubuntu, sont:

  • Sécurité
  • Transparence
  • Contrôle plus granulaire

Plus en détail:

Sécurité

Dans le monde Windows, vous devez faire confiance à ce *.exefichier unique . Comment peut-on vraiment être sûr qu'on peut lui faire confiance? Comment pouvez-vous même savoir qu'il installe quelque chose? Comment pouvez-vous être sûr qu'il ne fait rien d'autre derrière votre dos?

Dans Ubuntu, tous les packages sont signés numériquement, donc en utilisant un fichier de package séparé - le gestionnaire de packages (que ce soit muon, synaptic, aptitude, ou même straight apt) - vous obtenez le contenu vérifié avant même qu'il ne soit décompressé, et encore moins installé. Cela suppose, bien sûr, que vous ayez confiance dans les référentiels. Je préfère faire confiance aux référentiels Ubuntu (une seule autorité) qu'à des centaines de sources souvent inconnues à télécharger.

Contrôle granulaire

Avec un *.exefichier, vous pouvez essentiellement faire une chose: l'exécuter. Dans Ubuntu, vous pouvez inspecter le contenu du package, les descriptions, les configurations, les fichiers individuels, les dernières modifications, les corrections de bogues, etc. à partir de la commodité de votre gestionnaire de packages, avant de décider d'installer ou non.

Lorsque vous installez à partir d'un *.exefichier, vous devez également faire confiance à son crochet de «désinstallation» (et tous les *.exefichiers ne sont pas garantis d'en avoir un). Dans Ubuntu, tous les fichiers appartenant aux packages standard installés par le gestionnaire de packages peuvent toujours être désinstallés car c'est une fonction du gestionnaire de packages, pas du package lui-même. Le gestionnaire de packages est une application distincte et approuvée, qui fournit à la fois le programme d'installation et le programme de désinstallation, le package ne peut pas vous enlever le crochet de désinstallation. Bien sûr, un paquet malveillant peut se faufiler via des actions post-installation, mais c'est pourquoi nous avons le système de référentiel officiel et les mêmes personnes en qui nous avons confiance pour les maintenir.

Transparence

Cela va plus loin. Sur 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 packages binaires ont des packages source correspondants. Je peux en fait regarder la source (Exemple: ' apt-get source bash ' vous donnera les sources complètes du shell bash). 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 dans les coulisses?

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 qui sont difficiles à vérifier comme moyen standard d'installer des composants sur mon système.

arielf
la source
2

En plus de ce qui a été dit par d'autres, parfois un seul logiciel est divisé en plusieurs packages car toutes les fonctionnalités ne sont pas pertinentes pour tous les utilisateurs. Par exemple, si la documentation d'un programme est volumineuse, elle sera généralement fournie par un package 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.

omacs
la source
0

Essayons de partager ma compréhension des dépendances (Oui, j'étais conscient du mérite d'Ubuntu ou plus généralement de la manière Linux de gérer les logiciels. J'essayais simplement de rassembler toutes les bonnes opinions et la raison de manière centrale, afin de pouvoir en démontrer de mes amis) .

Les logiciels Windows sont généralement regroupés dans un seul fichier. Est-ce à dire qu'ils n'ont aucune dépendance?

Non, presque tous les logiciels dépendent de certains autres logiciels. (Sauf si ce logiciel est de très bas niveau et peut communiquer 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 ils gèrent cela?

Réponse: Ils gèrent cela à leur manière traditionnelle. En supposant que la plupart de leurs utilisateurs sont stupides, ils ont simplement mis toutes les dépendances dans le fichier unique, résultant en un logiciel de plus grande taille (1 fichier).
Pour un exemple, voir les jeux publiés pour Microsoft. Presque tous les jeux incluent des configurations DirectX, bien que les utilisateurs puissent déjà en avoir des versions mises à jour.

Voici quelque chose que j'ai trouvé sur Google sur la raison pour laquelle DirectX est inclus avec 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 DirectX est à jour car vous avez exécuté une version plus récente du programme d'installation qui n'est pas garantie d'avoir installé tous Versions précédentes. Pire encore, si une version est installée pour x86, cela ne garantit pas que la même version est installée pour x64, donc les jeux 64 bits et 32 ​​bits peuvent avoir besoin d'exécuter la même version d'installation exacte mais en ciblant différentes plates-formes lors de l'exécution.

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

La plupart du temps, quelles que soient les dépendances déjà en place, ils le fournissent pour gagner en simplicité (pour leurs utilisateurs) . Voir également combien de thèmes de logiciels incluent les composants d'exécution .NET.
Un autre exemple de mon expérience: une fois que j'ai téléchargé et installé un logiciel MS. Étant satisfait du processus, j'ai cliqué sur l'icône pour ouvrir le logiciel, Seulement alors il me dit que "j'ai besoin de Java pour fonctionner". Une telle situation ne se produit jamais dans un monde Linux via sa gestion de paquets. (sauf si vous essayez de télécharger des fichiers .deb à partir du site du référentiel et de les installer en double-cliquant, à la mode MS) .

Comment Linux gère 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 manière 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 installées (contrairement aux logiciels MS, y compris tout).

Anwar
la source