Chapter 2. Compilation and installing

1. What platforms will it compile on?
2. Why not libc5 on Linux?
3. CVS
4. How do I get debug output
5. Patches
6. Using non-default modules
7. Microsoft platform support
8. New features/modules

1. What platforms will it compile on?

There have been reports of ProFTPD compiling on all the following platforms (and versions).

  • Linux 2.0.x & 2.2.x (glibc 2.x only) & 2.4.x

  • BSDI 3.1 & 4.0

  • IRIX 6.2, 6.3, 6.4, 6.5

  • Solaris 2.5.1, 2.6, 2.7, 8 (Sparc)

  • AIX 3.2 & 4.2

  • OpenBSD 2.2/2.3

  • FreeBSD 2.2.7

  • Digital UNIX 4.0A

  • DEC OFS/1

  • Cygwin

2. Why not libc5 on Linux?

There are several known problems with libc5-based systems, including improperly implemented library routines (vsprintf and vsnprintf are examples). There are known problems with the resolver library. For these reasons and others lib5 is not being supported at all, the latest versions of the major distributions (inc Debian, Redhat and Suse) are all glibc.

3. CVS

CVS (Concurrent Versions System), is a version control system which allows multiple developers (scattered across the same room or across the world) to maintain a single codebase and keep a record of all changes to the work.

The CVS repository for ProFTPD is available for non-developers in read-only mode, however this code is right on the bleeding edge and is not guaranteed to even compile let alone work. Access to CVS is given to allow important security patches out into the wild and to allow users and interested users to test out the latest changes on real systems.

Nightly tarballs of the current CVS are available on ftp.proftpd.org, these are built at approx 1am UK time.

Recommended ~/.cvsrc settings

cvs -z 3
update -Pd
diff -u
            

Where can I get information on cvs?

CVS is produced by Cyclic Software (http://www.cyclic.com/) and details on CVS can be found on their website. The CVS documentation is clear, detailed and above all heavy when printed. I'd recommend reading it if you're planning on using CVS a lot.

4. How do I get debug output

The easiest way is to fire up proftpd manually from the command line with the debug level cranked up.

/usr/local/sbin/proftpd -d9 -n
            

This will result in maximal debug output direct to the console. Warning, this can get messy on a busy server, for testing I would suggest copying the config and altering the port the server binds to and then testing.

5. Patches

Any patches should be submitted in Universal format, this makes integrating them into the main cvs source a lot easier. When generating a diff against the current cvs source use "cvs diff -uw" to generate the patch.

cvs diff -u filename > filename.patch

  or

cvs diff -u > bigger.patch
            

Patches that add configuration directives without proper documentation. Will be rejected. New features without documentation are less than useless to the community at large.

6. Using non-default modules

Simply configure ProFTPD with

./configure --with-modules=mod_module1:mod_module2:mod_module3
make
make install
            

7. Microsoft platform support

There are no current plans for a direct port to any MS platform.

8. New features/modules

While anything new is welcomed it's probably better to at least float the idea first on the devel mailing list to ensure that someone else isn't already hacking on it. Also when submitting the patch or module for inclusion into the ProFTPD source full documentation is needed.