Warum werden Software nicht in eine einzelne Datei gepackt?


15

Wir sehen, dass die meisten Windows-Softwarepakete in einer einzigen ausführbaren Datei enthalten sind. Wenn ich auf Setup-Datei doppelklicke, werden alle Dateien, Binärdateien und Bibliotheken damit eingerichtet.

Ich verstehe die Abhängigkeit von Ubuntu oder allgemeiner Linux-Paketen. Aber ich frage mich, warum diese existieren. Ist es nicht möglich, eine einzelne Datei mit allen Abhängigkeiten zu erstellen? Was sind die Probleme mit dieser Methode?

Bitte versuchen Sie den Grund im Detail anzugeben.

Antworten:


17

Der Hauptgrund dafür, dass Abhängigkeiten nicht im Programm selbst enthalten sind, besteht darin, dass Komponenten des Systems einfach aktualisiert werden können.

Stellen Sie sich vor, eine Abhängigkeit wird von fünf verschiedenen Programmen verwendet. Wenn in dieser Abhängigkeit eine Sicherheitslücke gefunden wird, muss nur eine Kopie und nicht fünf Kopien aktualisiert werden.

Für den Benutzer spielt es keine Rolle, dass mehrere Pakete installiert werden müssen. Durch die Installation der gewünschten Software werden die Abhängigkeiten automatisch installiert.


Der Hauptunterschied zwischen .deb- und .exe-Paketen besteht nicht darin, dass Ubuntu-Software nicht in einer einzigen Datei veröffentlicht wird. Der Hauptunterschied ist das gesamte Konzept eines Software-Repositorys, das Pakete enthält und von dem aus Aktualisierungen problemlos bereitgestellt werden können.

Dies kann bei Computern ohne direkte Internetverbindung manchmal problematisch sein. Es gibt Tools wie APTonCD , mit denen diese Schwierigkeiten minimiert werden können.


2
Manchmal zählt mit den Benutzern wie uns ohne ordnungsgemäßen Zugang zum Internet
Anwar

2
Auf jeden Fall hasse ich diese Funktion, weil mein Internet langsam ist. Und die gemeinsame Nutzung heruntergeladen ubuntu Software sehr schwierig ist, (Do nicht empfehlen , das Backup apt-cache Weil ich es täglich)
Tachyonen

1
Aber dann solltest du die Funktion wirklich lieben! Denn anstatt eine Bibliothek fünfmal herunterzuladen, müssen Sie sie nur einmal herunterladen. Stellen Sie sich vor, jedes Programm auf Ihrer Ubuntu-Installation hätte eine eigene GTK + - oder Qt-Installation! Diese Dinge sind riesig .
Michael Wild

4

Das ist nicht ganz richtig. Ubuntu-Software wird normalerweise in einer einzigen .deb-Datei geliefert. Da .deb-Dateien äußerst einfach (und ungenau) sind, handelt es sich um die entsprechende .exe-Datei für Windows. Alle Programme, auch in Windows, verwenden Abhängigkeiten zu anderen Dateien im Betriebssystem (Bibliotheken). Der Installationsprozess ist in verschiedenen Betriebssystemen mehr oder weniger explizit. Wenn Sie das Software Center in Ubuntu zum Herunterladen eines Programms verwenden, laden Sie nur die Abhängigkeiten herunter, die nicht auf Ihrem System installiert sind, sowie die tatsächlichen Programmdateien. Dies verhindert, dass das System mit doppelten Dateien und doppelten Funktionen überlastet wird, die zu Konflikten führen würden.

Ob Sie es glauben oder nicht, der einzige Unterschied zwischen der Installation eines Programms unter Windows oder Ubuntu ist die Menge an Informationen, die sie den Benutzern zur Verfügung stellen. Windows hält seine Benutzer für dumm und möchte nicht, dass sie wissen, was installiert wird, wenn eine exe-Datei ausgeführt wird. Unter Linux erhalten Sie diese Informationen ... für einige Benutzer sind sie zu detailliert, andere (die meisten) wissen dies jedoch zu schätzen.

hoffe, es macht Sinn.


2
Absolut richtig. Auch andere Distributionen (nicht so gut wie Ubuntu) verwenden .rpms. Das Besondere an einer .exe, .deb oder was auch immer ist, dass es sich im Grunde genommen um eine große .tar handelt, die sich an verschiedene Stellen extrahiert! Unter Windows wechselt es zu "Programme" und zeigt einen Fortschrittsbalken an, unter Linux zeigt es jedoch noch viel mehr.
WindowsEscapist

