Portable Application - Portability On Linux and UNIX-like Systems

Portability On Linux and UNIX-like Systems

See also: Autopackage, RUNZ, and Zero Install

Programs written with a Unix-like base in mind often do not make any assumptions. Whereas many Windows programs assume the user is an administrator—something very prevalent in the days of Windows 95/98/ME (and to some degree in Windows XP/2000, though not in Windows Vista or Windows 7)—such would quickly result in "Permission denied" errors in Unix-like environments since users will be in an unprivileged state much more often. Programs are therefore generally designed around using the HOME environment variable to store settings (e.g. $HOME/.w3m for the w3m browser). The dynamic linker provides an environment variable LD_LIBRARY_PATH that programs can use to load libraries from non-standard directories. Assuming /mnt contains the portable programs and configuration, a command line may look like:

HOME=/mnt/home/user LD_LIBRARY_PATH=/mnt/usr/lib /mnt/usr/bin/w3m www.example.com

A Linux application without need for a user-interaction (e.g. adapting a script or environment variable) on varying directory paths can be achieved with the GCC Linker option $ORIGIN which allows a relative library search path.

Not all programs honor this – some completely ignore $HOME and instead do a user look-up in /etc/passwd to find the home directory, therefore thwarting portability.

Some Linux distributions already have native support for portable apps (Super OS, with RUNZ files).

There are also cross-distro package formats that don't require admin rights to run, like Autopackage or CDE, but with only limited acceptance and support in the Linux community.

Read more about this topic:  Portable Application

Famous quotes containing the word systems:

    Our little systems have their day;
    They have their day and cease to be:
    They are but broken lights of thee,
    And thou, O Lord, art more than they.
    Alfred Tennyson (1809–1892)