# Upgrade

> Upgrade the license, the Flexter packages, the metadata database and Apache Spark.

---

Site [llms.txt](/flexter/master/llms.txt)

---

## Upgrade the License

If the license is about to expire, replace the `flexter.lic` file in the location chosen during the [Post-Installation](https://docs.sonra.io/flexter/master/docs/installation/direct-installation/post-installation/#license-setup):

```text
# For all users
/etc/flexter/conf/flexter.lic

# For the current user
~/.config/flexter/flexter.lic

# Same directory from which the Flexter command is launched
./flexter.lic
```

## Repository Packages Upgrade

If the [Repository Setup](https://docs.sonra.io/flexter/master/docs/installation/direct-installation/download/#repository-setup) was done during the installation, upgrade through the repository.







<ul class="nav nav-tabs" id="tabs-2" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-02-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-00" role="tab"
          data-td-tp-persist="rhel / fedora (dnf)" aria-controls="tabs-02-00" aria-selected="true">
        RHEL / Fedora (DNF)
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-02-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-02-01" role="tab"
          data-td-tp-persist="debian / ubuntu (apt)" aria-controls="tabs-02-01" aria-selected="false">
        Debian / Ubuntu (APT)
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-2-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-02-00" role="tabpanel" aria-labelled-by="tabs-02-00-tab" tabindex="2">
        <p><strong>Upgrading to the latest version</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dnf --repo<span class="o">=</span>sonra-flexter update xml2er xsd2er json2er merge2er flexchma flexter-ui
</span></span></code></pre></div><p><strong>Upgrading to a specific version</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dnf --repo<span class="o">=</span>sonra-flexter update <span class="se">\
</span></span></span><span class="line"><span class="cl">  xml2er-2.14.2 xsd2er-2.14.2 json2er-2.14.2 <span class="se">\
</span></span></span><span class="line"><span class="cl">  merge2er-2.14.2 flexchma-2.14.2 flexter-ui-2.14.2
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-02-01" role="tabpanel" aria-labelled-by="tabs-02-01-tab" tabindex="2">
        <div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Re-enable the repository first</div>
<p>If the APT repository was disabled after the installation, re-enable it before upgrading, and disable it again afterwards to avoid unintended Flexter upgrades during routine server maintenance:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># re-enable</span>
</span></span><span class="line"><span class="cl">sudo mv /etc/apt/sources.list.d/sonra-flexter.list<span class="o">{</span>.disabled,<span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># disable again after the upgrade</span>
</span></span><span class="line"><span class="cl">sudo mv /etc/apt/sources.list.d/sonra-flexter.list<span class="o">{</span>,.disabled<span class="o">}</span>
</span></span></code></pre></div></div>
<p><strong>Upgrading to the latest version</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">sudo apt upgrade xml2er xsd2er json2er merge2er flexchma flexter-ui
</span></span></code></pre></div><p><strong>Upgrading to a specific version</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">sudo apt upgrade <span class="se">\
</span></span></span><span class="line"><span class="cl">  <span class="nv">xml2er</span><span class="o">=</span>2.14.2 <span class="nv">xsd2er</span><span class="o">=</span>2.14.2 <span class="nv">json2er</span><span class="o">=</span>2.14.2 <span class="se">\
</span></span></span><span class="line"><span class="cl">  <span class="nv">merge2er</span><span class="o">=</span>2.14.2 <span class="nv">flexchma</span><span class="o">=</span>2.14.2 flexter-ui<span class="o">=</span>2.14.2
</span></span></code></pre></div>
    </div>
</div>


## Manual Packages Upgrade

When no repository has been set up, download the new packages and upgrade manually. The download works exactly as described in [Manual Download](https://docs.sonra.io/flexter/master/docs/installation/direct-installation/download/#manual-download), using the same URL pattern and credentials:

```text
https://download.sonra.io/flexter/<MODULE>[-VERSION].<EXTENSION>
```









<ul class="nav nav-tabs" id="tabs-4" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-04-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-04-00" role="tab"
          data-td-tp-persist="rhel / fedora (rpm)" aria-controls="tabs-04-00" aria-selected="true">
        RHEL / Fedora (RPM)
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-04-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-04-01" role="tab"
          data-td-tp-persist="debian / ubuntu (deb)" aria-controls="tabs-04-01" aria-selected="false">
        Debian / Ubuntu (DEB)
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-04-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-04-02" role="tab"
          data-td-tp-persist="other unix (tgz)" aria-controls="tabs-04-02" aria-selected="false">
        Other Unix (TGZ)
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-4-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-04-00" role="tabpanel" aria-labelled-by="tabs-04-00-tab" tabindex="4">
        <p><strong>Download the installers</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexchma.rpm
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xml2er.rpm
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xsd2er.rpm
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/json2er.rpm
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/merge2er.rpm
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexter-ui.rpm
</span></span></code></pre></div><details>
<summary><b>Checking the hashes (optional)</b></summary>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> m in flexchma xml2er xsd2er json2er merge2er flexter-ui<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL <span class="s2">&#34;https://download.sonra.io/flexter/</span><span class="nv">$m</span><span class="s2">.rpm.md5&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">md5ck<span class="o">()</span> <span class="o">{</span> md5sum -c &lt;<span class="o">(</span><span class="nb">echo</span> <span class="s2">&#34;</span><span class="k">$(</span>cat <span class="s2">&#34;</span><span class="nv">$1</span><span class="s2">.md5&#34;</span><span class="k">)</span><span class="s2"> </span><span class="nv">$1</span><span class="s2">&#34;</span><span class="o">)</span><span class="p">;</span> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> f in *.rpm<span class="p">;</span> <span class="k">do</span> md5ck <span class="s2">&#34;</span><span class="nv">$f</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">done</span>
</span></span></code></pre></div></details>
<p><strong>Upgrade the packages</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo dnf install xml2er*.rpm xsd2er*.rpm json2er*.rpm merge2er*.rpm flexchma*.rpm flexter-ui*.rpm
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-04-01" role="tabpanel" aria-labelled-by="tabs-04-01-tab" tabindex="4">
        <p><strong>Download the installers</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexchma.deb
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xml2er.deb
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xsd2er.deb
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/json2er.deb
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/merge2er.deb
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexter-ui.deb
</span></span></code></pre></div><details>
<summary><b>Checking the hashes (optional)</b></summary>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> m in flexchma xml2er xsd2er json2er merge2er flexter-ui<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL <span class="s2">&#34;https://download.sonra.io/flexter/</span><span class="nv">$m</span><span class="s2">.deb.md5&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">md5ck<span class="o">()</span> <span class="o">{</span> md5sum -c &lt;<span class="o">(</span><span class="nb">echo</span> <span class="s2">&#34;</span><span class="k">$(</span>cat <span class="s2">&#34;</span><span class="nv">$1</span><span class="s2">.md5&#34;</span><span class="k">)</span><span class="s2"> </span><span class="nv">$1</span><span class="s2">&#34;</span><span class="o">)</span><span class="p">;</span> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> f in *.deb<span class="p">;</span> <span class="k">do</span> md5ck <span class="s2">&#34;</span><span class="nv">$f</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">done</span>
</span></span></code></pre></div></details>
<p><strong>Upgrade the packages</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install ./xml2er*.deb ./xsd2er*.deb ./json2er*.deb ./merge2er*.deb ./flexchma*.deb ./flexter-ui*.deb
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-04-02" role="tabpanel" aria-labelled-by="tabs-04-02-tab" tabindex="4">
        <p><strong>Download the installers</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexchma.tgz
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xml2er.tgz
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/xsd2er.tgz
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/json2er.tgz
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/merge2er.tgz
</span></span><span class="line"><span class="cl">curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL https://download.sonra.io/flexter/flexter-ui.tgz
</span></span></code></pre></div><details>
<summary><b>Checking the hashes (optional)</b></summary>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> m in flexchma xml2er xsd2er json2er merge2er flexter-ui<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  curl -u <span class="s2">&#34;&lt;USER&gt;:&lt;PASS&gt;&#34;</span> -OL <span class="s2">&#34;https://download.sonra.io/flexter/</span><span class="nv">$m</span><span class="s2">.tgz.md5&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">md5ck<span class="o">()</span> <span class="o">{</span> md5sum -c &lt;<span class="o">(</span><span class="nb">echo</span> <span class="s2">&#34;</span><span class="k">$(</span>cat <span class="s2">&#34;</span><span class="nv">$1</span><span class="s2">.md5&#34;</span><span class="k">)</span><span class="s2"> </span><span class="nv">$1</span><span class="s2">&#34;</span><span class="o">)</span><span class="p">;</span> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> f in *.tgz<span class="p">;</span> <span class="k">do</span> md5ck <span class="s2">&#34;</span><span class="nv">$f</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">done</span>
</span></span></code></pre></div></details>
<p><strong>Upgrade with root access</strong></p>
<p>Move the current installation to a backup folder, then extract the new packages as during the installation. The symbolic links in <code>/usr/bin</code> and <code>/etc/flexter</code> keep pointing to the new files.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo mv /usr/share/flexter /usr/share/flexter_<span class="k">$(</span>date --iso-8601<span class="k">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> m in flexchma xml2er xsd2er json2er merge2er flexter-ui<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  sudo tar xzf <span class="nv">$m</span>*.tgz -C /usr/share
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></div><p><strong>Upgrade without root access</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mv ~/.local/share/flexter ~/.local/share/flexter_<span class="k">$(</span>date --iso-8601<span class="k">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> m in flexchma xml2er xsd2er json2er merge2er flexter-ui<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  tar xzf <span class="nv">$m</span>*.tgz -C ~/.local/share
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></div><div class="alert alert-primary" role="alert"><div class="h4 alert-heading" role="heading">Configuration and license</div>
<p>The backup folder keeps the previous <code>conf</code> directory. If <code>flexter.conf</code> or <code>flexter.lic</code> were stored there rather than in <code>/etc/flexter</code> or <code>~/.config/flexter</code>, copy them into the new installation.</p>
</div>

    </div>
</div>


## Post Upgrade

A few extra steps complete the upgrade.

### Upgrading the Database

Apply the metadata schema changes shipped with the new version:

```bash
flexchma update

# or with explicit connection parameters
flexchma update -m "jdbc:postgresql:[<host>[:port]/]<db>" -M <user> -w <password>
```

### Upgrading Apache Spark

If Apache Spark was installed with the `download.sh` module, run it again to install the Spark version shipped as default with the new release. See the [Post-Installation](https://docs.sonra.io/flexter/master/docs/installation/direct-installation/post-installation/#installing-apache-spark) section for the options.

```bash
# with root access
sudo /usr/share/flexter/sbin/download.sh

# without root access
~/.local/share/flexter/sbin/download.sh
```

### Restarting flexter-ui

The services must be restarted for the upgrade to take effect:

```bash
sudo systemctl restart flexterui-backend

# only if env.json is set to production mode
sudo systemctl restart flexterui-frontend
```