1
Ich denke, der Vorschlag, dass eine exe-Datei wie eine große tar-Datei ist, geht viel zu weit in Richtung Vereinfachung. Eine tar-Datei ist nicht ausführbar. Eine exe Datei ist (natürlich). Das heißt, mit einer deb - Datei (die in der Tat ist eine TAR - Datei) ist der Paket - Manager , dass Griffe des eigentlichen Prozess von Dateien beschäftigen, so dass das System am Anfang der Dinge ganz elegant halten. Bei einem Installationsprogramm (wie in Windows) ist es das Installationsprogramm selbst, das dies ausführt. Es könnte mit einigen Systemkomponenten sprechen, um die Dinge in Ordnung zu halten, aber nur, wenn es sich so anfühlt.
Dylan McCall

1
Zusammenfassend lässt sich sagen, dass Windows über Installer-Programmhersteller wie InstallShield und NSIS verfügt. Solche Tools gibt es auch für Linux. MojoSetup ist sehr beliebt. Hier lädt man manchmal ein Programm herunter und es hat eine ausführbare Datei (die normalerweise mit .sh oder .run endet) und es gibt einen kleinen Assistenten. Diese kommunizieren normalerweise nicht mit dem Paketmanager und funktionieren ähnlich wie Installationsprogramme in Windows. In diesem Sinne ist Windows Installer (mit seinen MSI-Dateien) so etwas wie ein Versuch, das Chaos am Ende zu beseitigen;)
Dylan McCall

Ich denke, die Linux-Methoden sind weitaus besser als die Windows-Methoden. Aber ja Windows-Möglichkeiten sind einfach und leicht
Anwar

2
Das entsprechende Windows-Dateiformat .deblautet .msi.
Eliah Kagan

3

Unter Ubuntu wird die meiste Software in einer einzigen Datei geliefert. Es ist eine *.debDebian-Paketdatei, die von Ihrem Paketmanager heruntergeladen, entpackt und installiert wird.

Warum installiert Ubuntu keine Software von selbstextrahierenden ausführbaren Dateien wie die meisten Windows-Programme?

Weil selbstextrahierende *.exeDateien eine sehr gefährliche Angelegenheit sind.

Die wichtigsten Unterschiede zwischen selbstextrahierenden ausführbaren Dateien und einem Paketierungssystem wie dem Debian / Ubuntu-System sind:

  • Sicherheit
  • Transparenz
  • Genauere Kontrolle

Ausführlicher:

Sicherheit

In der Windows-Welt muss man dieser einzelnen *.exeDatei vertrauen . Wie kann man wirklich sicher sein, dass es vertrauenswürdig ist? Wie kannst du überhaupt wissen, dass es etwas installiert? Wie können Sie sicher sein, dass es hinter Ihrem Rücken keine anderen Dinge tut?

In Ubuntu werden alle Pakete digital signiert. Mit einer separaten Paketdatei - dem Paketmanager (sei es Myon, Synaptic, Aptitude oder sogar Straight Apt) - können Sie den Inhalt überprüfen, bevor er entpackt oder gar installiert wird. Dies setzt natürlich voraus, dass Sie den Repositorys vertrauen. Ich vertraue lieber den Ubuntu-Repositories (einer einzigen Instanz) als Hunderten von häufig unbekannten Quellen, aus denen heruntergeladen werden kann.

Granulare Steuerung

Mit einer *.exeDatei können Sie im Wesentlichen eines tun: sie ausführen. In Ubuntu können Sie den Inhalt des Pakets, Beschreibungen, Konfigurationen, einzelne Dateien, die neuesten Änderungen, Fehlerbehebungen usw. bequem von Ihrem Paketmanager aus überprüfen, bevor Sie entscheiden, ob Sie es installieren oder nicht.

Wenn Sie von einer *.exeDatei installieren , müssen Sie auch ihrem "Deinstallations" -Hook vertrauen (und nicht für alle *.exeDateien ist eine solche garantiert). In Ubuntu können alle Dateien, die zu den vom Paketmanager installierten Standardpaketen gehören, immer deinstalliert werden, da dies eine Funktion des Paketmanagers und nicht des Pakets selbst ist. Der Paketmanager ist eine separate und vertrauenswürdige Anwendung, die sowohl das Installations- als auch das Deinstallationsprogramm bereitstellt. Das Paket kann den Deinstallations-Hook nicht von Ihnen entfernen. Natürlich kann ein böswilliges Paket Dinge durch Aktionen nach der Installation verschleiern, aber aus diesem Grund haben wir das offizielle Repository-System und dieselben Personen, denen wir vertrauen, um sie zu verwalten.

Transparenz

Es geht weiter. Unter Ubuntu kann ich meinem System wirklich vertrauen, weil ich die Software auf vielen Ebenen verifizieren kann. Die ultimative Ebene ist das Betrachten des Quellcodes. Binärpakete haben entsprechende Quellpakete. Ich kann mir die Quelle ansehen (Beispiel: ' apt-get source bash ' gibt Ihnen die vollständigen Quellen für die Bash-Shell). In der Welt der * .exe-Dateien gibt es normalerweise nur Binärdateien, und wer weiß, was sie tatsächlich hinter den Kulissen tun?

