barzefutz
Anmeldungsdatum: 21. Dezember 2012
Beiträge: 7
|
Hallo, ich habe eine Frage. Warum müssen die Programme unter Linux immer an eine bestimmte Distribution angepasst sein? Warum gibt es nicht einfach eine einzige Datei für alle, die man runterladen und installieren kann, die dann mit allen Distributionen funktioniert? Das wäre doch viel einfacher. Und was macht man, wenn es das Programm, was man runterladen will, noch nicht für die Distribution gibt die man benutzt?
|
Yanneck
Anmeldungsdatum: 25. September 2009
Beiträge: 1192
|
Weil es verschiedene Paketverwaltungssysteme gibt und die meisten Programme Abhängigkeiten mitbringen - PaketXY1.4.2 könnte so z. B. von Paket123.0.0.6 abhängen, damit es funktioniert, und in einer neueren Version vom selben Paket abhängen, aber evtl. in einer anderen Versionsnummer, oder vom selben und auch noch einem anderen Paket oder was auch immer ...
Warum gibt es nicht einfach eine einzige Datei für alle, die man runterladen und installieren kann, die dann mit allen Distributionen funktioniert?
Weil du dann alle Distributionen auf einen Nenner bringen müsstest oder das Paket alles mitbringen müsste, was es zum Funktionieren braucht (<-Bloat-Alarm) - es gäbe also im eigentlichen Sinne auch keine wirklichen Distributionen mehr, sondern nur noch die Distribution.
Und was macht man, wenn es das Programm, was man runterladen will, noch nicht für die Distribution gibt die man benutzt?
Warten. Oder selber ein Kompilat erstellen. Oder darauf hoffen, dass jmd. eine Fremdquelle einrichtet. Wir sehen uns. ☺
|
barzefutz
(Themenstarter)
Anmeldungsdatum: 21. Dezember 2012
Beiträge: 7
|
Hi, danke für deine Antwort. Hmm, das mit den Abhängigkeiten verstehe ich nicht ganz. Mir ist eben noch was aufgefallen: Firefox gibt es anscheinend als eine allgemeine Linux-Version: http://www.mozilla.org/en-US/firefox/all.html Funktioniert die dann für alle Distributionen? Wenn ja, warum ist das bei den anderen Programmen nicht genauso? Und nochwas, es gibt doch tausende kleine Frickeltools für Linux. Da kann es doch nicht für jedes Tool so ein Paket geben?! Die müssen doch auch irgendwie laufen können ohne dass man sie als Paket runterlädt.
|
Das_Wort
Anmeldungsdatum: 23. Dezember 2009
Beiträge: 5263
|
barzefutz schrieb: Hi, danke für deine Antwort. Hmm, das mit den Abhängigkeiten verstehe ich nicht ganz.
Abhängigkeiten gibt es auch nur bei Paketmanagern. Es gibt auch Distros ohne. Was genau verstehst du nicht?
Mir ist eben noch was aufgefallen: Firefox gibt es anscheinend als eine allgemeine Linux-Version: Funktioniert die dann für alle Distributionen? Wenn ja, warum ist das bei den anderen Programmen nicht genauso?
Ja. Die machen das auch. Nur gibt es zusätzlich auch DEB-Pakete etc. Das hat zum Beispiel den Vorteil dass du Abhängigkeiten nicht manuell installieren musst. Du kannst Programme verschieden packen. Die dort angebotene Datei ist ein Archiv mit einer ausführbaren Datei. Das liegt in der Hand der Entwickler wie die das packen.
Und nochwas, es gibt doch tausende kleine Frickeltools für Linux. Da kann es doch nicht für jedes Tool so ein Paket geben?! Die müssen doch auch irgendwie laufen können ohne dass man sie als Paket runterlädt.
Naja für Windows gibt es auch überall EXE Dateien. Und bei DEB und RPM steht halt noch mehr drin, Abhängigkeiten etwa, deshalb muss du auch nicht Programm X installieren bevor Programm Y funktioniert. Das macht der Paketmanager für dich. Der kleinste gemeinsame Nenner sind Binärdateien, etwa ELF-Dateien. → Executable_and_Linking_Format. Ich glaub du musst dich von dem EXE ein für alles verabschieden. Denn für Windows gibt es auch nicht nur ein Format. EXE-Dateien sind auch nur Archive, pack mal eine EXE mit dem Archivmanager aus. Es gibt viele verschiedene "Arten von Programmen":
Binärcode ← Lustige Nullen und einsen Bytecode ← ein Zwischending, siehe Java Skripte ← Hier wird direkt der Quelltext interpretiert
Ein gutes Programm braucht aber noch mehr Infos wenn man das ordentlich machen will.
Lizenztext Weiterführende Informationen (Changelog, Urheber) Andere Programme von denen das Programm abhängt (etwa Bibliotheken) Anleitung zum Programm Installationsanleitung
In welcher Form werden Programme für Linux angeboten?
Quelltext / hierzu zähle ich auch die Skripte Archive (Endungen: tar.gz, zip, tar.bz) Hier muss man die Dateien händisch verschieben. Installationsarchive (Endungen: run, bin) Da kann eine Datei schon 700MB haben, so etwa das Spiel UT_2004. Das ist eigentlich nicht viel mehr als ein Archiv mit einem Shellskript das die Dateien dahin schiebt wo sie hingehören. → .run Hierzu gehört auch EXE. → Ausführbare_Datei Paketdateien (Endungen: deb, rpm) Das Ultimative. Hier sind folgende Sachen drin: Datei mit Versionsnummer etc. Liste mit Abhängigkeiten Prüfsummen um die Richtigkeit des Paketes festzustellen „Regeln“ wie mit vorhanden Konfigurationsdateien umgegangen wird. Damit deine Konfiguration nicht mit den Standardwerten überschrieben wird wenn du ein Update machst. Es können Skripte dabei sein die beschreiben was bei Installation, Aktualisierung oder Deinstallation gemacht werden soll. Etwa wenn sich das Programm in eine wichtige Konfigurationsdatei im System eingetragen hat. eigentliche Programmdateien mit relativen Pfad angaben Und dann gibt es noch Quellpakete, aber das ist eine andere Geschichte.
Formate wie DEB haben den Vorteil dass diese feste Regeln haben und deshalb ohne Benutzerinteraktion installiert werden können. Außerdem sind es nicht immer die Entwickler die diese Paket erstellen sondern andere, vorausgesetzt es handelt sich dabei um freie Software. Bestes Beispiel ist das AUR (Arch User Repository). Was der Entwickler anbietet ist also seine Sache. Mit dem Open Build Service gibt es auch ein tolles Angebot das dem Entwickler die Arbeit sehr erleichtert. Da wirft man die Software einmal rein, schreibt entsprechendes dazu und am Ende kommen die Pakete heraus.
|
barzefutz
(Themenstarter)
Anmeldungsdatum: 21. Dezember 2012
Beiträge: 7
|
Danke für die Riesenantwort ☺ Also ganz ehrlich, mich überzeugt das mit den Paketmanagern nicht. Ist ja schön und gut dass sie für mich die Abhängigkeiten mitinstallieren und alles, aber wenn es halt mein Wunschprogramm nicht für meine Distribution gibt bin ich aufgeschmissen. Da wäre es doch am Ende besser, die Abhängigkeiten selber installieren zu müssen aber dafür ist das Programm dann für alle Distributionen verfügbar. Wenn ich das jetzt mal mit Windows vergleiche, da ist es ja (fast immer) so, das ein und dasselbe Programm sowohl unter Windows XP als auch unter Vista und Windows 7 läuft. Wieso machen es die Entwickler nicht so wie bei Firefox und bieten eine Datei an die auf allen Distributionen funktioniert? Ich versteh das nicht. Zum Beispiel OpenOffice: http://www.openoffice.org/download/other.html
Das gibts dort nur als .rpm und .deb. Wieso machen die das nicht wie bei Firefox und bieten auch eine .tar.gz an? Dann könnten es alle installieren. EDIT: Ich habe mich verguckt, das gibts doch als .tar.gz! EDIT2: Also nochmal zum verständnis. Wenn ich eine Distribution benutze und ein Programm installieren will, dass es im Paketmanager aber nicht gibt. Was mache ich dann? Kann ich es dann gar nicht installieren oder kann ich mir dann einfach die .tar.gz runterladen und es manuell installieren? Gibt es jedes Programm als .tar.gz? Und kann es sein, dass ein Programm mit einer bestimmten Distribution funktioniert, aber mit einer anderen nicht? Woher weiss man das im Voraus?
|
Kätzchen
Anmeldungsdatum: 1. Mai 2011
Beiträge: 6036
|
barzefutz schrieb: Wenn ich das jetzt mal mit Windows vergleiche, da ist es ja (fast immer) so, das ein und dasselbe Programm sowohl unter Windows XP als auch unter Vista und Windows 7 läuft.
Bei Windows7 ist ein virtuelles XP dabei oder so... hust..
EDIT2: Also nochmal zum verständnis. Wenn ich eine Distribution benutze und ein Programm installieren will, dass es im Paketmanager aber nicht gibt. Was mache ich dann? Kann ich es dann gar nicht installieren oder kann ich mir dann einfach die .tar.gz runterladen und es manuell installieren? Gibt es jedes Programm als .tar.gz?
Du kannst Programme aus dem Quellcode kompilieren. Natürlich nur wenn die Abhängigkeiten erfüllt sind bzw. du diese erfüllen kannst indem du zb. alle benötigten Abhängigkeiten (die nicht in de Quellen sind) ebenfalls kompilierst. Das macht ganz schnell keinen Spass mehr. ☺ GetDeb versucht zusätzliche Software und Updates von Programmen anzubieten. (Fremdpakete können das System gefährden.)
|
barzefutz
(Themenstarter)
Anmeldungsdatum: 21. Dezember 2012
Beiträge: 7
|
Warum selber kompilieren? Gibt es nicht vorkompilierte Programme? Wenn ich z.B. den Firefox als .tar.gz runterlade, muss ich das dann kompilieren? Und zu den Abhängigkeiten: Sind das denn immer so viele? Es kommt doch bestimmt auch vor dass es gar keine Abhängigkeiten gibt. Bei Firefox z.B. dürfte es doch nicht so viele geben. Oder bei irgendwelchen kleinen Tools doch auch eher nicht.
|
kaputtnik
Anmeldungsdatum: 31. Dezember 2007
Beiträge: 9245
|
Um die Verwirrung komplett zu machen: Es gibt ja auch noch PPAs von privaten Anwendern, die versuchen eine fehlende Software anzubieten. Ein Grundsatz bei freier Software ist: Ein Programm für einen Zweck, aber dieses Programm soll den Zweck so gut wie möglich erfüllen. So kann es passieren, das ein Programm viele andere Programme benötigt, um seinen Funktionsumfang zu erweitern oder gar zu ermöglichen. Zum Beispiel sind viele grafische Programme
nur eine "hübschere" Benutzerschnittstelle für Terminalprogramme (also Programme die sich ansonsten nur über ein Terminal bedienen lassen).
|
tomatensticks
Anmeldungsdatum: 29. August 2011
Beiträge: 47
|
barzefutz schrieb: Warum selber kompilieren? Gibt es nicht vorkompilierte Programme? Wenn ich z.B. den Firefox als .tar.gz runterlade, muss ich das dann kompilieren? Und zu den Abhängigkeiten: Sind das denn immer so viele? Es kommt doch bestimmt auch vor dass es gar keine Abhängigkeiten gibt. Bei Firefox z.B. dürfte es doch nicht so viele geben. Oder bei irgendwelchen kleinen Tools doch auch eher nicht.
Bei den Abhängigkeiten muss man vor allen Dingen im Sinn haben, dass Abhängigkeiten auch Abhängigkeiten haben! Daraus ergibt sich unter Umständen ein riesiger Baum! Aber: man kann auch immer alles "statisch" zusammenbauen, dann kommt in etwa wie bei Windows oder Mac OS X eine (große) ausführbare Datei bei raus. Das Problem daran ist dann wieder ein philosophisches: wenn alles da drin steckt und in einer Abhängigkeit einer Abhängigkeit einer Abhängigkeit wird ein Fehler gefunden, dann reicht es nicht die eine Abhängigkeit zu fixen und alle abhängigen Programme erhalten den Fix "automagisch", nein, Du musst selber eine neue Version mit der großen ausführbaren Datei organisieren, die den Fix enthält. Über alle ausführbaren Dateien hinweg wäre dieser Aufwand riesig! ... und deswegen hat unter Windows fast jedes Programm mittlerweile einen eigenen Update-Dienst, weil Du sonst die ganze Zeit alte Löcher mit Dir mitschleppst... Grüße Tomate
|
Das_Wort
Anmeldungsdatum: 23. Dezember 2009
Beiträge: 5263
|
kaputtnik schrieb: Ein Grundsatz bei freier Software ist: Ein Programm für einen Zweck, aber dieses Programm soll den Zweck so gut wie möglich erfüllen.
Ne, eigentlich nicht. Das ist ein Grundsatz aus der Unix-Philosophie. bei Freier Software gehts um die Erreichbarkeit von Sourcen etc. pp. kennst du ja 😉 bartzefutz nehmen wir doch mal ein praktisches Beispiel, dann erklärt es sich leichter. Suchst du ein bestimmtes Programm?
|
glasenisback
Anmeldungsdatum: 20. November 2011
Beiträge: 1603
|
barzefutz schrieb: Also ganz ehrlich, mich überzeugt das mit den Paketmanagern nicht. Ist ja schön und gut dass sie für mich die Abhängigkeiten mitinstallieren und alles, aber wenn es halt mein Wunschprogramm nicht für meine Distribution gibt bin ich aufgeschmissen.
Wenn du nicht gerade eine superexotische Distribution einsetzt, wirst du so gut wie jedes Programm im passenden Format finden. Gerade bei Ubuntu stehen die Chancen sehr gut.
Wenn ich das jetzt mal mit Windows vergleiche, da ist es ja (fast immer) so, das ein und dasselbe Programm sowohl unter Windows XP als auch unter Vista und Windows 7 läuft.
Der Vorteil an einem Paketmanager ist, dass das System sich um die Aktualisierung aller dort registrierten Programme kümmert (Voraussetzung ist nur, dass das Paket per Paketquelle und nicht händisch installiert wurde). Das andauernde händische Aktualisieren, die nervigen Update-Popups der diversen Programme (Adobe, Java, Apple, usw.) existieren unter Linux nicht.
Wieso machen es die Entwickler nicht so wie bei Firefox und bieten eine Datei an die auf allen Distributionen funktioniert? Ich versteh das nicht.
Das ist halt die Entscheidung der einzelnen Entwickler.
Was mache ich dann? Kann ich es dann gar nicht installieren oder kann ich mir dann einfach die .tar.gz runterladen und es manuell installieren?
Normalerweise bemüht man dann als allererstes eine Suchmaschine. Ich schaue dort z.B. immer erst nach einem passenden PPA für meine Ubuntu-Version, wobei man bei PPAs immer ein wenig Vorsicht walten lassen muss. Am besten sind immer PPAs die von den Entwicklern selbst gepflegt werden. Wenn kein PPA existiert, schaue ich direkt beim Entwickler nach, ob er passende Pakete für Ubuntu anbietet. Falls nicht schaue ich ob er wenigstens ein Binärpaket im Tar-Format anbietet. Falls das auch nicht, bleibt am Ende immer noch der Quellcode übrig. Das ist für einen Einsteiger/Anfänger immer die schlechteste Lösung, da man bei größeren Programmen immer einen Riesenstapel von Entwicklungspaketen installieren muss und man mangels Erfahrung nicht weiß welche notwendig sind (Trotz README-Dateien).
Gibt es jedes Programm als .tar.gz?
Bezogen auf den Quellcode, ja. Bezogen auf den Binärcode, muss es heißen "Kommt darauf an". Heute ist es eher so, dass man die meisten Programme erst einmal im DEB oder RPM-Format findet und dann erst als Tar-Archiv.
Und kann es sein, dass ein Programm mit einer bestimmten Distribution funktioniert, aber mit einer anderen nicht?
Das kommt auf das Programm an. Heutzutage kann man eigentlich so gut wie jedes externe Programm mit ein wenig Aufwand auf jeder beliebigen Distribution zum Laufen bekommen. RPM-Pakete lassen sich recht einfach in DEB-Pakete umwandeln und dann meist auch fehlerfrei installieren und ausführen. Manchmal muss man händisch ein paar Symlinks von Bibliotheken anpassen, aber das war es auch schon.
Im Fall von Ubuntu wirst du auf so einen Fall aber sehr selten treffen, da Ubuntu einfach zu weit verbreitet ist um nicht unterstützt zu sein.
Woher weiss man das im Voraus?
Gar nicht. Oft hilft da nur ausprobieren.
|
nightsky
Anmeldungsdatum: 20. Januar 2011
Beiträge: 312
|
barzefutz schrieb: Danke für die Riesenantwort ☺ Also ganz ehrlich, mich überzeugt das mit den Paketmanagern nicht. Ist ja schön und gut dass sie für mich die Abhängigkeiten mitinstallieren und alles, aber wenn es halt mein Wunschprogramm nicht für meine Distribution gibt bin ich aufgeschmissen.
Also im Prinzip hast du Recht, das mit den hundert Paketformaten ist nicht das Gelbe vom Ei. Viele Leute sehen das auch als eines der großen Probleme von Linux, denn wenn sich ein Entwickler die Frage stellt, ob er sein Programm auch für Linux anbieten will, dann denkt er sich gleich "oh, aber dann muss ich ja ziemlich viele verschiedene Pakete machen..."
Denn es soll ja auf Debian Squeeze ebenso laufen wie auf Ubuntu, oder Suse, oder Arch Linux.... Allerdings ist es wirklich erstaunlich wieviele Programme tatsächlich als Paket für die großen Distributionen vorhanden sind.
|
V_for_Vortex
Anmeldungsdatum: 1. Februar 2007
Beiträge: 12084
|
Als reiner Anwender ziehe ich die Bequemlichkeit einer Paketverwaltung dem Installations- und Aktualisierungsstress jederzeit vor, den ich von Windows gewohnt war (bis hin zur Installation von Fremdprogrammen, die die Aktualisierung aller anderen ihnen bekannten Programme überwachten – fast schon wie eine Paketverwaltung 😉 ). Bis auf kommerzielle Spiele wie Minecraft oder die Humble Indie Bundles habe ich auch seit Jahren kein Programm mehr abseits der riesigen Paketquellen Ubuntus benötigt.
|
Astorek
Anmeldungsdatum: 30. Januar 2008
Beiträge: 171
|
Mal sollte auch nicht vergessen, dass das Paketmanagement-System so erfolgreich ist, dass mittlerweile sogar Microsoft es in Win8 über den Store übernommen hat. Wie schon von mehreren hier gesagt: Der Vorteil dabei ist, dass mit geringem Aufwand das komplette System aktuell gehalten wird... Neue OpenOffice-, Firefox-, KeePass-Version? Button drücken, schon werden aktualisierte Versionen heruntergeladen und vollautomatisch installiert... Windows hatte btw. in den 90ern dasselbe Problem, wurde damals als "DLL-Hell" bezeichnet. Microsoft hat das so in den Griff bekommen, indem mittlerweile jede mögliche DLL mitgeliefert wird. Unix/Linux hat es halt über Paketmanager gelöst, was zwar - zugegeben - für Entwickler ein Mehraufwand ist, für den Enduser hingegen nichtmehr...
|
Serengeti
Anmeldungsdatum: 24. Februar 2008
Beiträge: 1913
|
Den Faktor Abhängigkeiten gibt es unter Windows aus einem Grund nicht so wie unter Linux. Unter Windows bringen üblicherweise die Programme immer alle Abhängigkeiten die Windows nicht üblicherweise schon anbietet selber mit.
Dabei hatte ich hier unter Windows 7 letztens mal das Problem, dass zwei Programme eine Bibliothek in Windows ablegen wollten, die aber beide gleich hiessen. Das war ein unlösbares Problem.
|