Forum: PC-Programmierung Paketverwaltung unter Windows/Mac


von package maintainer (Gast)


Lesenswert?

Hallo,

wie funktioniert die Paketverwaltung unter Windows und Mac OSX?
Grundsätzlich haben beide Betriebssysteme ja keine Paketverwaltung an 
Bord, trotzdem kann man so gut wie alle Programme mit einem einzelnen 
Installer installieren.
Wie handhaben diese Installer das also mit Abhängigkeiten, linken sie 
alle Bibliotheken statisch ein oder installieren sie diese separat?

Wie funktioniert es unter Windows, dass über eine komplette Version 
hinweg Gerätetreiber kompatibel sind, statt wie bei zB Linux bei 
Kernelupdates neu gelinkt werden?

Gibt es Gründe, warum manche Treiber im Linuxkernel, jedoch nicht bei 
Windows dabei sind? (zB USB-Seriell Wandler (FT232 etc))

Ich freue mich auf sachliche (nicht religiöse :)) Antworten

von Troll (Gast)


Lesenswert?

package maintainer schrieb:
> trotzdem kann man so gut wie alle Programme mit einem einzelnen
> Installer installieren.

Ach kann man das? Würdest du uns den Installer auch nennen? Du wirst 
wohl eher einen Installer für MS-Programme meinen.

package maintainer schrieb:
> Wie funktioniert es unter Windows, dass über eine komplette Version
> hinweg Gerätetreiber kompatibel sind, statt wie bei zB Linux bei
> Kernelupdates neu gelinkt werden?

Eine Windowsversion ist eine Windowsversion. Außer Sicherheitsupdates 
ändert sich am Kernel normal nicht mehr viel. Erst zur nächsten Version 
kommt wieder wirklich neues dazu.

package maintainer schrieb:
> Gibt es Gründe, warum manche Treiber im Linuxkernel, jedoch nicht bei
> Windows dabei sind? (zB USB-Seriell Wandler (FT232 etc))

Die Treiber im Linux-Kernel sind oft selbst entwickelt und nicht vom 
Hersteller.

von Der Weise (Gast)


Lesenswert?

> Wie handhaben diese Installer das also mit Abhängigkeiten, linken sie
> alle Bibliotheken statisch ein oder installieren sie diese separat?
Jeder Installer installiert alle Bibliotheken mit, in der benötigten 
Version. Das Resultat ist dann, das häufig benutzte Bibliotheken zig mal 
vorhanden sind, wie libz, libpng, etc. Früher war das ja sogar mit 
DirectX so... Aber wen scherts, Festplatten sind billig. Und dass man 
nicht im Falle einer Sicherheitslücke die Bibliothek eben schnell auf 
eine neue gefixte Version updaten kann macht auch nichts, denn wofür 
gibt es Virenscanner?
> Wie funktioniert es unter Windows, dass über eine komplette Version
> hinweg Gerätetreiber kompatibel sind, statt wie bei zB Linux bei
> Kernelupdates neu gelinkt werden?
Ganz einfach: Bei Windows gibts keine Kernelupdates, also bleibt das API 
gleich...
> Gibt es Gründe, warum manche Treiber im Linuxkernel, jedoch nicht bei
> Windows dabei sind? (zB USB-Seriell Wandler (FT232 etc))
Vermutlich rechtliche Gründe, dass sie das nicht einfach einbauen 
können. Und dass Windows dann 100GByte groß sein würde, denn scheinbar 
muss ja heutzutage selbst ein Ethernet-Treiber 100MByte groß sein...
> Ich freue mich auf sachliche (nicht religiöse :)) Antworten
Bitte, völlig atheistisch ;-)

von Peter II (Gast)


Lesenswert?

Der Weise schrieb:
> Ganz einfach: Bei Windows gibts keine Kernelupdates, also bleibt das API
> gleich...
nein, der Kernel wird mit jeden SP und auch einigen Update erneuert. 
Aber MS hat sich vorher ein paar geanken zu den API gemacht, sie müssen 
nicht ständig die schnittstellen zum Kernel anpassen. Das hat bestimmt 
auch nachteile aber der grosse vorteil ist, das alle Treiber nach einem 
update auch noch gehen. Linux nimmt sich die freiheit bei jeder Kernel 
version an den Kernelschnittstellen rumzubasteln, weil sie auch alles 
Treiber selber pflegen. Jeder Entwickler der aber seine Treiber nicht 
als opensource veröffentlichen will oder kann hat das nachsehen.

