<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>

<!-- Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

<section id="sect-source-gettingrelease">
    <title>Getting the release</title>
    <para>
        You can download the latest &PRODUCT; release from the 
        <ulink url="http://incubator.apache.org/cloudstack/downloads.html">
        Apache CloudStack project download page</ulink>. 
    </para>
    <para>Prior releases are available via archive.apache.org as well. See the downloads page for more information on archived releases.</para>
    <para>You'll notice several links under the 'Latest release' section. A link to a file ending in <filename>tar.bz2</filename>, as well as a PGP/GPG signature, MD5, and SHA512 file.</para>
    <itemizedlist>
        <listitem><para>The <filename>tar.bz2</filename> file contains the Bzip2-compressed tarball with the source code.</para></listitem>
        <listitem><para>The <filename>.asc</filename> file is a detached cryptographic signature that can be used to help verify the authenticity of the release.</para></listitem>
        <listitem><para>The <filename>.md5</filename> file is an MD5 hash of the release to aid in verify the validity of the release download.</para></listitem>
        <listitem><para>The <filename>.sha</filename> file is a SHA512 hash of the release to aid in verify the validity of the release download.</para></listitem>
    </itemizedlist>
</section>
