Within a typical application directory there are only subdirectories,
no files. Those directories contain the "installed" files of the
application, including the binaries, the man pages, any libraries or
global configuration files, and so on. Those directories usually
correspond roughly to the /usr/local
subdirectories of
the same names--bin
, man
,
lib
--but contain only the files for a single application,
the application whose appname-version
directory contains the subdirectories. So, in
pkg/emacs-19.15/bin
, for example, you would find only the
binaries which were part of the Emacs package, and only those for
version 19.15.
Additionally, in our normal opt/pkg/appname
directories, we also have the source tree for that package. This
directory is usually named as it comes from the distribution tar file;
if the tar file doesn't create a subdirectory for the source, then we
create one and call it src
. This directory can, in fact,
be located anywhere; no properly installed files will contain any
dependencies on files down the source tree. And an installed
application may have its source directory tree deleted to save space
without affecting the proper functioning of the application. However,
it is our convention to leave the source tree in place, for reference
purposes.
Most applications will have a bin
directory. A notable
exception would be certain library packages such as the Portable
Network Graphics library, libpng. Nearly all will
have a man
directory tree, containing the appropriate
man1
, man2
, man3
, etc.,
subdirectories. Many packages will have a lib
directory,
which usually contains any libraries specific to the app, and also
often contains global configuration files. Our convention for X
windows application default files is to create a directory named
opt/appname/lib/X11/app-defaults
to contain the
application default resource files.
Some packages will have other, less commonly used directories as part
of their installation. GNU packages, for example, often use an
info
directory for their documentation. Some packages
put configuration files into an etc
directory. Others
use a share
directory for global data. Whatver
subdirectories are needed by the package should be located within its
appname-version
directory.