<!---
  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.
-->

<html>
    <head>
        <meta charset="utf-8">
        <title>Apache Yetus</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">

        <link href="../assets/css/bootstrap.css" rel="stylesheet">
        <link href="../assets/css/bootstrap-theme.css" rel="stylesheet">
        <link href="../assets/css/font-awesome.css" rel="stylesheet">

        <!-- JS -->
        <script type="text/javascript" src="../assets/js/jquery-2.1.4.min.js"></script>
        <script type="text/javascript" src="../assets/js/bootstrap.js"></script>
  </head>
    <body>
      
<div class="navbar navbar-inverse navbar-static-top" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="img-responsive pull-left" href="/">
                <img style="max-height: 40px; margin-top: 5px; margin-bottom: 5px;" src="../assets/img/yetus_logo.png" alt="Apache Yetus logo" />
            </a>
        </div>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li><a href="/downloads/">Downloads</a>
                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <span class="caret"></span></a>
                    <ul class="dropdown-menu" role="menu">
                      <li><a href="/documentation/0.13.0/">Docs for v0.13.0</a></li>
                      <li><a href="/documentation/0.14.1/">Docs for v0.14.1</a></li>
                      <li><a href="/documentation/0.15.0/">Docs for v0.15.0</a></li>
                      <li><a href="/documentation/in-progress/">In Progress Docs for Contributors</a>
                      </li>
                      <li><a href="/documentation/history/">History of the Project</a>
                      </li>
                    </ul>
                </li>
                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Get Involved <span class="caret"></span></a>
                    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/mailinglists"><i class="fa fa-commenting"></i> Mailing Lists</a>
                        </li>
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://issues.apache.org/jira/browse/YETUS"><i class="fa fa-bug"></i> JIRA (Bugs)</a>
                        </li>
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://gitbox.apache.org/repos/asf/yetus.git"><i class="fa fa-code"></i> Source (Apache)</a>
                        </li>
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/yetus"><i class="fa fa-github-alt"></i> Source (GitHub)</a>
                        </li>
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute/"><i class="fa fa-code-fork"></i> Contributing</a>
                        </li>
                        <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheYetus"><i class="fa fa-twitter"></i> @ApacheYetus</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <li class="dropdown">
                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a>
                        <ul class="dropdown-menu" role="menu">
                            <li><a href="https://www.apache.org">Apache Homepage</a>
                            </li>
                            <li><a href="https://www.apache.org/licenses/">Apache License</a>
                            </li>
                            <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                            </li>
                            <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                            </li>
                            <li><a href="https://www.apache.org/security/">Security</a>
                            </li>
                        </ul>
                    </li>
                </li>
            </ul>
        </div>
        <!--/.nav-collapse -->
    </div>
</div>

      <div class="container">
        <!---
  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.
-->
<h1 id="apache-yetus-downloads">Apache Yetus Downloads</h1>

<p>The Apache Yetus project publishes a single source artifact per release for all of<br />
our components as well as a convenience artifact of binaries and documentation for immediate use. You<br />
should verify the integrity of these artifacts via <a href="https://www.apache.org/info/verification.html">the ASF procedure</a><br />
using the <a href="https://downloads.apache.org/yetus/KEYS">KEYS file for our project</a>.</p>

<p>In addition to the artifacts below, we publish convenience artifacts in some<br />
third-party repositories (e.g. Maven Central) and <a href="../yetus-docker-image">Docker Hub</a>.</p>

<h2 id="releases">Releases</h2>

