Portable Software

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Portable Software (von lateinisch portare ‚tragen‘, ‚mit sich tragen‘), auch Standalone-Software oder (USB-)Stick­-Ware genannt, ist Software, typischerweise Anwendungssoftware, die ohne weitere Anpassungen oder Installationen auf verschiedenen Computern läuft. Man kann sie zum Beispiel auf einen Wechseldatenträger kopieren und von dort aus auf jedem (kompatiblen) Computer ausführen, ohne sie auf diesem zu installieren.

Motivation und Nutzen[Bearbeiten]

Bestimmte Programme, aber auch deren Einstellungen und persönliche Daten, möchten viele Nutzer an verschiedenen Computern zur Verfügung haben. Mit Hilfe portabler Software können diese auf einen USB-Stick (oder einen anderen Wechseldatenträger) kopiert werden, so dass der Benutzer nur diesen Stick einstecken muss, um Zugriff auf seine Programme und Einstellungen zu haben.

Da portable Software keine Spuren auf dem Wirtscomputer hinterlässt und keine Installation braucht, kann man sie auch auf Computern nutzen, auf denen diese Software nicht vorhanden ist, man keine Administrator-Rechte hat oder auch keine Schreibrechte auf einem System-Datenträger hat.

Definition und Abgrenzung[Bearbeiten]

Wozu eine Portable Software als „portabel“ bzw. „unabhängig“ angenommen wird, variiert etwas: Teilweise wird die Unabhängigkeit innerhalb einer (Betriebs)system-Installation gemeint (d. h. die Anwendungsprogramme können also ohne Verlust der Funktionalität im Verzeichnisbaum verschoben werden), manchmal wird damit die Unabhängigkeit von einem spezifischen Hardwaresystem gemeint (d. h. die Software ist auch auf anderen aber kompatiblen physikalischen Rechnersystemen voll funktionsfähig). Die Unabhängigkeit von spezifischen Betriebssystem-Familien, normalerweise als Plattformunabhängigkeit bezeichnet, ist nicht gemeint, wenn von Portabler Software gesprochen wird, da dies eine Qualität ist, die typischerweise über die Nutzungsszenarien von Portabler Software hinausgeht.

Für den häufigsten Nutzungsfall Anwendungsprogramme, kann Portable Software auch als Variante einer Anwendungsvirtualisierung verstanden werden. Mit einer weitergehenden Systemvirtualisierung können zwar ebenfalls portable Eigenschaften erzielt werden, jedoch mit zusätzlichem Aufwand und weiteren Nachteilen (Dateigröße, Leistungsfähigkeit, schlechtere Integration).

Eigenschaften[Bearbeiten]

Prinzipiell interagiert Portable Software nur wenig mit dem Betriebssystem bzw. ist nicht (oder nur schwach) in dieses integriert. Es hängt dementsprechend nur von einigen wenigen Eigenschaften des spezifischen Betriebssystems und des (physischen) Computersystems ab.

Keine Installation notwendig[Bearbeiten]

Typischerweise braucht Portable Software keine Installation und kann direkt vom Trägermedium aus verwendet werden. Manchmal wird sie auch durch Kopieren in ein (beliebiges) Wirtsrechner Verzeichnis gebrauchsfertig gemacht. Meist kann die gebrauchsfertige Software auch nach Benutzung durch einfaches Kopieren dupliziert werden, was für eine einfache Datensicherung auf einem weiteren Datenträger sowie ein einfaches Weitergeben der Software vorteilhaft ist. Portable Software wird häufig als gepacktes Archiv verbreitet, welches nur in ein Verzeichnis entpackt werden muss, ohne dass systemspezifische Installationsprogramme benötigt werden. Dieses einfache Auspacken wird zum Teil irreführend auch als Installieren bezeichnet, obwohl keine tiefere Integration in das Wirtssystem stattfindet.

