<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../../img/favicon.ico">

        <title>Install Newt on Linux - Apache Mynewt</title>

        <link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../css/highlight.css">
        <link href="../../../css/base.css" rel="stylesheet">
        <link href="../../../css/custom.css" rel="stylesheet">
        <link href="../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="Install Newt on Linux">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <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>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" selected="selected" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../os/introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../os/get_started/get_started/">Basic Setup</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../os/get_started/native_install_intro/">Native Install Option</a>
  
  
    <ul>
          
              
          
              
                
  <li >
    <a href="../newt_mac/">Install Newt on Mac</a>
  </li>

              
          
              
                
  <li class="active">
    <a href="./">Install Newt on Linux</a>
  </li>

              
          
              
                
  <li >
    <a href="../newt_windows/">Install Newt on Windows</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/native_tools/">Install Native Toolchain</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/cross_tools/">Install Cross Tools for ARM</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/docker/">Docker Container Option</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/project_create/">Create Your First Project</a>
  </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/serial_access/">Serial Port Setup</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  <li >
    <a href="../../../os/get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../../os/tutorials/tutorials/">Tutorials</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os/os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../faq/go_env/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; <a href="os/get_started/native_install_intro/">Native Install Option</a></li>
        
      
        
          <li>&raquo; <a href="os/get_started/get_started/">Basic Setup</a></li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
        <li>&raquo; Install Newt on Linux</li>
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/newt/install/newt_linux.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.1.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="installing-newt-on-linux">Installing Newt on Linux</h2>
<p>You can install the latest release (1.1.0) of the newt tool from a Debian binary package (amd64). You can also download and build the latest release version of newt from source.</p>
<p>This page shows you how to:</p>
<ol>
<li>
<p>Set up your computer to download Debian binary packages from the runtimeco APT repository.</p>
<p><strong>Note:</strong> The key for signing the repository has changed. If you set up your computer before release 1.1.0, you will need to download and import the public key again.</p>
</li>
<li>
<p>Install the latest release version of newt from a Debian binary package. You can use apt-get to install the package or manually download and install the Debian binary package.</p>
</li>
<li>
<p>Download, build, and install the latest release version of newt from source.</p>
</li>
<li>
<p>Install an earlier version of newt.</p>
</li>
</ol>
<p>If you are installing on an amd64 platform, we recommend that you install from the binary package.</p>
<p><strong>Note:</strong>  We have tested the newt tool binary and apt-get install from the runtimeco APT repository for Ubuntu version 16.  Earlier Ubuntu versions (for example: Ubuntu 14) may have incompatibility with the repository. You can manually download and install the Debian binary package.</p>
<p><strong>Note:</strong> See <a href="/faq/go_env">Setting Up a Go Environment to Contribute to Newt and Newtmgr Tools</a> if you want to:</p>
<ul>
<li>Use the newt tool with the latest updates from the master branch. The master branch may be unstable and we recommend that you use the latest stable release version.</li>
<li>Contribute to the newt tool.</li>
</ul>
<p><br></p>
<h3 id="setting-up-your-computer-to-use-apt-get-to-install-the-package">Setting Up Your Computer to use apt-get to Install the Package</h3>
<p>The newt Debian packages are stored in a private APT repository on <strong>https://github/runtimeco/debian-mynewt</strong>.   To use apt-get, you must set up the following on your computer to retrieve packages from the repository:</p>
<p><strong>Note</strong>: You only need to perform this setup once on your computer. However, if you previously downloaded and imported the public key for the runtimeco APT repository, you will need to perform step 2 again as the key has changed.</p>
<ol>
<li>Install the <code>apt-transport-https</code> package to use HTTPS to retrieve packages. </li>
<li>Download the public key for the runtimeco APT repository and import the key into the apt keychain.</li>
<li>Add the repository for the binary and source packages to the apt source list.</li>
</ol>
<p><br>
Install the apt-transport-https package:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$sudo apt-get update
$sudo apt-get install apt-transport-https
</code></pre></div>

<p><br></p>
<p>Download the public key for the runtimeco apt repo (<strong>Note:</strong> There is  a <code>-</code> after  <code>apt-key add</code>):</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>wget -qO - https://raw.githubusercontent.com/runtimeco/debian-mynewt/master/mynewt.gpg.key | sudo apt-key add -
</code></pre></div>

<p><br></p>
<p>Add the repository for the binary and source packages to the <code>mynewt.list</code> apt source list file.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$sudo -s
[sudo] password for &lt;user&gt;:
root$ cat &gt; /etc/apt/sources.list.d/mynewt.list &lt;&lt;EOF
deb https://raw.githubusercontent.com/runtimeco/debian-mynewt/master latest main
EOF
root$exit
</code></pre></div>

<p><strong>Note:</strong> Do not forget to exit the root shell.</p>
<p><br>
Verify the content of the source list file:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$more /etc/apt/sources.list.d/mynewt.list
deb https://raw.githubusercontent.com/runtimeco/debian-mynewt/master latest main
</code></pre></div>

<p><br>
Update the available packages: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$sudo apt-get update
</code></pre></div>

<p><br>
<strong>Note:</strong> If you are not using Ubuntu version 16, you may see the following errors.  We have provided instructions on how to manually download and install the binary package.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>W: Failed to fetch https://raw.githubusercontent.com/runtimeco/debian-mynewt/master/dists/latest/main/source/Sources  Ht
tpError404
</code></pre></div>