<ul>
  <li>0.15.0
    <ul>
      <li><a href="releasenotes/0.15.0/RELEASENOTES.0.15.0/">Release Notes</a></li>
      <li><a href="releasenotes/0.15.0/CHANGELOG.0.15.0/">CHANGELOG</a>
        <ul>
          <li>Source : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.15.0/apache-yetus-0.15.0-src.tar.gz">apache-yetus-0.15.0-src.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.15.0/apache-yetus-0.15.0-src.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.15.0/apache-yetus-0.15.0-src.tar.gz.mds">hashes</a>)</li>
          <li>Binaries : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.15.0/apache-yetus-0.15.0-bin.tar.gz">apache-yetus-0.15.0-bin.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.15.0/apache-yetus-0.15.0-bin.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.15.0/apache-yetus-0.15.0-bin.tar.gz.mds">hashes</a>)</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>0.14.1
    <ul>
      <li><a href="releasenotes/0.14.1/RELEASENOTES.0.14.1/">Release Notes</a></li>
      <li><a href="releasenotes/0.14.1/CHANGELOG.0.14.1/">CHANGELOG</a>
        <ul>
          <li>Source : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.14.1/apache-yetus-0.14.1-src.tar.gz">apache-yetus-0.14.1-src.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.14.1/apache-yetus-0.14.1-src.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.14.1/apache-yetus-0.14.1-src.tar.gz.mds">hashes</a>)</li>
          <li>Binaries : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.14.1/apache-yetus-0.14.1-bin.tar.gz">apache-yetus-0.14.1-bin.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.14.1/apache-yetus-0.14.1-bin.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.14.1/apache-yetus-0.14.1-bin.tar.gz.mds">hashes</a>)</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>0.13.0
    <ul>
      <li><a href="releasenotes/0.13.0/RELEASENOTES.0.13.0/">Release Notes</a></li>
      <li><a href="releasenotes/0.13.0/CHANGELOG.0.13.0/">CHANGELOG</a>
        <ul>
          <li>Source : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.13.0/apache-yetus-0.13.0-src.tar.gz">apache-yetus-0.13.0-src.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.13.0/apache-yetus-0.13.0-src.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.13.0/apache-yetus-0.13.0-src.tar.gz.mds">hashes</a>)</li>
          <li>Binaries : <a href="https://www.apache.org/dyn/closer.lua?path=/yetus/0.13.0/apache-yetus-0.13.0-bin.tar.gz">apache-yetus-0.13.0-bin.tar.gz</a> (<a href="https://downloads.apache.org/yetus/0.13.0/apache-yetus-0.13.0-bin.tar.gz.asc">signature</a>, <a href="https://downloads.apache.org/yetus/0.13.0/apache-yetus-0.13.0-bin.tar.gz.mds">hashes</a>)</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<h1 id="os-x-homebrewlinuxbrew">OS X Homebrew/Linuxbrew</h1>

<p>The latest version of Apache Yetus is also available via Homebrew on Mac OS X:</p>

<div class="highlight"><pre class="highlight shell"><code>brew tap apache/yetus https://github.com/apache/yetus-homebrew
brew <span class="nb">install </span>yetus
</code></pre></div>
<p>This will install many of the dependencies needed for the precommit functionality as well.</p>

<h1 id="helper-script">Helper Script</h1>

<p>To aid in downloading Apache Yetus for continuous integration systems, local build environments, etc, we provide a simple script that may be checked into your local repo <a href="https://raw.githubusercontent.com/apache/yetus/main/yetus-dl.sh">here</a>. It takes two parameters:</p>

<div class="highlight"><pre class="highlight shell"><code><span class="nv">$ </span>yetus-dl.sh &lt;location&gt; &lt;version&gt;
</code></pre></div>
<p>By default, location is <code>/tmp/yetus</code> and the version is the latest version. Compatibility is not guaranteed between 'latest' versions.  Additionally, only the last three released versions will be available via this method.</p>

<h1 id="previous-releases">Previous Releases</h1>

<p>The changelogs and release notes for previous releases are available <a href="releasenotes">here</a>.</p>

    </div>
      
<div class="container">
    <hr>
    <footer class="footer">
        <div class="row-fluid">
            <div class="span12 text-left">
              <div class="span12">
                Copyright 2008-2023 <a href="https://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/">Apache License v2.0</a>. Apache Yetus and the Apache feather logo are trademarks of The Apache Software Foundation.
              </div>
            </div>

        </div>

    </footer>
</div>

  </body>
</html>