Das heißt, es gibt immer Ausnahmen zu den Regeln, aber für mich bedeutet Sicherheit und Vertrauen, dass ich keine ausführbaren Binärdateien von Hunderten verschiedener Quellen akzeptieren kann, die als Standardmethode für die Installation von Komponenten auf meinem System schwer zu überprüfen sind.


2

Zusätzlich zu dem, was von anderen gesagt wurde, wird eine einzelne Software manchmal in mehrere Pakete aufgeteilt, da nicht alle Funktionen für alle Benutzer relevant sind. Wenn beispielsweise die Dokumentation eines Programms umfangreich ist, wird sie normalerweise in einem separaten Paket bereitgestellt. Auf diese Weise können Benutzer, die nicht an diesen optionalen Funktionen interessiert sind, Speicherplatz und Bandbreite / Zeit für das Herunterladen sparen.


0

Lassen Sie uns versuchen, mein Verständnis über die Abhängigkeiten zu teilen (Ja, ich war mir der Vorzüge von Ubuntu oder allgemeiner der Linux-Art des Umgangs mit Software bewusst. Ich habe einfach versucht, alle guten Meinungen und Argumente auf zentrale Weise zusammenzuführen, damit ich einige demonstrieren kann meiner Freunde) .

Windows-Software wird meist in einer einzelnen Datei gepackt. Bedeutet dies, dass sie keine Abhängigkeit haben?

Nein, fast alle Softwareprogramme sind von einigen anderen Softwareprogrammen abhängig. (Es sei denn , dass Software ist sehr schwach- und kann mit der Hardware direkt, wie Betriebssystem selbst sprechen) . Die Software von Microsofts ist nicht frei von Abhängigkeiten. Die wichtige Frage lautet also: Wie gehen sie damit um?

Antwort: Sie behandeln dies auf ihre eigene traditionelle Weise. Unter der Annahme, dass die meisten Benutzer dumm sind, fügen sie einfach alle Abhängigkeiten in eine einzelne Datei ein, was zu einer größeren (1 abgelegtes) Software führt.
Ein Beispiel finden Sie in den für Microsoft veröffentlichten Spielen. Fast jedes Spiel enthält DirectX-Setups, obwohl Benutzer möglicherweise bereits aktualisierte Versionen davon haben.

Hier ist etwas, was ich bei Google gefunden habe: Warum DirectX in jedem Spiel enthalten ist.

Auch wenn eine spätere Version der Binärdatei bereits installiert ist, kann diese Version nicht verwendet werden, und selbst wenn Ihre DirectX-Installation auf dem neuesten Stand ist, weil Sie eine neuere Version des Installationsprogramms ausgeführt haben, für die nicht garantiert ist, dass alle installiert sind vorherige Versionen. Schlimmer noch, wenn eine Version für x86 installiert ist, kann nicht garantiert werden, dass dieselbe Version für x64 installiert ist. Daher müssen 64-Bit- und 32-Bit-Spiele möglicherweise dieselbe exakte Installationsversion ausführen, die sich jedoch auf verschiedene Plattformen richtet, wenn sie ausgeführt werden.

Klicken Sie hier für den vollständigen Artikel. Es ist klar, dass sie mit Abhängigkeiten nicht sehr gut umgehen.

Meistens bieten sie, unabhängig davon, ob Abhängigkeiten bereits vorhanden sind, diese an, um (für ihre Benutzer) eine Vereinfachung zu erreichen . Sehen Sie auch, wie viele Software-Themes die .NET-Laufzeitkomponenten enthalten.
Ein weiteres Beispiel aus meiner Erfahrung: Einmal habe ich eine MS-Software heruntergeladen und installiert. Als ich mit dem Vorgang zufrieden war, klickte ich auf das Symbol, um die Software zu öffnen. Erst dann wird mir mitgeteilt, dass "Java zum Ausführen erforderlich ist". Eine solche Situation kann in einer Linux-Welt über die Paketverwaltung nicht auftreten. (es sei denn, Sie versuchen, .deb-Dateien von der Repository-Site herunterzuladen und per Doppelklick auf MS-Art zu installieren) .

Wie geht Linux mit diesem Abhängigkeitsproblem um?

Nun, Linux oder Ubuntu verbergen nicht die Tatsache, dass für die Verwendung der Software Abhängigkeiten installiert sein müssen (anders als bei Microsoft). Aber wenn Sie die Komponenten installiert haben, verwendet eine andere Software, die von derselben Komponente abhängt, die zuvor installierten Abhängigkeiten (im Gegensatz zu MS-Software einschließlich aller Dinge).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.