Apache VCL 2.4.1

================================================================================
INSTALLATION

Please see the INSTALLATION file or the installation guide on the Apache VCL
website. (http://vcl.apache.org/docs/VCL241InstallGuide.html)

================================================================================
SYSTEM REQUIREMENTS

------------
VCL WEB SITE
------------

VCL web server Linux packages:
* Apache HTTP Server v1.3 or v2.x with SSL enabled
* PHP 5.0 or later

VCL web server PHP modules:
* php-gd
* php-json
* php-mysql
* php-openssl
* php-xml
* php-xmlrpc
* php-gettext
* php-ldap (only required if using LDAP authentication)

------------
VCL DATABASE
------------

VCL has been tested on:
* MySQL 5.0 or later
* MariaDB 5.0 or later

-------------------
VCL MANAGEMENT NODE
-------------------

VCL has been tested on the following operating systems:
* CentOS 6.6
* CentOS 7.0
* Red Hat Enterprise 6.5
* Red Hat Enterprise 7.0

Required Linux Packages:

The VCL management node daemon (vcld) requires the following Linux packages in
order to run. A script is provided to assist with installing them. Several of
the packages are required to be able to build and install some of the required
Perl modules.

* expat-devel - Libraries and include files to develop XML applications with expat
* gcc - Various compilers (C, C++, Objective-C, Java, ...)
* krb5-devel - Development files needed to compile Kerberos 5 programs
* krb5-libs - The shared libraries used by Kerberos 5
* libxml2-devel - Libraries, includes, etc. to develop XML and HTML applications
* make - GNU make utility to maintain groups of programs
* mysql/mariadb - contains MySQL/MariaDB client programs
* nmap - Network exploration tool and security scanner
* openssh - The OpenSSH implementation of SSH protocol versions 1 and 2
* openssl-devel - Files for development of applications which will use OpenSSL
* perl - The Perl programming language
* xmlsec1-openssl - OpenSSL crypto plugin for XML Security Library

The VCL management node daemon (vcld) requires the following Perl modules in
order to run. A script is provided to assist in installing them. The script
will install as many as possible through package management. Any remaining
modules will be installed from CPAN.

* CPAN - provides a command interface (not a shell) to CPAN
* DBI - Generic Database Interface
* Digest::SHA1 - NIST SHA message digest algorithm
* Frontier::Client - issue Frontier XML RPC requests to a server
* LWP::Protocol::https - support for using https schemed URLs with LWP
* JSON - JavaScript Object Notation
* Mail::Mailer - Simple mail agent interface
* Mo:builder - Adds the builder feature to Mo's has
* Net::SSH::Expect - a wrapper to the ssh executable that is available in system's PATH
* Object::InsideOut - Comprehensive inside-out object support
* RPC::XML - Set of classes for core data, message, XML handling
* Scalar::Util - A selection of general-utility scalar subroutines
* Time::HiRes - provides high resolution time and timers
* URI - Uniform Resource Identifiers (absolute and relative)
* YAML - provides support for YAML (Ain't Markup Language) formatted data
* perl-Archive-Tar - provides an object oriented mechanism for handling tar files
* perl-Crypt-OpenSSL-RSA - provides the ability to RSA encrypt,decrypt strings
* perl-DBD-MySQL - A MySQL interface for perl
* perl-IO-String - provides the IO::File interface for in-core strings
* perl-Net-Jabber - a tool to utilize the Jabber Instant Messaging protocol from within perl
* perl-Net-Netmask - parses and understands IPv4 CIDR blocks
* perl-Text-CSV_XS - provides the composition and decomposition of comma-separated values
* perl-XML-Simple - provides a simple API layer on top of an underlying XML parsing module

The required Perl modules are distributed under one or more of the following
licenses:
* The "Artistic License"
* GNU General Public License (GPL)
* GNU Library or "Lesser" General Public License (LGPL)

Some of the required Perl modules are included in your Perl distribution.
Modules not included in your Perl distribution are available from CPAN
(www.cpan.org).See the "Install the Required Linux Packages & Perl Modules"
section of the online installation guide for how to use the provided script to
install the required Linux packages and Perl modules. 

Management node system requirements:
- DHCP - VCL requires that a DHCP server, configured to listen on the private
  network, be running on each management node.

Management node conditional system requirements:
- xCAT provisioning
  In order to provision bare-metal or physical computers, xCAT must be installed
  and properly configured. This release supports xCAT 2.x. Imaging support using
  xCAT 2.x requires additional files. To enable imaging for xCAT 2.x, see the
  page describing how to add support for partimage and partimage-ng in the
  Apache VCL wiki. 
- VMware vCenter provisioning
  In order to provision virtual machines on VMware vCenter you will need the
  vSphere SDK for Perl. This can be obtained from:
  http://www.vmware.com/support/developer/viperltoolkit/
  This is not required if provisioning virtual machines on standalone VMware ESX
  or ESXi hosts.
- Windows XP & Windows Server 2003 bare-metal provisioning
  The Sysprep utility is required to provision Windows XP and Windows Server
  2003 bare-metal images. The utility can be downloaded from Microsoft. It is
  included in newer versions of Windows. Sysprep is not required to provision
  virtual machine images.
- Jabber notifications
  VCL has the ability to send instant message notifications using Jabber. This
  feature is optional and can be enabled or disabled by configuring the
  "jabber=[yes|no]" property in the vcld.conf file. If the Jabber notification
  feature is enabled, the Net::Jabber Perl module is required.

================================================================================
BUNDLED 3RD PARTY SOFTWARE

A copy of Dojo Toolkit version 1.6.2 is included in under web/dojo.

Portions of the phpseclib (http://phpseclib.sourceforge.net) project are
included under web/.ht-inc/phpseclib.

Spyc version 0.5.1 (https://github.com/mustangostang/spyc/) is included under
web/.ht-inc/spyc-0.5.1.
