EnsemblEnsembl Home

Non-Ensembl Applications Build/Install

Ensembl is built on the following applications:

  • CVS - legacy versioning system for downloading Ensembl code (deprecated)
  • Git - versioning system for downloading Ensembl code (recommended)
  • Perl - Open source scripting language
  • Apache and mod_perl - Open source web server
  • MySQL - Open source database server
  • SQLite - alternative open source database server for session information (if not installing MySQL)

These applications are not version-specific for Ensembl; that is, if you upgrade your Ensembl installation to a newer version when one becomes available, you probably won't need to install new versions of these applications.

All of this software, like all of Ensembl, is Open Source software and can be downloaded and used free of charge. You should, however, check the documentation for each application to see what license it has been released under, particularly if you are installing Ensembl in a commercial environment.

The following instructions assume you have root access to the installation machine. If you do not, get your systems administrator to install this software for you.

You may have some or all of this software installed already. If you have any problems getting the site running with pre-installed software (in particular Apache with mod_perl installed from RPMs), we recommend simply installing the latest version using the following instructions.


CVS is a software version control system formerly used for storing the source code to both Ensembl and BioPerl. You can still use CVS to obtain this software, but in the case of Ensembl this is being phase out.

To install CVS:

  1. Download the latest source from http://ftp.gnu.org/non-gnu/cvs/source/stable/1.11.23/ (you may be able to download binaries from here instead if you prefer). At the time of writing this is version 1.11.23 and the file to download is cvs-1.11.23.tar.gz
  2. Unpack the source in a working directory with:
      gunzip < cvs-1.11.23.tar.gz | tar xvf -
      cd cvs-1.11.23
      make install

We formerly developed the Ensembl code itself in CVS, and older releases of our code can still be downloaded from the Sanger CVS repository, which includes a web interface.

Important notice: As of Release 75 we have moved Ensembl development into git (see below). For the rest of 2014, the new branch will still be made available via CVS at release time, but there will be no further work on the CVS HEAD. Please see our blog for more information.


Git is a software version control system that we use for storing the source code to Ensembl. You will need Git installed if you want to download the latest Ensembl source code. It will also help you keep up to date with any bug fixes. Our repositories are stored on GitHub.

Git installation instructions can be found on the Git website.


If you are on a Unix-based OS such as Mac OS X or Linux, you will already have Perl installed. You need Perl5, version 5.14.2 or higher, to run the website.

To see if you have Perl installed, and/or to check its version number, type:

perl -v

If you don't have Perl installed, or need to upgrade, go to www.cpan.org/ and choose the 'source code' install. Follow the installation instructions on the web site.



MySQL is a very popular Open Source relational database system. The easiest way to install MySQL is to use the pre-compiled binaries from http://dev.mysql.com. You can also get source from http://dev.mysql.com if you wish to compile MySQL yourself.

To install MySQL:

  1. Download the appropriate standard binaries from http://dev.mysql.com/downloads/mysql. Get the current stable version - at the time of writing, this is 5.0.51.
  2. Create a directory for MySQL to be installed into. A subdirectory of this will hold the databases, so choose somewhere that has sufficient space free - at least 600 GB for the complete set. We will use /data/ as an example. Again, when following these instructions, replace /data/ with whatever path you choose.
  3. Move the binary tarball to /data/
  4. Unpack the tarball with:

    $ gunzip < mysql-WHATEVER.tar.gz | tar xvf -
    Follow the straightforward setup instructions in the INSTALL-BINARY file that comes with MySQL. It should be located in the "mysql-WHATEVER" directory you just unpacked.

Apache & mod_perl

Apache is the web server that the Ensembl site runs on. mod_perl is a module for Apache that enables it to compile perl scripts once rather than each time they are requested, and so makes everything run a lot faster.

Please follow these instructions precisely as often the default version of Apache or mod-perl does not work correctly for Ensembl.