Wird eine portable Software doch „installiert“, geht es dabei um die Einrichtung unter sehr nicht-restriktiven Bedingungen, d. h. der Ablageort kann frei gewählt werden, die vorausgesetzten Systembibliotheken sind minimiert, und spezielle Nutzerrechte (Admin oder Root) sind nicht notwendig usw.[1][2]

Keine Spuren auf dem Wirtssystem[Bearbeiten]

Im Idealfall hinterlässt portable Software keine Spuren auf dem Wirtssystem. Spuren können einerseits Installationseinträge jeglicher Art (zum Beispiel in der Registrierungsdatenbank, im Benutzerprofil oder Ähnliches) oder aber Benutzerdaten sein, die nicht auf einem fremden Rechner zurückbleiben sollten.

Funktion mit eingeschränkten Rechten[Bearbeiten]

Auf dem Wirtssystem hat man häufig keine Administratorrechte. Die Software soll daher auch mit eingeschränkten Rechten lauffähig sein. Somit kann sie bei ordentlicher Konfiguration des Wirtssystems auch keinen übermäßigen Schaden anrichten.

Das ist allerdings nicht möglich, wenn das Programm direkten Zugriff auf die Hardware oder gewisse Systemkomponenten braucht. So benötigen z. B. die Verschlüsselungsprogramme FreeOTFE oder TrueCrypt selbst im „Portable Mode" bzw. „Traveller Mode“, zum Ver- bzw. Entschlüsseln des Wechseldatenträgers Administratorrechte.

Entwicklung von portablen Programmen[Bearbeiten]

Oft sind portable Programme angepasste Versionen von konventionellen, installationsbedürftigen Programmen. Um sie von diesen zu unterscheiden, wird oft das Prädikat „portable“ vorangestellt. Es gibt auch Programme, die beispielsweise bezüglich der Schreibzugriffe auf die Verhältnisse der speziellen Datenträger (meist Flash-Speicher) zugeschnitten sind. Eine Sonderform ist U3-Software, die nur von einem mit der proprietären U3-Software verträglichen USB-Stick ausgeführt werden kann.

Jedoch kann nicht von jedem Programm eine portable Version erstellt werden.

Grenzen portabler Programme[Bearbeiten]

Hardwareplattform-Abhängigkeit[Bearbeiten]

Anwendungen, welche in einem Binärformat (z. B. ELF oder PE) vorliegen, wurden von einem Compiler für eine spezifische Hardwareplattform generiert (z. B. IA-32). Verschiedene CPU-Architekturen variieren in Befehlssatz, Datenwortgröße (z. B. 32-Bit oder 64-Bit) oder Byte-order. Das beschränkt den portablen Einsatz auf Plattformen der gleichen Hardware. Ein portabler Ansatz zur Umgehung dieser Problematik sind sogenannte Fat Binaries, die Varianten für mehrere Hardwareplattformen enthalten. Beispielsweise setzt Apple seit 2006 Fat Binaries ein, hier Universal Binaries genannt, um den problemarmen Übergang von den PowerPC-CPUs zu den Intel-CPUs zu ermöglichen.[3]

Systemnahe Software[Bearbeiten]

Nicht alle Programme eignen sich zur Verwendung als portable Software. Beispielsweise benötigen Virenwächter, Systemwerkzeuge und andere systemnahe Software die Möglichkeit, tief ins System einzugreifen. Deren portable Versionen haben eine geringere Bedeutung, weil sie in der Regel nicht den gleichen Funktionsumfang wie installierte Software aufweisen können.

Allgemeine Anwendungsprogramme, zum Beispiel Text-Editoren und E-Mail-Clients, kommen hingegen meist ohne Systemeingriffe aus und eignen sich für den portablen Einsatz. So ist zum Beispiel das Office-Paket LibreOffice in einer portablen Version verfügbar.

Rechtliche Probleme[Bearbeiten]

