<h1>RPM Next</h1>

<p><a href="https://github.com/AOSC-Dev/rpm#rpm-next">RPM Next</a> Multi-db /var/lib/rpm and /var/lib/appstore isolation skeleton implementation.</p>

<h2>Background</h2>

<p>One day <a href="https://github.com/cjacker">Cjacker</a> had an idea: there are OS layer (/var/lib/rpm) and AppStore layer (/var/lib/appstore) physical isolated. so rpm -ivh/-e only install/erase Apps into/from AppStore layer, OS is totally READ-ONLY. when installing Apps, check dependency in OS layer at first, if unsatisfied depend, then switch to AppStore layer for checking dependency again, if still unsatisfied depend, add dependency problem, otherwise installed Apps successfully.</p>

<h2>NOT container</h2>

<p>It is NOT <a href="https://github.com/alexlarsson/xdg-app">xdg-app</a> nor <a href="https://github.com/ximion/limba">limba</a>, but multi-db isolation try to forbid 3rd-party App pollute the core components of operating system.</p>

<h2>Goal</h2>

<ul>
<li>keep rpm original command unbroken;<br>
</li>
<li>keep librpm original API unbroken;<br>
</li>
<li>just like Mac <strong><em>make install</em></strong> is still able to pollute OS layer.</li>
</ul>

<p>Regards,<br>
Leslie Zhai</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/rpm-software-management/rpm/pull/40'>https://github.com/rpm-software-management/rpm/pull/40</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Update README</li>
  <li>Add a very simple testcase for verifing the implementation.</li>
  <li>Update README</li>
  <li>Update README</li>
  <li>Open source multi-db isolation skeleton implementation.</li>
  <li>Update testcase and README</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>A</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-0">README.md</a>
    (40)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-1">build/rpmbuild.h</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-2">build/spec.c</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-3">configure.ac</a>
    (9)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-4">doc/rpm-isolatation-design.png</a>
    (0)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-5">lib/depends.c</a>
    (262)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-6">lib/query.c</a>
    (126)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-7">lib/rpmchecksig.c</a>
    (65)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-8">lib/rpmcli.h</a>
    (73)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-9">lib/rpmdb.c</a>
    (137)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-10">lib/rpmdb.h</a>
    (42)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-11">lib/rpmdb_internal.h</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-12">lib/rpminstall.c</a>
    (374)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-13">lib/rpmps.c</a>
    (25)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-14">lib/rpmps.h</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-15">lib/rpmts.c</a>
    (102)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-16">lib/rpmts.h</a>
    (70)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-17">lib/transaction.c</a>
    (129)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-18">lib/verify.c</a>
    (107)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-19">po/id.po</a>
    (1466)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-20">rpmbuild.c</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-21">rpmkeys.c</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-22">rpmqv.c</a>
    (21)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/rpm-software-management/rpm/pull/40/files#diff-23">tests/rpm-testcase.sh</a>
    (50)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/rpm-software-management/rpm/pull/40.patch'>https://github.com/rpm-software-management/rpm/pull/40.patch</a></li>
  <li><a href='https://github.com/rpm-software-management/rpm/pull/40.diff'>https://github.com/rpm-software-management/rpm/pull/40.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/rpm-software-management/rpm/pull/40">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ANb80xUeh35-LlsjUw9FdDo6HFPyMqPnks5pWcxBgaJpZM4G90fJ.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/rpm-software-management/rpm/pull/40"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>