To Install Apache with mod_perl:

  1. Download the Apache2 source tarball from http://httpd.apache.org/dist/httpd/. Please note that mod_perl does not work reliably with Apache 2.4 at the moment, so we recommend using the 2.2.x legacy version - at the time of writing, this is 2.2.25.
  2. Download the mod_perl source from http://www.cpan.org/modules/by-module/Apache2/ . Again, get the latest version, currently this is 2.0.3 and the file to download is mod_perl-2.0.3.tar.gz.
  3. Unpack all the sources in a working directory with:

    tar zxf httpd-2.2.25.tar.gz
    tar zxf mod_perl-2.0.3.tar.gz | tar xvf -
    cd httpd-2.2.4
    ./configure --enable-deflate --prefix=Apache directory
    cd ../mod_perl-2.0.3
    The default installation directory is in an apache2 subdirectory of your website's server root; if you want to put it elsewhere, you will need to override the $APACHE_DIR dsetting in your plugin.
  4. Build the perl makefile:

    perl Makefile.PL PREFIX=Apache directory MP_APXS=Apache directory/bin/apxs
  5. Run the 'make' utility:

  6. ...and install

    make install

Perl modules

The Ensembl website needs quite a few Perl modules to be installed in order for it to run. Many will be included by default in more recent versions of Perl; listed below are some you may have to install separately.

These modules can all be downloaded from www.cpan.org, and are all installed in much the same way: Download the module tarball, unpack in a working directory, and install the module:

gunzip < module.tar.gz | tar xvf -
cd module
perl Makefile.PL
make test
make install

The modules that are required are listed below - we recommend searching CPAN for the appropriate version for your current version of Perl.

Ensembl website

These modules are mandatory for any website based on EnsEMBL::Web code. Some plugins may have additional dependencies, e.g. public-plugins/users requires the Rose database abstraction suite.

OO interface for creating zip files
Low-level interface to BigWig & BigBed files
Interface to SAM files
persistent session data in CGI applications
Automated accessor generation
Database abstraction layer, used to access non-genomic databases such as ensembl_accounts
recursively copy Perl datatypes - used for DOM manipulation
Used to handle uploaded bz2 files
Reduces CSS files for faster page loading
A common database interface for Perl
The MySQL drivers for the DBI interface
Perl interface to the MD5 Algorithm
Perform operations on file names
A Graphics library
Note: may require additional modules. Please read install docs.
A wrapper for AT&T's Graphviz, used to create ontology graphs
Used to merge data from multiple configuration files
Encode or decode strings with HTML entities
Convert datetimes into HTTP header formats
Used for getting size of images
Use inline C for fast parsing of large data files
Used to format compara API output
IO::Socket, IO::Socket::INET, IO::Socket::UNIX
Object interfaces to socket communications.
Used for sequence handling
Used to handle uploaded bz2 files (bundled with recent versions of IO::Compress)
Reduces JS files for faster page loading
We use LWP, LWP::RobotUA and LWP::UserAgent extensively to communicate with outher web services
Utility functions for handling arrays
Used by web forms to send email
Used by drawing code
Used to automatically identify the correct mime type of static files
used by Image exporter for exporting as PDF
Output web content in RTF format
used by DAS to communicate with DAS sources
Note: may require additional modules. Please read install docs.
used for exporting Excel spreadsheets
Used by website startup process
Parse text into an array of tokens or array of arrays
URI and URI::Escape
Used extensively to percent-encode and percent-decode unsafe characters

used by DAS to parse DAS sources
Note: module is a wrapper around the expat library, which should be installed first:
Download the expat source from http://sourceforge.net/projects/expat/. Get the latest version (currently expat-1.95.8.tar.gz). Run the following commands:

gunzip < expat-1.95.8.tar.gz | tar xvf -
cd expat-1.95.8
make install
Atom feed parser, used to embed Ensembl blog entries on home page
Used when writing exported data files from Ensembl pages


The following are only needed for a local install of blastview within Ensembl:

Used by BlastView