# Prerequisites and dependencies

## Apache

To use LemonLDAP::NG, you have to run an Apache server compiled with mod-perl

You need to use Apache 2 with mod_perl 2, even if some simple configuration can run under Apache 1.3

For Apache2, you can use all workers mpm-worker, mpm-prefork and mpm-event. Mpm-worker works faster and LemonLDAP::NG use the thread system for best performance. If you have to use mpm-prefork (for example if you use PHP), LemonLDAP::NG will work anyway.

You can use LemonLDAP::NG in an heterogeneous world: the authentication portal and the manager can work in any version of Apache even if mod_perl is not compiled, with ModPerl::Registry or not,… or behind any web server able to launch CGIs. Only the handler needs mod_perl 2.

## Perl

Here is the list of Perl modules used in LemonLDAP::NG. Core modules must be installed on the system. Other modules must be installed only if you planned to use the related feature.

### Core

- Apache::Session
- Net::LDAP
- MIME::Base64
- CGI
- LWP::UserAgent
- Cache::Cache
- DBI
- XML::Simple
- CGI::Session
- Regexp::Assemble
- XML::LibXML
- Crypt::Rijndael
- IO::String
- XML::LibXSLT
- HTML::Template
- SOAP::Lite
- Config::IniFiles
- JSON
- Digest::HMAC
- Crypt::OpenSSL::RSA
- Crypt::OpenSSL::X509
- Crypt::OpenSSL::Bignum
- Convert::PEM
- Clone
- Net::CIDR
- Unicode::String
- Log::Log4perl::Logger
- Net::CIDR::Lite
- Cache::Memcached
- Mouse

### SAML2

- Lasso
- GLib

### CAS (authentication module)

- AuthCAS

### OpenID

- Net::OpenID::Consumer > 1.00
- Net::OpenID::Server > 1.00

### Twitter

- Net::Twitter

### POD unit tests

- Test::POD
- Test::MockObject

### SMTP / Reset password by mail

- MIME::Lite
- Email::Date::Format
- String::Random
- Net::SMTP
- MIME::Base64
- Authen::SASL

## Other

- Jquery (javascript framework) is included in tarball and RPMs, but is a dependency on Debian official releases
- OmegaT is needed to translate offline documentation and build fr-doc packages

## Install dependencies on your system

### APT-GET

    apt-get install apache2 libapache2-mod-perl2 libapache-session-perl libnet-ldap-perl libcache-cache-perl libdbi-perl perl-modules libwww-perl libcache-cache-perl libxml-simple-perl  libsoap-lite-perl libhtml-template-perl libregexp-assemble-perl libjs-jquery libxml-libxml-perl libcrypt-rijndael-perl libio-string-perl libxml-libxslt-perl libconfig-inifiles-perl libjson-perl libstring-random-perl libemail-date-format-perl libmime-lite-perl libcrypt-openssl-rsa-perl libdigest-hmac-perl libclone-perl libauthen-sasl-perl libnet-cidr-lite-perl libcrypt-openssl-x509-perl libauthcas-perl libtest-pod-perl libtest-mockobject-perl libauthen-captcha-perl libnet-openid-consumer-perl libnet-openid-server-perl libunicode-string-perl libconvert-pem-perl libmouse-perl

### YUM

You need EPEL repository. See how you can activate this repository: http://fedoraproject.org/wiki/EPEL/FAQ#howtouse

    yum install httpd mod_perl perl-Apache-Session perl-LDAP perl-XML-SAX perl-XML-NamespaceSupport perl-HTML-Template perl-Regexp-Assemble perl-Error perl-IPC-ShareLite perl-Cache-Cache perl-FreezeThaw perl-XML-Simple perl-version perl-CGI-Session perl-DBD-Pg perl-XML-LibXML-Common perl-BSD-Resource perl-XML-LibXML perl-Crypt-Rijndael perl-IO-String perl-XML-LibXSLT perl-SOAP-Lite perl-Config-IniFiles perl-JSON perl-Digest-HMAC perl-String-Random perl-MIME-Lite perl-Email-Date-Format perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-X509 perl-Clone perl-Authen-SASL perl-Log-Log4perl perl-Unicode-String perl-Net-CIDR-Lite perl-Cache-Memcached perl-Convert-PEM perl-Mouse