Dienstag, 29. Mai 2012

Themen


Paketverwaltung

aptitude mit Kommandozeilenbefehlen (Debian)

Eine Software-Paketverwaltung (englisch package management) ermöglicht die komfortable Verwaltung von Software auf einem Computersystem. Dazu gehören das Installieren, Aktualisieren und Deinstallieren von Software in Paketform.

Arbeitsweise

Voraussetzung für Paket-Management ist, dass die zu installierende Software als entsprechendes Paket vorliegt, typischerweise wird dies von dem Betriebssystemanbieter, unter Linux den Distributionen, erstellt und angeboten. Software wird deshalb typischerweise systemweit installiert. Änderungen, welche die Paketverwaltung zur Installation des Pakets am System vornehmen muss, werden von dieser aus dem Paket ausgelesen und umgesetzt. Erkennt die Paketverwaltung dabei, dass noch weitere Software für das Funktionieren benötigt wird (sogenannte Abhängigkeit, z.B. eine Programmbibliothek), aber noch nicht installiert ist, warnt sie entweder, oder versucht sie die fehlende Software mit den ihr zur Verfügung stehenden Mitteln z. B. aus einem Repository nachzuladen und vorweg zu installieren.

Soll eine installierte Software gelöscht werden, nimmt die Paketverwaltung dann wieder die Informationen des Pakets, um es anhand dessen Konfiguration zu ändern und Dateien zu löschen.

Eigenschaften

Mit einer Paketverwaltung vereinfacht sich die Installation eines Programms erheblich, da Programme nicht erst einzeln heruntergeladen, kompiliert und installiert werden müssen. Außerdem überwachen die meisten Paketverwaltungen Konflikte zwischen Paketen mit gleichen Inhalten und verhindern so eine Systeminstabilität in dieser Beziehung.

Ebenso ist das Löschen von Software deutlich vereinfacht: Da die Paketverwaltung sich alle zu einem Paket gehörende Software merkt, kann bei einem Löschen eines Paketes sämtliche nicht mehr benötigte Software mit entfernt werden.

Definitionsüberschneidung

Es gibt genau genommen zwei Arten von Paketverwaltungen: Auf der einen Seite stehen die Programme, die aus anderen Quellen Pakete nachladen können, um Abhängigkeiten aufzulösen, auf der anderen Seite diejenigen Programme, die direkt die Pakete installieren oder löschen, aber keine Abhängigkeitsverwaltungs- und Konfliktlösungsmechanismen kennen.

Zwei konkrete Fälle: Das Programm RPM kann Pakete vom Typ *.rpm installieren und löschen, das Programm Dpkg kann Pakete vom Typ *.deb installieren und löschen. Beide können aber keine Abhängigkeiten auflösen, da sie keine Funktionen haben, um Software nachzuladen. Dies können höhere Schichten der Paketverwaltungen wie YUM, APT, pkg-get und andere.

Aufbau der Pakete

Ein Paket enthält neben den reinen Programmdateien auch Informationen, wo diese Programmdateien abgelegt werden sollen, welche Konfigurationen am bestehenden System vorgenommen werden müssen, und meist auch, ob und wenn, welche Software noch zusätzlich benötigt wird, damit das Programm funktioniert. Bei der Installation werden die Programmdateien im Paket in das laufende oder zu installierende System hinein entpackt, danach werden die Installationsskripte ausgeführt.

Es gibt mehrere konkurrierende Paketformate, die von unterschiedlichen Paketverwaltungen verarbeitet werden. Die wichtigsten sind:

Paketerstellung

Pakete zu erstellen ist nicht trivial. Auch in kleinen Projekten gibt es meistens einen Packager, der dafür verantwortlich ist, dass Pakete funktionieren.

Der Packager nimmt die Programmquellen und trägt in einer Datei ein, welche Programme zur Kompilierung benötigt werden. Dann erstellt er Regeln, wie sich das Programm automatisiert kompilieren lässt. Außerdem sammelt und schreibt er Patches, welche automatisch eingespielt werden, und schreibt eine kurze Beschreibung des Pakets.

Das fertige Quellpaket kann nun automatisch für die gewünschte Plattform vorkompiliert werden.

Besondere Pakete

Zu beachten ist, dass bei einigen Linux-Distributionen viele Pakete zweimal vorkommen. Dabei handelt es sich beim zweiten Eintrag um das eigentliche Paket mit einem nachgestellten dev oder devel. Diese Abkürzung steht dabei für Development (englisch für Entwicklung), was darauf hinweist, dass dort Dateien enthalten sind, die für das Funktionieren des Programms nicht wichtig sind, aber gebraucht werden, wenn man darauf aufbauend weitere Software entwickeln will.

Rezeption und Diskussion

