Portability On Linux and UNIX-like Systems
See also: Autopackage, RUNZ, and Zero InstallPrograms 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:
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 Software
Famous quotes containing the word systems:
“Before anything else, we need a new age of Enlightenment. Our present political systems must relinquish their claims on truth, justice and freedom and have to replace them with the search for truth, justice, freedom and reason.”
—Friedrich Dürrenmatt (19211990)