Neben den technischen Aspekten spielen beim Einsatz als portable Software auch die Software-Lizenz und etwaige Kopierschutz-Mechanismen eine Rolle. Häufig ist das Kopieren von Software vom Hersteller oder Lizenzgeber unerwünscht und wird in der Lizenzvereinbarung verboten. Ein Kopierschutz bindet ein Programm oft an ein bestimmtes System – das Binden an einen mobilen Datenträger ist technisch aufwändig und in der Regel nicht vorgesehen. Daher spielt hier freie Software eine entscheidende Rolle, weil sie dem Benutzer das Recht auf eine unbeschränkte Benutzung - auch als portable Software - zusichert. Jedoch verhindert die freie, aber strenge GPL-Lizenz manchmal das statische Einlinken von Bibliotheksabhängigkeiten, um portable Programme zu erzeugen. Die GPL, unter der viele Bibliotheken stehen, schließt dieses aus, wenn das Programm selbst einer weniger restriktiven oder proprietären Lizenz unterliegt.[4]

Sicherheit im Unternehmen[Bearbeiten]

IT-Verantwortliche sind für die Konfiguration und Sicherheit der Systeme im Unternehmensnetzwerk verantwortlich. Wechseldatenträger und die darauf enthaltenen Daten und Programme entziehen sich jedoch deren Kontrolle, und stellen ein Risiko dar. Vorbeugend ist es teilweise üblich, USB-Anschlüsse im BIOS oder im Betriebssystem des Rechners zu sperren.

Betriebssysteme und Portabilität[Bearbeiten]

Windows-Software[Bearbeiten]

Windows mit seinen MS-DOS-Wurzeln besitzt keinen fixen Standard oder eine feste Übereinkunft über den Installationspfad von Programmen, der Anwender wird bei Installationen praktisch immer zu einem Zielpfad befragt. Dadurch sind variierende Ausführungspfade von Programmen häufig kein Problem, sowohl auf Betriebssystem- wie auch auf Anwendungseite, im Gegensatz zu unixoiden Betriebssystemen[5], bei denen sich Standardorte durchgesetzt haben. Die der Portabilität dienliche Ausführbarkeit von Programmen aus beliebigen (Installations)verzeichnissen heraus (siehe[6] Zeile 9) mit eigenen, lokalen Bibliotheken (Private DLLs[7]) ist etwas, das Windows seinem MS-DOS-Ursprung verdankt; die meisten DOS-Programme sind portabel, und nur wenige benötigen spezielle TSR-Programme, welche beim Systemstart geladen werden müssen.

Auch kommt dem Erstellen portabler Software für Windows zugute, dass Abwärtskompatibilität für diese Software-Plattform eine hohe Priorität hat (stabile Funktionsschnittstellen, Verzeichnisstruktur, etc.), es wird also viel Aufwand betrieben, um die Ausführbarkeit binärer Programme über eine breite Palette an Windowsversionen und deren Updates zu gewährleisten.[8]

Jedoch ist die empfohlene Verwendung der zentralen Registrierungsdatenbank seit Windows 95 anstelle lokaler INI-Dateien ein Hindernis für Portabilität unter Windows.[9] Speichern Programme ihre Konfigurationsdaten in der Registry, können diese nicht ohne weiteres zwischen verschiedenen Rechnern kopiert werden, und oft ist auch nicht dokumentiert, in welchem Teil dieser Datenbank ein Programm seine Einstellungen ablegt. Eine verstreute Speicherung von Programmdaten in mehreren Systemverzeichnissen (Profil, Persönliche Einstellungen, Persönliche Lesezeichen etc.) im Rahmen der Multiuserverwaltung verkompliziert die Portabilität ebenfalls.

Linux-Software[Bearbeiten]

