
=head1 General instructions

=head2 Building from source

In theory, the following instructions should work everywhere:

=over

=item * Install the required dependencies: ncurses, bzip2, zlib, sqlite3, glib2 and gnutls,

=item * Download and extract the source tarball from the L<homepage|http://dev.yorhel.nl/ncdc>,

=item * C<./configure>

=item * C<make>

=item * And then run C<make install> with superuser permissions.

=back

In practice, however, this does not always work and may not always be the
prefered method of installation. On this page I try to collect instructions for
each OS and distribution to make the installation process a bit easier for
everyone.

If your system is missing from this page or if you're still having trouble,
don't hesitate to join the support hub at C<adc://dc.blicky.net/> or send me a
mail at L<projects@yorhel.nl|mailto:projects@yorhel.nl>. Contributions to this
page are of course highly welcomed as well. :-)



=head2 Statically linked binaries

If you just want to get ncdc running without going through the trouble of
compiling and/or installing it, I also offer statically linked binaries:

=over

=item * L<Linux, 64-bit|http://dev.yorhel.nl/download/ncdc-linux-x86_64-1.16.1.tar.gz>

=item * L<Linux, 32-bit|http://dev.yorhel.nl/download/ncdc-linux-i486-1.16.1.tar.gz>

=item * L<Linux, ARM|http://dev.yorhel.nl/download/ncdc-linux-arm-1.16.1.tar.gz>

=back

To use them, simply download and extract the tarball, and then run C<./ncdc> on
the command line.

The binaries include all the required dependencies and are linked against
L<musl|http://www.etalabs.net/musl/>, so they should run on any Linux machine
with the right architecture. If you want binaries for an other OS or
architecture, please bug me and I'll see what I can do.



=head1 System-specific instructions

=head2 Arch Linux

Ncdc is available on L<AUR|https://aur.archlinux.org/packages.php?ID=50949>, to
install it you can use your favorite AUR-installer. If you don't have a
favorite, go for the manual approach:

  wget https://aur.archlinux.org/packages/nc/ncdc/ncdc.tar.gz
  tar -xf ncdc.tar.gz
  cd ncdc
  makepkg -si



=head2 FreeBSD

Ncdc is available in the Ports Collection. To install, L<make sure your
collection is
up-to-date|http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html>
and install the Port as any other:

  cd /usr/ports/net-p2p/ncdc
  make install clean



=head2 Gentoo

Ncdc is available in the Portage tree, so installation is trivial:

  emerge ncdc



=head2 Mac OS X

Ncdc is available in
L<MacPorts|http://www.macports.org/ports.php?by=name&substr=ncdc> and
L<Homebrew|http://braumeister.org/formula/ncdc>.

To install from MacPorts, follow the L<instructions on installing
MacPorts|http://www.macports.org/install.php> if you haven't done so already,
then open a terminal and run the following magical command:

  sudo port install ncdc



=head2 OpenIndiana

This has been tested on OpenIndiana Build 151a Server, but may work on other
versions as well. Compiling from source is your only option at the moment.
First install some required packages (as root):

  pkg install gcc-3 glib2 gnutls gettext header-math perl-510/extra

Then, fetch the ncdc source tarball, extract and build as follows:

  wget http://dev.yorhel.nl/download/ncdc-1.16.1.tar.gz
  tar -xf ncdc-1.16.1.tar.gz
  cd ncdc-1.16.1
  export PATH="$PATH:/usr/perl5/5.10.0/bin"
  ./configure --prefix=/usr LDFLAGS='-L/usr/gnu/lib -R/usr/gnu/lib'
  make

And finally, to actually install ncdc, run C<make install> as root. You can
safely revert C<$PATH> back to its previous value if you wish, it was only
necessary in order for C<./configure> and C<make> to find C<pod2man>.



=head2 OpenSUSE

Get the package from L<PackMan|http://packman.links2linux.org/package/ncdc>:
Select your openSUSE release and hit the "1 click install" button.

Alternatively, I also have packages on the L<Open Build
Service|http://software.opensuse.org/download/package?project=home:yorhel&package=ncdc>,
but I suspect their quality isn't really on the same level as those on PackMan
because I am not an openSUSE developer. :-)



=head2 Ubuntu & Debian

The preferred way of installing ncdc on Ubuntu or Debian is to use the packages
provided on the L<Open Build
Service|http://software.opensuse.org/download/package?project=home:yorhel&package=ncdc>.
Select your distribution and follow the instructions. The listed commands
should be run with superuser privileges; To get a root shell on Ubuntu type
C<sudo -s>. When installing the package, you may get a warning about how the
package is not authenticated or verified, this can be safely ignored.  Just
confirm the installation when prompted whether it should continue or not.

You only have to follow the above steps once, newer versions will be installed
automatically with regular system updates.

=head3 Building from source

In the event that there is no up-to-date package available for your version,
you can also try to compile ncdc from source. To do so, first install the
required libraries:

  sudo apt-get install libbz2-dev libsqlite3-dev libncurses5-dev\
    libncursesw5-dev libglib2.0-dev libgnutls-dev zlib1g-dev

Then run the following commands to download and install ncdc:

  wget http://dev.yorhel.nl/download/ncdc-1.16.1.tar.gz
  tar -xf ncdc-1.16.1.tar.gz
  cd ncdc-1.16.1
  ./configure --prefix=/usr
  make
  sudo make install



=head2 Windows (Cygwin)

Surprisingly enough, ncdc can be used even on Windows, thanks to Cygwin.  If
you haven't done so already, get C<setup.exe> from the L<Cygwin
website|http://cygwin.com/> and use it to install the following packages:

=over

=item * make

=item * gcc4

=item * perl

=item * pkg-config

=item * wget

=item * zlib-devel

=item * libncursesw-devel

=item * libbz2-devel

=item * libglib2.0-devel

=item * libsqlite3-devel

=item * gnutls-devel

=back

Then open a Cygwin terminal and run the following commands to download,
compile, and install ncdc:

  wget http://dev.yorhel.nl/download/ncdc-1.16.1.tar.gz
  tar -xf ncdc-1.16.1.tar.gz
  cd ncdc-1.16.1
  ./configure --prefix=/usr
  make install