von XTerminator (Gast)


Lesenswert?

Der Weise schrieb:
> Das Resultat ist dann, das häufig benutzte Bibliotheken zig mal
> vorhanden sind, wie libz, libpng, etc.

Und was ist deine Alternative?

von Peter II (Gast)


Lesenswert?

Der Weise schrieb:
> Jeder Installer installiert alle Bibliotheken mit, in der benötigten
> Version. Das Resultat ist dann, das häufig benutzte Bibliotheken zig mal
> vorhanden sind, wie libz, libpng, etc. Früher war das ja sogar mit
> DirectX so...
das ist zwar oft so, liegt aber nicht an MS. Sie habe die möglichkeit 
für dlls die in System32 liegen einen zähler mitzuführen. Jedes Programm 
was die dll braucht macht +1 und bei deinstall wird wieder -1 gemacht, 
wenn er 0 ist dann fragt der Installer ob er die dll mit löschen soll.

von XTerminator (Gast)


Lesenswert?

Dann würden aber noch immer nicht mehrere DLLs rumliegen. Es geht wohl 
um verschiedene Versionen einer DLL. Und die müssen alle da sein.

Gibt keine Alternative.

von Peter II (Gast)


Lesenswert?

XTerminator schrieb:
> Dann würden aber noch immer nicht mehrere DLLs rumliegen. Es geht wohl
> um verschiedene Versionen einer DLL. Und die müssen alle da sein.
kommt darauf an. Wenn es schnittstellen kompatibel ist dann sollte sie 
gleich heisen und muss nur einmal da sein.
Wenn an der Schnittstelle etwas geändert wird, dann sollte es im namen 
erkennbar sein. Dann gibt es mehre davon.

Beispiel:
  msvcrt80.dll
  msvcrt90.dll
  msvcrt100.dll

wenn es nur ein sicherheitsupdate ist, wenn wir sie überschrieben.

von XTerminator (Gast)


Lesenswert?

Na also, nix einzusparen.

Die Kompatibilität muß sich übrigens auf die ABI erstrecken, nicht nur 
die API. Klar hats Linux da leichter. Die Distribution baut halt alles 
neu gegen die neue Lib...

von Andreas B. (andreasb)


Lesenswert?

Peter II schrieb:
> Der Weise schrieb:
>> Jeder Installer installiert alle Bibliotheken mit, in der benötigten
>> Version. Das Resultat ist dann, das häufig benutzte Bibliotheken zig mal
>> vorhanden sind, wie libz, libpng, etc. Früher war das ja sogar mit
>> DirectX so...
> das ist zwar oft so, liegt aber nicht an MS. Sie habe die möglichkeit
> für dlls die in System32 liegen einen zähler mitzuführen. Jedes Programm
> was die dll braucht macht +1 und bei deinstall wird wieder -1 gemacht,
> wenn er 0 ist dann fragt der Installer ob er die dll mit löschen soll.

Funktioniert nur leider nicht, da jede Applikation eine andere Version 
braucht, die ggf. inkompatibel ist, daher wird fast immer im 
Programmordner installiert / statisch gelinkt.

Dies funktioniert unter Linux auch nur weil die Abhängigkeiten in den 
Packages bekannt sind, bei Windows Paketen ist dies nicht bekannt.

Mit einem Packagesystem ist es auch nicht möglich das man neue und 
veraltete Software verwendet wird, es wird entweder alles oder nichts 
upgedatet. Bei Windows muss ja jedes Programm manuell geupdatet werden, 
was somit ein ziemliches Versionschaos mit sich bringt.

Mit Windows 8 wird ja ein Appstore kommen, mal schauen ob sich da etwas 
in diese Richtung tut, aber warscheinlich nicht...