Paketverwaltungen werden als einer der großen Vorteile und Erfolge der unixoiden Betriebssysteme beschrieben, z.B. von Ian Murdock als "the single biggest advancement Linux has brought to the industry".[1] Eine weitere typische Eigenschaft dieser ist jedoch auch die Verwischung der Grenzen zwischen Anwendungen und Betriebssystem durch die integrierte Verwaltung durch die Distributionen, d.h. das Betriebssystem agiert nicht als Plattform für Anwendungen sondern beinhaltet diese.[2][3] Einerseits ist mit systemweitem Paketmanagment ein konfliktfreier Betrieb (ohne Bibliotheks-Konflikte) von Betriebssystem mit den Applikationen sichergestellt, anderseits wird eine direkte Verteilung von Anwendungssoftware durch den Entwickler zu den Kunden schwieriger[4][5], als auch die Portable Software Erstellung.[6] Durch inkompatible Pakete zwischen den Distributionen erschwert sich die Verbreitung von Software ebenfalls[7], hiergegen versucht die LSB Standards zu definieren und verbreiten, bis jetzt jedoch nur mit begrenztem Erfolg.[8]

Weitere Nachteile ergeben sich aus den begrenzten Möglichkeiten, Programme weiter anzupassen, da die meisten Paketverwaltungen nur Binärformate unterstützen, entfällt die Möglichkeit, in diesem System auch speziell optimierte Software zu kompilieren.

Auch kann es bei der Softwareverwaltung zu Konflikten kommen (die aber detektiert werden): Sind in den Paketen A und B teilweise gleiche Dateien enthalten, können nicht beide Pakete gleichzeitig installiert werden. Ebenso kann es passieren, dass bei einer Aktualisierung des Pakets X auch die Aktualisierung des Pakets Y gefordert wird, Paket Z aber fordert, dass Y die Version beibehält – eine Aktualisierung ist dann nicht möglich. Es zeichnet eine gute Paketverwaltung aus, Konflikte und Abhängigkeiten richtig zu berechnen und zur bestmöglichen Lösung zu kommen, also die richtigen Pakete zu aktualisieren, wenn nötig veraltete Pakete zu löschen und den Konflikt so bestmöglich zu lösen.

Quellenbasierte Distributionen wie etwa Gentoo Linux begegnen diesen Problemen so: Hier werden die Software-Pakete erst auf dem Zielrechner kompiliert. Dabei ist es auch möglich, die Komponenten, und damit die Abhängigkeiten eines Paketes zu gestalten. Sollte ein bereits installiertes Paket nicht die benötigten Bibliotheken für ein neues Paket installiert haben, wird es kurzerhand neu übersetzt und installiert.

Beispiele für Paketverwaltungen

Übersicht verbreiteter Updatesoftware für Windows und Mac OS X

Bezeichnung Lizenz Betriebssystem Besonderheit
AppFresh Freeware Mac OS X Prüft alle installierten Programme, Widgets und Plug-ins auf deren Aktualität auf iusethis.com, erleichtert das Herunterladen und Installieren der neuen Dateien
Ios Freeware Windows Automatisiert Installation und Update, verwaltet Deinstallationen. Prüfung auf Aktualisierungen alle 10 Minuten
AppGet Freeware Windows Macht den Benutzer auf aktualisierbare Software aufmerksam. Basiert auf Community. Keine aktuelle Software!
Appsnap Open Source Windows Sehr komfortable, funktionsreiche Paketverwaltung.
Appupdater Open Source Windows Viele Funktionen und Konfigurationsmöglichkeiten, ähnlich wie apt-get oder yum unter Linux. Für den Einsatz in einer Firma geeignet.
FileHippo Update Checker Freeware Windows Macht den Benutzer auf aktualisierbare Software aufmerksam.
GetIt Open Source Windows Verwendet die Programmlisten mehrerer Paketverwaltungen um eine große Meta-Liste anzubieten.
GratisPC Freeware Windows Funktionsreicher Paketinstaller mit Deinstallationsfunktion. Optisch ähnlich dem Paketmanager von Ubuntu. Aktive Aktualisierungsfunktion. Standard-Repository mit über 500 aktuellen Packages, selbst erweiterbar.
Installpad Freeware Windows Sehr einfach gehalten: Kleine Programmliste, keine Aktualisierungsfunktion. Keine aktuelle Software!
Luffi Freeware Windows Versucht, tatsächlich eine Paketverwaltung zu sein, und kommt obiger Definition sehr nahe.
Npackd Open Source Windows Installation, Deinstallation, Aktualisierung. Die Standard-Repository enthält über 200 aktuelle Packages.
PortableApps.com Updater Open Source Windows Aktualisiert eine Auswahl beliebter portabler Applikationen, die primär für den Einsatz auf USB-Sticks angepasst sind.
PSI Personal Software Inspector Freeware Windows Vergleicht alle installierten Applikationen mit einer Datenbank mit Sicherheitslücken. Beim Patchen hilft die Software mit automatischen Wizards.
Software Informer Freeware Windows Weist den Benutzer auf Updates hin. Basiert auf Community.
SUMo Freeware Windows Freeware, die verfügbare Aktualisierungen anzeigt. Keine direkte Downloadfunktion.
Update Engine Open Source Mac OS X Hält Cocoa-Applikationen, Einstellungen, Bildschirmschoner und beliebige Dateien auf dem aktuellen Stand.
UpdateStar Freeware & Shareware Windows Macht den Benutzer auf Updates für alle installierten Programme aufmerksam. Dient auch als Ersatz für "Add/Remove Programs". Kostenpflichtige Premium-Version erhältlich.
VersionTracker Pro Shareware Windows & Mac OS X Macht den Benutzer auf aktualisierbare Software aufmerksam. Kommerzielles Programm.
Windows-get Open Source Windows Kommandozeilen-basiert, mit einer ähnlichen Syntax wie apt-get unter Linux. Die Programmauswahl ist groß und wird von Freiwilligen aktualisiert und erweitert.
WinLibre Freeware Windows Sehr einfach gehalten: Kleine Programmliste, keine Aktualisierungsfunktion. Keine aktuelle Software!

