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 Application
Famous quotes containing the word systems:
“I am beginning to suspect all elaborate and special systems of education. They seem to me to be built up on the supposition that every child is a kind of idiot who must be taught to think.”
—Anne Sullivan (18661936)