Unter Linux werden Programme typischerweise tief ins Betriebssystem integriert, d. h. mit diesem zusammen kompiliert und ausgeliefert (Linux-Distribution). Diese schwache Differenzierung[10][11] zwischen Anwendungen und Betriebssystem, und damit nur schwach ausgeprägtes binäres und stabiles Plattformkonzept[12][13][14][15][16], erschwert die Erstellung portabler Anwendungen deutlich.[17] Dazu gehört die im Allgemeinen strikte, systemweite[10] Verwaltung von Anwendungen und Programmbibliotheken per Paketverwaltung, die Portabilität erschweren. Nach einer Analyse des klik-Projekts über die verschiedenen Paketverwaltungsysteme unter Linux, fehlen den am häufigst genutzten Systemen RPM und APT wichtige Fähigkeiten, um portable Installationen zu ermöglichen. Zu den fehlenden Eigenschaften gehören die Installierbarkeit ohne Root-Rechte ('Non-root package installation'), die Unmöglichkeit, das System oder andere Applikationen zu beschädigen ('Impossible to mess base system', 'Impossible to mess other apps') und die Möglichkeit, mehrere Versionen einer Anwendung zu installieren ('Multiple versions coexist').[1][17]

Auch das Umplatzieren (Relocation) von Anwendungsprogrammen zwischen verschiedene Verzeichnissen ist in Linux nicht vorgesehen, Pfade werden typischerweise zur Compilezeit in der Anwendung hart-codiert.[18] Die zum Autopackage gehörende Bibliothek binreloc bietet eine Funktionalität vergleichbar der Win32-API-Funktion GetModuleFilename(), wodurch Verzeichnis-relokierbare Anwendungen und Bibliotheken möglich werden.

Auch können die Unterschiede der Linux-Distributionen untereinander, also die Variationen in Verzeichnisbaumstruktur und den mitgelieferten Bibliotheken, ein problemfreies, portables Ausführen einer binären Programmdatei verhindern.[19] Der Entwicklungsansatz, distributionsübergreifende und portable Anwendungen über ein vollständiges statisches Linken der Bibliotheksabhängigkeiten zu erzeugen, ist technisch schwierig zu realisieren[15][20], kann auch durch Lizenzkonflikte verhindert werden und wird u. a. aufgrund des Unterlaufens von Distributorinfrastruktur und -updates in der Linux-Community nicht gerne gesehen.[21]

Programmiertechnisch lassen sich portablere Programme auch mit privaten Bibliotheken[7] über einen relativen Bibliothekspfad mit der Linker-Option $ORIGIN erzeugen.[4] Vorteile dieses Ansatzes sind, dass keine Benutzeranpassungen der Bibliothekspfade oder andere Skripte nötig sind (im Gegensatz zu LD_LIBRARY_PATH-Ansätzen[4]) und gleichzeitig die meisten Nachteile des statischen Linkens vermieden werden.

Es existieren einige Ansätze für Installationssysteme, die portablere und distributionsunabhängige Applikationen erlauben, wie Autopackage, RUNZ, PortableLinuxApps[17] (Klik-Nachfolger), Zero Install und CDE[22]. Jedoch folgt jedes dieser Systeme einem anderen Ansatz und deckt damit einen anderen Teilaspekt der Portabilität ab[2]. Außerdem konnten diese Lösungen bis jetzt nur eine begrenzte Verbreitung und Unterstützung in der Linux-Community finden, u. a. wegen verbreiteter Bedenken gegen Nicht-Paketmanagement-basierte Lösungen.[23][24][25]

Portable Betriebssysteme[Bearbeiten]

Eine Spezialfall ist Portable Software, die in ein eigenes Betriebssystem eingebettet ist und damit zur portablen Verwendung einen Neustart und Booten des Wirtsrechners erfordert. Besonders bei Linux-Software, bei der die Erzeugung portabler und distributionsübergreifender Programme eine Herausforderung ist[15][17][19], existieren viele Lösungen für Anwendungssoftware mit portablen, Linux-basierenden Betriebssystemen. Zahlreiche Linux-Derivate bieten sogenannte Live-CDs, wie z. B. Knoppix, die den Betrieb von einem Wechseldatenträger erlauben, ohne Spuren auf dem Wirts-Rechner zu hinterlassen.

