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:
“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 (18091892)