FranGarcia.me (Posts about rpm)
https://www.frangarcia.me/categories/rpm.atom
2023-10-27T11:02:50Z
Fran Garcia
Nikola
Fixing yum incomplete transactions
https://www.frangarcia.me/posts/fixing-yum-incomplete-transactions/
2017-11-18T01:12:18+01:00
2017-11-18T01:12:18+01:00
Fran Garcia
<p>I just found an issue with a server that wouldn't let me install any additional
software with yum because it complained of an incomplete transaction. Plus
checking the list of installed RPMs with <code>rpm -qa</code> showed that many of them
where duplicated (old and new versions at the same time).</p>
<p>I used the following commands to get out that mess, and worked beautifully :</p>
<div class="code"><pre class="code literal-block">package-cleanup<span class="w"> </span>--dupes<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-v<span class="w"> </span>Loaded<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>x86_64<span class="w"> </span><span class="p">|</span><span class="w"> </span>awk<span class="w"> </span><span class="s1">'NR % 2 == 0'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>-n1<span class="w"> </span>rpm<span class="w"> </span>-e<span class="w"> </span>--nodeps<span class="w"> </span>--justdb<span class="w"> </span>--noscripts
package-cleanup<span class="w"> </span>--dupes<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-v<span class="w"> </span>Loaded<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>i686<span class="w"> </span><span class="p">|</span><span class="w"> </span>awk<span class="w"> </span><span class="s1">'NR % 2 == 0'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>-n1<span class="w"> </span>rpm<span class="w"> </span>-e<span class="w"> </span>--nodeps<span class="w"> </span>--justdb<span class="w"> </span>--noscripts
package-cleanup<span class="w"> </span>--dupes<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>-v<span class="w"> </span>Loaded<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span>noarch<span class="w"> </span><span class="p">|</span><span class="w"> </span>awk<span class="w"> </span><span class="s1">'NR % 2 == 0'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>xargs<span class="w"> </span>-n1<span class="w"> </span>rpm<span class="w"> </span>-e<span class="w"> </span>--nodeps<span class="w"> </span>--justdb<span class="w"> </span>--noscripts
yum<span class="w"> </span>update
yum-complete-transaction
yum<span class="w"> </span>-y<span class="w"> </span>reinstall<span class="w"> </span>kernel
</pre></div>
<p>The first command is the meaty part; get a list of duplicate RPMs and, with the
awk command get one out of two lines. Then pipe that list to rpm so we can mark
the RPM as removed <strong>without running their removal scripts</strong>, or actually
<strong>removing the files from disk</strong> !</p>
<p>After that, running <code>yum update</code> will take care of ensuring we didn't remove
any dependency and finally <code>yum-complete-transaction</code> will replay the last
failed command.</p>
<p>The last command is optional but apparently is a common problem to end up with
a borked kernel and/or initrd, so reinstalling it for good measure.</p>
<p>As a sample of what <code>yum</code> and <code>yum-complete-transaction</code> where complaining about,
here's a small excerpt of what was going on at the time of the issue:</p>
<div class="code"><pre class="code literal-block"><span class="o">--></span><span class="w"> </span><span class="n">Restarting</span><span class="w"> </span><span class="n">Dependency</span><span class="w"> </span><span class="n">Resolution</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">new</span><span class="w"> </span><span class="n">changes</span><span class="o">.</span><span class="w"> </span>
<span class="o">--></span><span class="w"> </span><span class="n">Running</span><span class="w"> </span><span class="n">transaction</span><span class="w"> </span><span class="n">check</span><span class="w"> </span>
<span class="o">--></span><span class="w"> </span><span class="n">Finished</span><span class="w"> </span><span class="n">Dependency</span><span class="w"> </span><span class="n">Resolution</span><span class="w"> </span>
<span class="n">Error</span><span class="p">:</span><span class="w"> </span><span class="n">Trying</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">remove</span><span class="w"> </span><span class="s2">"systemd"</span><span class="p">,</span><span class="w"> </span><span class="n">which</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">protected</span><span class="w"> </span>
<span class="n">Error</span><span class="p">:</span><span class="w"> </span><span class="n">Trying</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">remove</span><span class="w"> </span><span class="s2">"yum"</span><span class="p">,</span><span class="w"> </span><span class="n">which</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">protected</span><span class="w"> </span>
<span class="w"> </span><span class="n">You</span><span class="w"> </span><span class="n">could</span><span class="w"> </span><span class="n">try</span><span class="w"> </span><span class="n">using</span><span class="w"> </span><span class="o">--</span><span class="n">skip</span><span class="o">-</span><span class="n">broken</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">work</span><span class="w"> </span><span class="n">around</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">problem</span><span class="w"> </span>
<span class="o">**</span><span class="w"> </span><span class="n">Found</span><span class="w"> </span><span class="mi">43</span><span class="w"> </span><span class="n">pre</span><span class="o">-</span><span class="n">existing</span><span class="w"> </span><span class="n">rpmdb</span><span class="w"> </span><span class="n">problem</span><span class="p">(</span><span class="n">s</span><span class="p">),</span><span class="w"> </span><span class="s1">'yum check'</span><span class="w"> </span><span class="n">output</span><span class="w"> </span><span class="n">follows</span><span class="p">:</span><span class="w"> </span>
<span class="n">audit</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">2.7</span><span class="o">.</span><span class="mi">6</span><span class="o">-</span><span class="mf">3.</span><span class="n">el7</span><span class="o">.</span><span class="n">i686</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">audit</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">2.6</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="mf">3.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="mi">32</span><span class="p">:</span><span class="n">bind</span><span class="o">-</span><span class="n">license</span><span class="o">-</span><span class="mf">9.9</span><span class="o">.</span><span class="mi">4</span><span class="o">-</span><span class="mf">50.</span><span class="n">el7</span><span class="o">.</span><span class="n">noarch</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">32</span><span class="p">:</span><span class="n">bind</span><span class="o">-</span><span class="n">license</span><span class="o">-</span><span class="mf">9.9</span><span class="o">.</span><span class="mi">4</span><span class="o">-</span><span class="mf">37.</span><span class="n">el7</span><span class="o">.</span><span class="n">noarch</span>
<span class="mi">7</span><span class="p">:</span><span class="n">device</span><span class="o">-</span><span class="n">mapper</span><span class="o">-</span><span class="mf">1.02</span><span class="o">.</span><span class="mi">140</span><span class="o">-</span><span class="mf">8.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">7</span><span class="p">:</span><span class="n">device</span><span class="o">-</span><span class="n">mapper</span><span class="o">-</span><span class="mf">1.02</span><span class="o">.</span><span class="mi">135</span><span class="o">-</span><span class="mf">1.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="mi">7</span><span class="p">:</span><span class="n">device</span><span class="o">-</span><span class="n">mapper</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.02</span><span class="o">.</span><span class="mi">140</span><span class="o">-</span><span class="mf">8.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="mi">7</span><span class="p">:</span><span class="n">device</span><span class="o">-</span><span class="n">mapper</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.02</span><span class="o">.</span><span class="mi">135</span><span class="o">-</span><span class="mf">1.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">dracut</span><span class="o">-</span><span class="mi">033</span><span class="o">-</span><span class="mf">502.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">dracut</span><span class="o">-</span><span class="mi">033</span><span class="o">-</span><span class="mf">463.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">e2fsprogs</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.42</span><span class="o">.</span><span class="mi">9</span><span class="o">-</span><span class="mf">10.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">e2fsprogs</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.42</span><span class="o">.</span><span class="mi">9</span><span class="o">-</span><span class="mf">9.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">fipscheck</span><span class="o">-</span><span class="n">lib</span><span class="o">-</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">1</span><span class="o">-</span><span class="mf">6.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">fipscheck</span><span class="o">-</span><span class="n">lib</span><span class="o">-</span><span class="mf">1.4</span><span class="o">.</span><span class="mi">1</span><span class="o">-</span><span class="mf">5.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">glib2</span><span class="o">-</span><span class="mf">2.50</span><span class="o">.</span><span class="mi">3</span><span class="o">-</span><span class="mf">3.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">glib2</span><span class="o">-</span><span class="mf">2.46</span><span class="o">.</span><span class="mi">2</span><span class="o">-</span><span class="mf">4.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">glibc</span><span class="o">-</span><span class="mf">2.17</span><span class="o">-</span><span class="mf">196.</span><span class="n">el7</span><span class="o">.</span><span class="n">i686</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">glibc</span><span class="o">-</span><span class="mf">2.17</span><span class="o">-</span><span class="mf">157.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">glibc</span><span class="o">-</span><span class="n">common</span><span class="o">-</span><span class="mf">2.17</span><span class="o">-</span><span class="mf">196.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">glibc</span><span class="o">-</span><span class="n">common</span><span class="o">-</span><span class="mf">2.17</span><span class="o">-</span><span class="mf">157.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">gobject</span><span class="o">-</span><span class="n">introspection</span><span class="o">-</span><span class="mf">1.50</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">1.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">gobject</span><span class="o">-</span><span class="n">introspection</span><span class="o">-</span><span class="mf">1.42</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">1.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">kbd</span><span class="o">-</span><span class="n">misc</span><span class="o">-</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="mf">13.</span><span class="n">el7</span><span class="o">.</span><span class="n">noarch</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">kbd</span><span class="o">-</span><span class="n">misc</span><span class="o">-</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="mf">12.</span><span class="n">el7</span><span class="o">.</span><span class="n">noarch</span>
<span class="n">kernel</span><span class="o">-</span><span class="n">tools</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">3.10</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">693.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">kernel</span><span class="o">-</span><span class="n">tools</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">3.10</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">514.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">krb5</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.15</span><span class="o">.</span><span class="mi">1</span><span class="o">-</span><span class="mf">8.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">krb5</span><span class="o">-</span><span class="n">libs</span><span class="o">-</span><span class="mf">1.14</span><span class="o">.</span><span class="mi">1</span><span class="o">-</span><span class="mf">26.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">libblkid</span><span class="o">-</span><span class="mf">2.23</span><span class="o">.</span><span class="mi">2</span><span class="o">-</span><span class="mf">43.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libblkid</span><span class="o">-</span><span class="mf">2.23</span><span class="o">.</span><span class="mi">2</span><span class="o">-</span><span class="mf">33.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">libcap</span><span class="o">-</span><span class="mf">2.22</span><span class="o">-</span><span class="mf">9.</span><span class="n">el7</span><span class="o">.</span><span class="n">i686</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libcap</span><span class="o">-</span><span class="mf">2.22</span><span class="o">-</span><span class="mf">8.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">libcom_err</span><span class="o">-</span><span class="mf">1.42</span><span class="o">.</span><span class="mi">9</span><span class="o">-</span><span class="mf">10.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libcom_err</span><span class="o">-</span><span class="mf">1.42</span><span class="o">.</span><span class="mi">9</span><span class="o">-</span><span class="mf">9.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">libcurl</span><span class="o">-</span><span class="mf">7.29</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">42.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libcurl</span><span class="o">-</span><span class="mf">7.29</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">35.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
<span class="n">libdb</span><span class="o">-</span><span class="mf">5.3</span><span class="o">.</span><span class="mi">21</span><span class="o">-</span><span class="mf">20.</span><span class="n">el7</span><span class="o">.</span><span class="n">i686</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libdb</span><span class="o">-</span><span class="mf">5.3</span><span class="o">.</span><span class="mi">21</span><span class="o">-</span><span class="mf">19.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span>
<span class="n">libgcc</span><span class="o">-</span><span class="mf">4.8</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="mf">16.</span><span class="n">el7</span><span class="o">.</span><span class="n">i686</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">duplicate</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">libgcc</span><span class="o">-</span><span class="mf">4.8</span><span class="o">.</span><span class="mi">5</span><span class="o">-</span><span class="mf">11.</span><span class="n">el7</span><span class="o">.</span><span class="n">x86_64</span><span class="w"> </span>
</pre></div>
<p>Happy hacking!</p>
Empaquetar software en formato RPM
https://www.frangarcia.me/posts/empaquetar-software-en-formato-rpm/
2012-07-14T18:11:00+02:00
2012-07-14T18:11:00+02:00
Fran Garcia
<p>RPM es un formato de paquete usado por Redhat, Fedora, Mandriva y otras
distribuciones para distribuir software. Permite declarar versiones,
dependencias de unos paquetes con otros, etc.</p>
<p>En este artículo vamos a ver como empaquetar el software <a href="https://github.com/dagwieers/dconf">dconf</a> de
<a href="http://dag.wieers.com/blog/">Dag Wieers</a> en formato RPM para que sea posible instalarlo de forma
sencilla y homogénea. He elegido este paquete al ser un software que
tiene<br>
pocas dependencias y no es necesario compilar código (es un script
Python).</p>
<p><strong>ATENCIÓN</strong>: este paquete sólo se debe instalar en RedHat Enterprise
Linux 5 ó 6. En versiones recientes de Fedora (p.e.: 17) <em>ya existe un
paquete llamado dconf que NO es este</em>. Deberemos cambiar el nombre de
nuestro paquete para no conflictar con el que ya provee la distribución.</p>
<p>Lo primero de todo, será bajar el paquete desde su fuente. En este caso,
desde un repositorio git albergado en <a href="http://www.github.com">GitHub</a>:</p>
<div class="code"><pre class="code literal-block"><span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">git</span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">git</span><span class="w"> </span><span class="n">clone</span><span class="w"> </span><span class="nl">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">dagwieers</span><span class="o">/</span><span class="n">dconf</span><span class="p">.</span><span class="n">git</span><span class="w"> </span>
<span class="n">Initialized</span><span class="w"> </span><span class="n">empty</span><span class="w"> </span><span class="n">Git</span><span class="w"> </span><span class="n">repository</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">dconf</span><span class="o">/</span><span class="n">dconf</span><span class="o">/</span><span class="p">.</span><span class="n">git</span><span class="o">/</span><span class="w"> </span>
<span class="nl">remote</span><span class="p">:</span><span class="w"> </span><span class="n">Counting</span><span class="w"> </span><span class="nl">objects</span><span class="p">:</span><span class="w"> </span><span class="mi">291</span><span class="p">,</span><span class="w"> </span><span class="n">done</span><span class="p">.</span><span class="w"> </span>
<span class="nl">remote</span><span class="p">:</span><span class="w"> </span><span class="n">Compressing</span><span class="w"> </span><span class="nl">objects</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="o">%</span><span class="w"> </span><span class="p">(</span><span class="mi">105</span><span class="o">/</span><span class="mi">105</span><span class="p">),</span><span class="w"> </span><span class="n">done</span><span class="p">.</span><span class="w"> </span>
<span class="nl">remote</span><span class="p">:</span><span class="w"> </span><span class="n">Total</span><span class="w"> </span><span class="mi">291</span><span class="w"> </span><span class="p">(</span><span class="n">delta</span><span class="w"> </span><span class="mi">192</span><span class="p">),</span><span class="w"> </span><span class="n">reused</span><span class="w"> </span><span class="mi">282</span><span class="w"> </span><span class="p">(</span><span class="n">delta</span><span class="w"> </span><span class="mi">183</span><span class="p">)</span><span class="w"> </span>
<span class="n">Receiving</span><span class="w"> </span><span class="nl">objects</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="o">%</span><span class="w"> </span><span class="p">(</span><span class="mi">291</span><span class="o">/</span><span class="mi">291</span><span class="p">),</span><span class="w"> </span><span class="mf">97.16</span><span class="w"> </span><span class="n">KiB</span><span class="p">,</span><span class="w"> </span><span class="n">done</span><span class="p">.</span><span class="w"> </span>
<span class="n">Resolving</span><span class="w"> </span><span class="nl">deltas</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="o">%</span><span class="w"> </span><span class="p">(</span><span class="mi">192</span><span class="o">/</span><span class="mi">192</span><span class="p">),</span><span class="w"> </span><span class="n">done</span><span class="p">.</span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">ls</span><span class="w"> </span><span class="o">-</span><span class="n">l</span><span class="w"> </span>
<span class="n">total</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span>
<span class="n">drwxr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="mi">4096</span><span class="w"> </span><span class="n">Jul</span><span class="w"> </span><span class="mi">14</span><span class="w"> </span><span class="mi">17</span><span class="err">:</span><span class="mi">31</span><span class="w"> </span><span class="n">dconf</span>
</pre></div>
<p>Una vez realizado esto, deberemos bajar las herramientas de RPM para
crear paquetes, así como inicializar una serie de directorios que nos
servirán para futuras construcciones de paquetes:</p>
<div class="code"><pre class="code literal-block"><span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">yum</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="o">-</span><span class="n">y</span><span class="w"> </span><span class="n">rpm</span><span class="o">-</span><span class="n">build</span><span class="w"> </span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">mkdir</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="o">~/</span><span class="n">rpmbuild</span><span class="o">/</span><span class="err">{</span><span class="n">BUILD</span><span class="p">,</span><span class="n">RPMS</span><span class="p">,</span><span class="n">SOURCES</span><span class="p">,</span><span class="n">SRPMS</span><span class="p">,</span><span class="n">SPECS</span><span class="p">,</span><span class="n">TMP</span><span class="err">}</span><span class="w"> </span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">mkdir</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="o">~/</span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">RPMS</span><span class="o">/</span><span class="err">{</span><span class="n">x86_64</span><span class="p">,</span><span class="n">i386</span><span class="p">,</span><span class="n">i586</span><span class="p">,</span><span class="n">i686</span><span class="p">,</span><span class="n">noarch</span><span class="err">}</span>
</pre></div>
<p>rpmbuild espera encontrar un fichero ".spec" (especificaciones) de cómo
construir el paquete. Típicamente se almacenan en ~/rpmbuild/SPECS .
Además, según el fichero que proporciona el mantenedor de dstat espera
encontrar el código en un directorio llamado "dconf-${version}", y no
en "dconf" a secas generado por Git. Para solventar esto :</p>
<div class="code"><pre class="code literal-block"><span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">mv</span><span class="w"> </span><span class="o">~/</span><span class="n">dconf</span><span class="o">/</span><span class="n">dconf</span><span class="p">.</span><span class="n">spec</span><span class="w"> </span><span class="o">~/</span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">SPECS</span><span class="o">/</span><span class="w"> </span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">mv</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="n">dconf</span><span class="o">-</span><span class="mf">0.6</span><span class="n">svn</span><span class="w"> </span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">tar</span><span class="w"> </span><span class="o">-</span><span class="n">cjf</span><span class="w"> </span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">dconf</span><span class="o">/</span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">SOURCES</span><span class="o">/</span><span class="n">dconf</span><span class="o">-</span><span class="mf">0.6</span><span class="n">svn</span><span class="p">.</span><span class="n">tar</span><span class="p">.</span><span class="n">bz2</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">rpmbuild</span><span class="w"> </span><span class="o">-</span><span class="n">bb</span><span class="w"> </span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">SPECS</span><span class="o">/</span><span class="n">dconf</span><span class="p">.</span><span class="n">spec</span><span class="w"> </span>
<span class="o">[</span><span class="n">...</span><span class="o">]</span>
</pre></div>
<p>¡Ya tenemos nuestro RPM generado! Ahora solo nos falta instalarlo y
probarlo :</p>
<div class="code"><pre class="code literal-block"><span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">ls</span><span class="w"> </span><span class="o">-</span><span class="n">l</span><span class="w"> </span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">RPMS</span><span class="o">/</span><span class="n">noarch</span><span class="o">/</span><span class="w"> </span>
<span class="n">total</span><span class="w"> </span><span class="mi">44</span><span class="w"> </span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="p">.</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="mi">43118</span><span class="w"> </span><span class="n">Jul</span><span class="w"> </span><span class="mi">14</span><span class="w"> </span><span class="mi">17</span><span class="err">:</span><span class="mi">43</span><span class="w"> </span><span class="n">dconf</span><span class="o">-</span><span class="mf">0.6</span><span class="n">svn</span><span class="o">-</span><span class="mf">1.</span><span class="n">noarch</span><span class="p">.</span><span class="n">rpm</span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">rpm</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">rpmbuild</span><span class="o">/</span><span class="n">RPMS</span><span class="o">/</span><span class="n">noarch</span><span class="o">/</span><span class="n">dconf</span><span class="o">-</span><span class="mf">0.6</span><span class="n">svn</span><span class="o">-</span><span class="mf">1.</span><span class="n">noarch</span><span class="p">.</span><span class="n">rpm</span>
<span class="n">dconf</span><span class="nv">@rhel6</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">sudo</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="o">-</span><span class="n">o</span><span class="w"> </span><span class="n">dconf</span><span class="p">.</span><span class="n">txt</span><span class="w"> </span><span class="o">-</span><span class="n">v</span><span class="w"> </span>
<span class="n">Reading</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">file</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">dconf</span><span class="p">.</span><span class="n">conf</span><span class="w"> </span>
<span class="n">Reading</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">file</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">dconf</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">redhat</span><span class="p">.</span><span class="n">conf</span><span class="w"> </span>
<span class="n">Building</span><span class="w"> </span><span class="k">file</span><span class="err">:</span><span class="w"> </span><span class="n">dconf</span><span class="p">.</span><span class="n">txt</span>
</pre></div>
<p>Finalmente, un poco de información sobre el RPM . Todos estos datos son
modificables mediante el fichero .spec original.</p>
<div class="code"><pre class="code literal-block"><span class="n">dconf</span><span class="err">@</span><span class="n">rhel6</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="o">$</span><span class="w"> </span><span class="n">rpm</span><span class="w"> </span><span class="o">-</span><span class="n">qi</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span>
<span class="n">Name</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="n">Relocations</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="ow">not</span><span class="w"> </span><span class="n">relocatable</span><span class="p">)</span><span class="w"> </span>
<span class="n">Version</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mf">0.6</span><span class="n">svn</span><span class="w"> </span><span class="n">Vendor</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">none</span><span class="p">)</span><span class="w"> </span>
<span class="n">Release</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">Build</span><span class="w"> </span><span class="n">date</span><span class="p">:</span><span class="w"> </span><span class="n">Sat</span><span class="w"> </span><span class="mi">14</span><span class="w"> </span><span class="n">Jul</span><span class="w"> </span><span class="mi">2012</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">43</span><span class="p">:</span><span class="mi">09</span><span class="w"> </span><span class="n">PM</span><span class="w"> </span><span class="n">CEST</span><span class="w"> </span>
<span class="n">Install</span><span class="w"> </span><span class="n">date</span><span class="p">:</span><span class="w"> </span><span class="n">Sat</span><span class="w"> </span><span class="mi">14</span><span class="w"> </span><span class="n">Jul</span><span class="w"> </span><span class="mi">2012</span><span class="w"> </span><span class="mi">05</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">22</span><span class="w"> </span><span class="n">PM</span><span class="w"> </span><span class="n">CEST</span><span class="w"> </span><span class="n">Build</span><span class="w"> </span><span class="n">Host</span><span class="p">:</span><span class="w"> </span><span class="n">rhel6</span><span class="w"> </span>
<span class="n">Group</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">System</span><span class="w"> </span><span class="n">Environment</span><span class="o">/</span><span class="n">Base</span><span class="w"> </span><span class="n">Source</span><span class="w"> </span><span class="n">RPM</span><span class="p">:</span><span class="w"> </span><span class="n">dconf</span><span class="o">-</span><span class="mf">0.6</span><span class="n">svn</span><span class="o">-</span><span class="mf">1.</span><span class="n">src</span><span class="o">.</span><span class="n">rpm</span><span class="w"> </span>
<span class="n">Size</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">128551</span><span class="w"> </span><span class="n">License</span><span class="p">:</span><span class="w"> </span><span class="n">GPL</span><span class="w"> </span>
<span class="n">Signature</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">none</span><span class="p">)</span><span class="w"> </span>
<span class="n">URL</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">dag</span><span class="o">.</span><span class="n">wieers</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">home</span><span class="o">-</span><span class="n">made</span><span class="o">/</span><span class="n">dconf</span><span class="o">/</span><span class="w"> </span>
<span class="n">Summary</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">Create</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">system</span><span class="s1">'s hardware and software configuration snapshot </span>
<span class="n">Description</span><span class="w"> </span><span class="p">:</span><span class="w"> </span>
<span class="n">Dconf</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">tool</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">collect</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">system</span><span class="s1">'s hardware and software configuration. </span>
<span class="n">It</span><span class="w"> </span><span class="n">allows</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">take</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">system</span><span class="w"> </span><span class="n">configuration</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">on</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">road</span><span class="p">,</span><span class="w"> </span><span class="n">compare</span><span class="w"> </span>
<span class="n">identical</span><span class="w"> </span><span class="n">systems</span><span class="w"> </span><span class="p">(</span><span class="n">like</span><span class="w"> </span><span class="n">nodes</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">cluster</span><span class="p">)</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">troubleshoot</span><span class="w"> </span><span class="n">HW</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">SW</span><span class="w"> </span>
<span class="n">problems</span><span class="o">.</span>
<span class="n">Dconf</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">also</span><span class="w"> </span><span class="n">useful</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">projects</span><span class="w"> </span><span class="n">where</span><span class="w"> </span><span class="n">you</span><span class="w"> </span><span class="n">have</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">manage</span><span class="w"> </span><span class="n">changes</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">a</span><span class="w"> </span>
<span class="n">team</span><span class="o">.</span><span class="w"> </span><span class="n">Dconf</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">send</span><span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="n">system</span><span class="w"> </span><span class="n">changes</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">email</span><span class="w"> </span><span class="n">addressesso</span><span class="w"> </span>
<span class="n">that</span><span class="w"> </span><span class="n">they</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">be</span><span class="w"> </span><span class="n">revised</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">discussed</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">group</span><span class="o">.</span>
<span class="n">You</span><span class="w"> </span><span class="n">can</span><span class="w"> </span><span class="n">customize</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">dconf</span><span class="w"> </span><span class="n">configuration</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">specific</span><span class="w"> </span><span class="n">needs</span><span class="p">,</span><span class="w"> </span><span class="n">likemaking</span><span class="w"> </span>
<span class="n">a</span><span class="w"> </span><span class="n">profile</span><span class="w"> </span><span class="n">of</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">laptop</span><span class="s1">'s hardware or copy specific software configuration </span>
<span class="n">files</span><span class="w"> </span><span class="n">to</span><span class="w"> </span><span class="n">send</span><span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">compare</span><span class="w"> </span><span class="n">with</span><span class="w"> </span><span class="n">other</span><span class="w"> </span><span class="n">systems</span><span class="o">.</span>
</pre></div>
<p>Hay un excelente documento con más detalle sobre las distintas
posibilidades de rpmbuild en el sitio <a href="http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-rpmbuild">Linux Para Todos</a>.</p>