Microsofts Windows dagegen muss entsprechend dem EULA immer auf einer (festinstallierten) Festplatte installiert sein und kann deshalb offiziell nicht portabel verwendet werden. Microsoft Windows PE lässt sich jedoch auf Wechselmedien installieren, außerdem existieren auch Lösungen von Drittanbietern, wie Bart’s Preinstalled Environment.[26]

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. a b Simon Peter: Comparison table (englisch) klik.atekon.de. 29. Januar 2009. Abgerufen am 26. März 2010.
  2. a b Thomas Leonard: Zero Install: Comparison with other systems (englisch) 0install.net/. 1. Januar 2010. Abgerufen am 26. März 2010.
  3. Apple Computer: "Universal Binaries and 32-bit/64-bit PowerPC Binaries" in der Mac OS X ABI Mach-O File Format Referenz. 8. März 2006. Abgerufen am 13. Juli 2006.
  4. a b c Eskild Hustvedt: Our new way to meet the LGPL (englisch) 8. Februar 2009. Archiviert vom Original am 13. April 2014. Abgerufen am 9. März 2011: „You can use a special keyword $ORIGIN to say ‘relative to the actual location of the executable’. Suddenly we found we could use -rpath $ORIGIN/lib and it worked. The game was loading the correct libraries, and so was stable and portable, but was also now completely in the spirit of the LGPL as well as the letter!
  5. Hisham Muhammad: The Unix tree rethought: an introduction to GoboLinux. www.kuro5hin.org. 9. Mai 2003. Abgerufen am 19. Dezember 2011: „Unfortunately, not all programs have the flexibility to be installed anywhere. Occasionally, hardcoded paths creep in, even in programs that belong in userland (which should, at least theoretically, allow themselves to be installed inside a user's home directory).
  6. Arnaud Desitter: Using static and shared libraries across platforms; Row 9: Library Path (englisch) ArnaudRecipes. 15. Juni 2007. Archiviert vom Original am 1. Juni 2008. Abgerufen am 7. Juli 2010: „Win32: . and then PATH
  7. a b Rick Anderson: The End of DLL Hell. microsoft.com. 11. Januar 2000. Archiviert vom Original am 5. Juni 2001. Abgerufen am 15. Januar 2012: „Private DLLs are DLLs that are installed with a specific application and used only by that application.
  8. Ian Murdock: On the importance of backward compatibility (englisch) 17. Januar 2007. Abgerufen am 4. Januar 2012.
  9. http://support.microsoft.com/kb/256986 Beschreibung der Microsoft-Windows-Registrierung (3. Dezember 2007)
  10. a b Tony Mobily: 2009: software installation in GNU/Linux still broken and a path to fixing it (englisch) www.freesoftwaremagazine.com. 23. Juni 2009. 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.
  11. Benjamin Smedberg: Is Ubuntu an Operating System? (englisch) 4. Oktober 2006. 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.
  12. Michael Simms: Handling misbehaving libraries in binary products (englisch) Linux Game Publishing. 18. August 2009. Archiviert vom Original am 22. Februar 2014. Abgerufen am 15. Januar 2012: „It is a bit of an arcane artform, making a game that runs on all Linux versions. […] [libraries] will load their own dependencies in a way we cannot control. The biggest problem is that OpenAL and SDL try to dlopen libasound, and on some machines, libasound doesn’t work with our binaries. On others, it can actually crash the whole game due to incompatibilities. This is a common issue when dealing with unknown system configurations when sending out a binary-only product into the world.
  13. Peter Keller: The Road to Hell Is Paved with Good Intentions (englisch) 24. Mai 2005. Archiviert vom Original am 23. November 2008. Abgerufen am 12. Januar 2012: „Don't break APIs and behavior across revisions of dynamic libraries. Yes, this means YOU Linux. This is one of the single greatest causes of portability failures. Just Stop Doing It.
  14. David Douthitt: Why doesn’t my /bin/sh script run under Ubuntu? (englisch) administratosphere.wordpress.com. 20. Juli 2011. Abgerufen am 10. Januar 2012: „In Ubuntu 6.10 […] the decision was made to replace the Bourne Again Shell (bash) with the Debian Almquist Shell (or dash) as /bin/sh in Ubuntu. There was considerable uproar […] as using dash instead of the original bash caused numerous scripts to break. […] If the focus of Ubuntu were to provide a stable and unchanging environment, then their decisions would be different – and would result in an improved customer experience.
  15. a b c Evan Jones: Portable Linux Binaries (englisch) 13. Februar 2008. Abgerufen am 10. Januar 2012: „Linux is not well known for its binary portability. Libraries vary from system to system, and the kernel interfaces have a tendency to change. […] Recently, I needed to build a binary on one system, and run it on another. It only used standard C library functions, so I expected it to be easy. It was not. […]
  16. Eric Brown: LSB 4.0 certifications aim to heal Linux fragmentation (englisch) linuxfordevices.com. 8. Dezember 2010. Abgerufen am 16. November 2011: „[…] LSB helps to reduce fragmentation, it does not eliminate it. "The issue of packaging and broader dependencies is still a big one (for me) at least," writes Kerner. "The same RPM that I get for Fedora won't work on Ubuntu, and Ubuntu DEB packages won't work on SUSE etc etc."[…]
  17. a b c d Simon Peter: AppImageKit Documentation 1.0 (englisch, pdf; 38 kB) PortableLinuxApps.org. S. 2-3. 2010. 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).
  18. Mike Hearn: Guide to Making Relocatable Applications (BinReloc 2.0) (englisch) autopackage.org. Archiviert vom Original am 25. Januar 2009. Abgerufen am 26. Januar 2012: „However, most applications are not relocatable. The paths where in they search for data files are usually hardd at compile time. On Win32, applications and libraries are easily relocatable because applications and DLLs can use GetModuleFilename() to obtain their full path.
  19. a b Troy Hepfner: Linux Game Development Part 2 - Distributable Binaries (englisch) gamedev.net. 1. Oktober 2007. Archiviert vom Original am 13. Oktober 2007. Abgerufen am 19. Dezember 2011: „Creating an executable that works on almost all Linux distributions is a challenge. There are a number of factors that contribute to the problem […]
  20. Christoph Baus: Yet another Unix nightmare: statically linking libstdc++ (englisch) 31. Mai 2005. Archiviert vom Original am 10. Februar 2010. Abgerufen am 15. Januar 2012.
  21. Ulrich Drepper: Static Linking Considered Harmful (englisch) redhat.com. Archiviert vom Original am 27. Mai 2010. Abgerufen am 13. Januar 2012: „There are still too many people out there who think (or even insist) that static linking has benefits. This has never been the case and never will be the case. […]
  22. timothy: CDE — Making Linux Portability Easy (englisch) Slashdot. 12. November 2010. Abgerufen am 21. Januar 2012: „A Stanford researcher, Philip Guo, has developed a tool called CDE to automatically package up a Linux program and all its dependencies (including system-level libraries, fonts, etc!) so that it can be run out of the box on another Linux machine without a lot of complicated work setting up libraries and program versions or dealing with dependency version hell.
  23. Nicholas Vining: Dear Linux Community: We Need To Talk. (englisch) Gaslamp Games. 13. Oktober 2010. Abgerufen am 30. Januar 2011: „The Linux community, in their infinite wisdom, proceeds to flame the hell out of CDE. […] “We should all just be using package management.” Here is what I want to say, and let my words be carried down from the mountaintops, written on tiny stone tablets: Package management is not a universal panacea.
  24. Bruce Byfield: Autopackage struggling to gain acceptance (englisch) linux.com. 12. Februar 2007. Archiviert vom Original am 31. März 2008. Abgerufen am 21. Januar 2012: „If Hearn is correct, the real lesson of Autopackage is not how to improve software installation, but the difficulty -- perhaps the impossibility -- of large-scale changes in Linux architecture this late in its history. It's a sobering, disappointing conclusion to a project that once seemed so promising.
  25. Jeff Licquia: Autopackage Considered Harmful. licquia.org. 27. März 2005. Abgerufen am 21. Oktober 2012.
  26. Bart PE - Artikel auf pcwelt.de