<p><br></p>
<h2 id="installing-the-latest-release-of-newt-from-a-binary-package">Installing the Latest Release of Newt from a Binary Package</h2>
<p>You can use either apt-get to install the package, or manually download and install the Debian binary package.</p>
<p><br></p>
<h4 id="method-1-using-apt-get-to-upgrade-or-to-install">Method 1: Using apt-get to Upgrade or to Install</h4>
<p>Run the following commands to upgrade or install the latest version of newt:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ sudo apt-get update 
$ sudo apt-get install newt
</code></pre></div>

<p><br></p>
<h4 id="method-2-downloading-and-installing-the-debian-package-manually">Method 2: Downloading and Installing the Debian Package Manually</h4>
<p>Download and install the package manually.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$wget https://raw.githubusercontent.com/runtimeco/debian-mynewt/master/pool/main/n/newt/newt_1.1.0-1_amd64.deb
$sudo dpkg -i newt_1.1.0-1_amd64.deb
</code></pre></div>

<p><br>
See <a href="#check">Checking the Installed Version of Newt</a> to verify that you are using the installed version of newt.</p>
<p><br></p>
<h3 id="installing-the-latest-release-of-newt-from-a-source-package">Installing the Latest Release of Newt from a Source Package</h3>
<p>If you are running Linux on a different architecture, you can build and install the latest release version of newt from source.</p>
<p><br>
1.  You need Go version 1.7.6 or higher to build Newt version 1.0.0.  Currently, the latest Go version that Ubuntu installs is 1.6.  Run <code>go version</code> to check if you have Go 1.7.6 installed. You can download Go from <a href="https://golang.org/dl/">https://golang.org/dl/</a>.</p>
<p><br>
2. Download and unpack the newt source:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ wget -P /tmp https://github.com/apache/mynewt-newt/archive/mynewt_1_1_0_tag.tar.gz
$ tar -xzf /tmp/mynewt_1_1_0_tag.tar.gz
</code></pre></div>

<p><br>
3. Run the build.sh to build the newt tool.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ cd mynewt-newt-mynewt_1_1_0_tag
$ ./build.sh
$ rm /tmp/mynewt_1_1_0_tag.tar.gz
</code></pre></div>

<p><br>
4. You should see the <code>newt/newt</code> executable. Move the executable to a bin directory in your PATH:</p>
<ul>
<li>
<p>If you previously built newt from the master branch, you can move the binary to your $GOPATH/bin directory.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ mv newt/newt $GOPATH/bin
</code></pre></div>

</li>
<li>
<p>If you are installing newt for the first time and do not have a Go workspace set up, you can move the binary to /usr/bin or a directory in your PATH:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ mv newt/newt /usr/bin
</code></pre></div>

</li>
</ul>
<p><br></p>
<h3 id="checking-the-installed-version-of-newt"><a name="check"></a> Checking the Installed Version of Newt</h3>
<p><br>
1. Check which newt you are using and that the version is the latest release version.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$which newt
/usr/bin/newt
$newt version
Apache Newt version: 1.1.0
</code></pre></div>

<p><br>
2. Get information about newt:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$newt
Newt allows you to create your own embedded application based on the Mynewt 
operating system. Newt provides both build and package management in a single 
tool, which allows you to compose an embedded application, and set of 
projects, and then build the necessary artifacts from those projects. For more 
information on the Mynewt operating system, please visit 
https://mynewt.apache.org/. 

Please use the newt help command, and specify the name of the command you want 
help for, for help on how to use a specific command

Usage:
  newt [flags]
  newt [command]

Examples:
  newt
  newt help [&lt;command-name&gt;]
    For help on &lt;command-name&gt;.  If not specified, print this message.

Available Commands:
  build        Build one or more targets
  clean        Delete build artifacts for one or more targets
  create-image Add image header to target binary
  debug        Open debugger session to target
  info         Show project info
  install      Install project dependencies
  load         Load built target to board
  mfg          Manufacturing flash image commands
  new          Create a new project
  pkg          Create and manage packages in the current workspace
  resign-image Re-sign an image.
  run          build/create-image/download/debug &lt;target&gt;
  size         Size of target components
  sync         Synchronize project dependencies
  target       Commands to create, delete, configure, and query targets
  test         Executes unit tests for one or more packages
  upgrade      Upgrade project dependencies
  vals         Display valid values for the specified element type(s)
  version      Display the Newt version number

Flags:
  -h, --help              Help for newt commands
  -j, --jobs int          Number of concurrent build jobs (default 8)
  -l, --loglevel string   Log level (default &quot;WARN&quot;)
  -o, --outfile string    Filename to tee output to
  -q, --quiet             Be quiet; only display error output
  -s, --silent            Be silent; don&#39;t output anything
  -v, --verbose           Enable verbose output when executing commands

Use &quot;newt [command] --help&quot; for more information about a command.
</code></pre></div>

<p><br>
<br></p>
<h3 id="installing-earlier-release-versions-of-newt">Installing Earlier Release Versions of Newt</h3>
<p>You can download and install an earlier version of newt.</p>
<p><br>
1. Run <code>sudo apt-get remove newt</code> command the current installation.</p>
<p><br>
2. Download and install the package. For example, run the following commands to install the 1.0.0 version of newt:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ wget https://raw.githubusercontent.com/runtimeco/binary-releases/master/mynewt-newt-tools_1.0.0/newt_1.0.0-1_amd64.deb
$ sudo dpkg -i newt_1.0.0-1_amd64.deb
</code></pre></div>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../js/highlight.pack.js"></script>
        <script src="../../../js/base.js"></script>
        <script src="../../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>