Einzelnachweise

  1. Ian Murdock (21. Juli 2007): How package management changed everything (englisch). ianmurdock.com. Abgerufen am 1. März 2008.
  2. Tony Mobily (23. Juni 2009): 2009: software installation in GNU/Linux still broken and a path to fixing it (englisch). www.freesoftwaremagazine.com. Abgerufen am 23. März 2010. „Every GNU/Linux distribution at the moment (including Ubuntu) confuses system software with end user software, whereas they are two very different beasts which should be treated very, very differently.
  3. Benjamin Smedberg (4. Oktober 2006): Is Ubuntu an Operating System? (englisch). Abgerufen am 20. Januar 2012. „Ubuntu isn’t trying to be a platform for mass-market application software: it is trying to be the primary provider of both the operating system and all the application software that a typical user would want to run on his machine. Most Linux distributions are like this, and I think it is a dangerous trend that will stifle innovation and usability, or even worse make the desktop irrelevant.
  4. Joe Brockmeier (30. März 2005): Autopackage 1.0 (englisch). lwn.net. Abgerufen am 24. Januar 2012. „Overall, Autopackage is a very promising project. It makes it possible for third-parties to distribute software for Linux users [...] It's too bad that such a system is still necessary at this time, but it fills a necessary gap until the day that Linux distributions can settle on a standard base system and packaging format.
  5. Nicholas Vining (13. Oktober 2010): Dear Linux Community: We Need To Talk. (englisch). gaslamp Games. Abgerufen am 30. Januar 2011.
  6. Simon Peter (2010): AppImageKit Documentation 1.0 (englisch) (pdf) S. 2-3. PortableLinuxApps.org. Abgerufen am 29. Juli 2011. „Not easy to move an app from one machine to another: If you've used an app on one machine and decide that you would like to use the same app either under a different base operating system (say, you want to use OpenOffice on Fedora after having used it on Ubuntu) or if you would simply take the app from one machine to another (say from the desktop computer to the netbook), you have to download and install the app again (if you did not keep around the installation files and if the two operating systems don't share the exact same package format - both of which is rather unlikely).
  7. Eskild Hustvedt (24. November 2009): Playing well with distros (englisch). Linux Game Publishing. Abgerufen am 15. Januar 2012.
  8. Eric Brown (8. Dezember 2010): LSB 4.0 certifications aim to heal Linux fragmentation (englisch). linuxfordevices.com. Abgerufen am 16. November 2011. „The LSB spec outlines interoperability between applications and the Linux operating system, "allowing application developers to target multiple versions of Linux with just one software package," says the LF. Launched in the late '90s, the LSB working group released its first major LSB 1.1 specification in 2001. [...]
  9. Using aapt (englisch)
  10. Bruce Byfield (1. Dezember 2005): Autopackage: Toward a universal package manager for the desktop (englisch). linux.com. Archiviert vom Original am 13. Januar 2008. Abgerufen am 12. Februar 2012.
aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Diese Seite wurde zuletzt am 26. März 2012 um 17:48 Uhr geändert.

Dieser Artikel basiert auf dem Artikel Paketverwaltung aus der freien Enzyklopädie Wikipedia und ist unter der Lizenz Creative Commons Attribution/Share Alike verfügbar. Zusätzliche Bedingungen können anwendbar sein. In der Wikipedia ist eine Liste der Autoren verfügbar.

TOP



TOP