Compiling and installing ncpfs
==============================


0. Quick start
--------------

Run "./configure", then "make install install-dev" and wait for successfull 
completion. You can omit "install-dev" if you do not plan to compile other
libncp based programs, such as apache NDS authorization module.



1. Configuration
----------------

Except usual configuration options, you can add some of these options to
configure commandline:

  --enable-warnings       Enable very verbose build warnings. Please do not
                          report these warnings as a bugs. They are all
			  intentionaly left in sources. Disabled by default.
  
  --enable-pam            Build PAM NCP authentication module. You must have
                          installed PAM headers in your standard include
			  directories. By default PAM directory is 
			  automatically determined (in /lib/security, 
			  /usr/lib/security, or /usr/local/lib/security) from
			  place of already installed modules. You can override
			  this with adding path after enable-pam. For example:
			      --enable-pam=/lib/pam/modules

  --disable-ipx-tools     Disables building of ipx tools. By default tools are
                          enabled. Use this only if you are using some else
			  ipx-tools package or if your system does not support
			  IPX.

  --disable-udp           Disable NCP/UDP and NCP/TCP. By default they are
                          enabled. Use this only for systems which do not
			  have IP at all. Otherwise you'll get very crippled
			  version of ncpfs - with full version you can access
			  servers anywhere on the Internet if there is no
			  firewall on port 524...

  --disable-ipx           Disable NCP/IPX. By default IPX is enabled. Do not
                          disable IPX unless your system does not support
			  IPX at all.
			  
  --disable-signatures    Disable packet signing code. By default signatures
                          are enabled. Do not disable this, connecting without
			  signatures is very dangerous.

  --disable-nds           Disable NDS support. By default NDS is enabled.
                          Disable it only if you are not sure that you can
			  use RSA for authorization purposes. Library produced
			  with this option is very limited in functionality
			  and 3rd party programs may not work with your
			  library.

  --disable-mount-v2      Disable support for Linux 2.0. Support is enabled
                          by default and you should not disable it.

  --disable-mount-v3      Disable support for Linux 2.2 and Linux 2.4. Support
                          is enabled by default and you should not disable it.

  --disable-kernel        Do not use kernel interface. Use this only if there
                          is no ncpfs for your kernel (such as on AIX or IRIX).
			  
  --disable-reentrant     Do not compile threading support into library. By 
                          default it is autodetected - if library compiled
			  with pthreads can run without them, support is enabled.
			  Disable this only if you are 100% sure that you'll not
			  use libncp in any multithreaded application, or if
			  your system does not support pthreads at all.

  --disable-versions      Do not use version symbols in library. By default 
                          enabled if your system supports it. If you'll disable
			  it, you may have troubles with binary compatibility
			  when upgrading to newer versions.
			  
  --disable-function-sections   Do not use -ffunction-sections and 
                          -fdata-sections for static libraries. Enabled whenever
			  binutils can do this. If you disable this, all 
			  statically linked programs are larger than they 
			  really need.
			  
  --enable-trace          Enable trace of ncp calls. Do not enable it unless 
                          you are debugging ncpfs. Each libncp call then spews
			  tons of data to stdout/stderr.

  --disable-nls           Do not use Native Language Support. See ABOUT-NLS for
                          details.

  --with-included-gettext Use the GNU gettext library included here. See 
  			  ABOUT-NLS for details.
			  
  --with-catgets          Use catgets functions if available. See ABOUT-NLS for
                          details.



2. Compilation
--------------

Just type "make" in top of directory structure. You need GNU make and GNU gcc.



3. Installation
---------------

As root, type "make install" to install shared library and utilities. If you
plan to compile other programs for ncpfs, also run "make install-dev". This
installs ncpfs headers and static library.



4. Runtime
----------

4.1. Configuration
------------------

You can configure system behavior with global configuration file, 
/etc/ncpfs.conf, and local configuration files, ~/.nwclient. See ConfigFile
for details about contents of these files.


4.2. Limitations
----------------

4.2.1. Available transports
--------------------------

Temporary connections always support all available transports you
compiled.

Persistent (ncpmount) connection capabilities are constrained by your
kernel. 2.0.x kernels support only NCP over IPX, 2.[123].x kernels support
NCP over IPX or UDP, and 2.4.x kernels support NCP over any of IPX, UDP or
TCP.


4.2.2. NDS support
------------------

For full NDS support (background authentication) you must enable 'NDS
authentication support' in kernel configuration. This option is available
only in 2.[34].x kernels. In 2.2.x kernels you can make option available
by simple uncommenting this option in linux/fs/ncpfs/Config.in (option is
commented out because of at the time 2.2.0 was released there was no
userspace support). If you have older kernel, you should upgrade if you
need such support.


4.2.3. Internationalization support
-----------------------------------

Currently only available localizations are English, Germany and Czech.


4.2.4. Codepages support
------------------------

Codepage converting support is limited by underlying iconv implementation.
If no usable iconv is found, built in support for ISO-8859-1 and UTF-8
is used.
NOTE: glibc2.1 implementation is treated as unusable on little endian
machines, unless you add "alias WCHAR_T// INTERNAL" at the end of
"/usr/lib/gconv/gconv-modules" file. Without this alias wchar_t format
used by wc* function group is unavailable to iconv. Clueless programmers.
glibc2.2 provides WCHAR_T encoding, so you should upgrade if you need codepage
not listed above.



5. Something went wrong
-----------------------

If things do not work as expected, make sure that you installed ncpfs 
correctly. By default, ncp tools are installed into /usr/local, while
distributions put them into /usr. So you can end up with new tool using
old shared library. And it does not work...

Also, look into BUGS, FAQ, README and README.NDS. If you'll not find
answer here, try asking on linware@sh.cvut.cz list (listserv@sh.cvut.cz).

If you are sure that problem is in ncpfs implementation, send me bugreport
or patch (unified diff preferred).




--
Trhovy Stepanov, March 10th, 2001
Petr Vandrovec <vandrove@vc.cvut.cz>