Peter II schrieb:
> Der Weise schrieb:
>> Ganz einfach: Bei Windows gibts keine Kernelupdates, also bleibt das API
>> gleich...
> nein, der Kernel wird mit jeden SP und auch einigen Update erneuert.
> Aber MS hat sich vorher ein paar geanken zu den API gemacht, sie müssen
> nicht ständig die schnittstellen zum Kernel anpassen. Das hat bestimmt
> auch nachteile aber der grosse vorteil ist, das alle Treiber nach einem
> update auch noch gehen. Linux nimmt sich die freiheit bei jeder Kernel
> version an den Kernelschnittstellen rumzubasteln, weil sie auch alles
> Treiber selber pflegen. Jeder Entwickler der aber seine Treiber nicht
> als opensource veröffentlichen will oder kann hat das nachsehen.

Naja, es wird nie etwas grosses nachgeliefert, wenn du etwas neues 
willst, also ein Mehrwert, musst du bei MS immer dafür zahlen.

Trotzdem gibt es teilweise Änderungen bei SPs, was dann auch dazu führen 
kann das gewisse Treiber nicht mehr funktionieren. Da die wenigsten 
Treiber unter Windows Open Source sind ist man dann auf den Hersteller 
angewiesen.

Ist die Supportzeit des Herstellers abgelaufen, kann man die 
Entsprechende Hardware nicht mehr unter einer aktuellen Windows Version 
verwenden.

Bei Linux werden die Treiber einfach nachgezogen.

package maintainer schrieb:
> Gibt es Gründe, warum manche Treiber im Linuxkernel, jedoch nicht bei
> Windows dabei sind? (zB USB-Seriell Wandler (FT232 etc))

Wer einen Open Source Treiber für Linux schreibt wird den entweder 
selbst dem Kernel hinzufügen, oder jemand anders wird das tun.


Ich weiss nicht genau wie du einen Treiber in Windows kriegst, aber 
alleine für die Zertifizierung eines Treibers wird viel Geld verlangt.
Zudem wird MS keine GPL Treiber in Windows aufnehmen.


mfg Andreas

von Peter II (Gast)


Lesenswert?

Andreas B. schrieb:
> Funktioniert nur leider nicht, da jede Applikation eine andere Version
> braucht, die ggf. inkompatibel ist, daher wird fast immer im
> Programmordner installiert / statisch gelinkt.
ebend nicht, wenn eine DLL gleich heist, sollte sie immer kompatibiebel 
sein, es dürfen also nur fehler entfernt werden. Wenn sie eine neue 
funktionen bekommt dann sollte sie einen neuen namen bekommen. Dann 
würde das ganze schon funktionieren. Leider macht es so gut wie niemand.

Der installier kann dann sicherstellen das niemals eine älter datei eine 
neuere ersetzt.

> Trotzdem gibt es teilweise Änderungen bei SPs, was dann auch dazu führen
> kann das gewisse Treiber nicht mehr funktionieren.
es gehen bloß die Treiber nicht mehr, die vorher zufällig funktioniert 
haben. Jeder Treiber der sich auch an das kleingedruckte von der doku 
gehalten hat wird nach einem update noch funktioneren.

von Andreas B. (andreasb)


Lesenswert?

Peter II schrieb:
>> Trotzdem gibt es teilweise Änderungen bei SPs, was dann auch dazu führen
>> kann das gewisse Treiber nicht mehr funktionieren.
> es gehen bloß die Treiber nicht mehr, die vorher zufällig funktioniert
> haben. Jeder Treiber der sich auch an das kleingedruckte von der doku
> gehalten hat wird nach einem update noch funktioneren.

Nur ein Beispiel: 
http://stackoverflow.com/questions/423391/windows-api-to-determine-service-pack-version

Natürlich hast du theoretisch Recht. Jedoch ist auch nicht immer alles 
korrekt dokumentiert, geschweige denn wird die Doku immer zu 100% 
richtig interpretiert oder gelesen.


mfg Andreas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

package maintainer schrieb:
> Wie handhaben diese Installer das also mit Abhängigkeiten, linken sie
> alle Bibliotheken statisch ein oder installieren sie diese separat?

Mac OS X: die meisten Bibliotheken sind Teil des Betriebssystems. Wenn 
ein Entwickler für seine Anwendung zusätzliche Bibliotheken benötigt, 
dann muss er sie im Installationspaket mitliefern und zur Aktualisierung 
ein neues Paket bereitstellen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.