<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/home/antu &#187; Gentoo</title>
	<atom:link href="http://www.antusblog.de/tag/gentoo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antusblog.de</link>
	<description>Linux, Programmierung und andere Dinge die mich interessieren</description>
	<lastBuildDate>Mon, 26 Oct 2009 06:00:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>nano &#8211; nützliche Funktionen und Konfiguration</title>
		<link>http://www.antusblog.de/2009/04/08/nano-nuetzliche-funktionen-konfiguration/</link>
		<comments>http://www.antusblog.de/2009/04/08/nano-nuetzliche-funktionen-konfiguration/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 22:13:06 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[aspell]]></category>
		<category><![CDATA[Benutzung]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Kommandozeile]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[nano]]></category>
		<category><![CDATA[Rechtschreibprüfung]]></category>
		<category><![CDATA[Syntaxhervorhebung]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=800</guid>
		<description><![CDATA[Der nano-Editor ist sehr einfach zu bedienen, weswegen er gerade bei Anfängern sehr beliebt ist. Und auch wenn er nicht mit dem Funktionsumfang von vi oder emacs mithalten kann hat er einige praktische Funktionen die einem die Arbeit erleichtern können. Er lässt sich auch sehr gut an die eigenen Bedürfnisse anpassen. Wie das geht beschreibe [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/04/nano.png"><img class="aligncenter size-full wp-image-932" title="nano" src="http://antusblog.de/wp-content/uploads/2009/04/nano.png" alt="nano" width="410" height="100" /></a>Der <a href="http://www.nano-editor.org/" target="_blank">nano-Editor</a> ist sehr einfach zu bedienen, weswegen er gerade bei Anfängern sehr beliebt ist. Und auch wenn er nicht mit dem Funktionsumfang von vi oder emacs mithalten kann hat er einige praktische Funktionen die einem die Arbeit erleichtern können. Er lässt sich auch sehr gut an die eigenen Bedürfnisse anpassen. Wie das geht beschreibe ich in diesem Artikel.<br />
<span id="more-800"></span></p>
<h2>Die Konfigurationsdatei</h2>
<p>Um nano an die eigenen Bedürfnisse anzupassen muss man nur die gewünschten Einstellungen in die Konfigurationsdatei eintragen.</p>
<p>Die systemweite Konfigurationsdatei befindet sich normalerweise unter <code>/etc/nanorc</code>, zusätzlich dazu gibt es aber noch die benutzerspezifische Konfigurationsdatei <code>~/.nanorc</code>. Für gewöhnlich gibt es auch eine Beispiel-Konfigurationsdatei, bei mir befindet sich diese unter <code>/usr/share/doc/nano-&lt;Version&gt;/nanorc.sample.bz2</code>.</p>
<p>Die Einstellungen die in der benutzerspezifischen Konfigurationsdatei getätigt wurden überschreiben die der systemweiten Konfiguration, Kommandozeilenparameter überschreiben beide.</p>
<p>Die Syntax der Konfigurationsdateien ist recht simpel: Eine Option besteht immer aus <code>set/unset &lt;Option&gt; &lt;Parameter&gt;</code> und es darf immer nur eine Option pro Zeile geschrieben werden. Ein Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;"># Maus-Unterstützung aktivieren.
set mouse</pre></div></div>

<h2>Rechtschreibprüfung</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/rechtschreibpruefung.png"><img class="alignright size-medium wp-image-890" title="nano kann auch die Rechtschreibung eines Textes überprüfen lassen" src="http://antusblog.de/wp-content/uploads/2009/04/rechtschreibpruefung-300x214.png" alt="nano kann auch die Rechtschreibung eines Textes überprüfen lassen" width="300" height="214" /></a>Wenn man einen Rechtschreibprüfer wie zum Beispiel <a href="http://aspell.net/" target="_blank">aspell</a> installiert hat kann man im nano auch die Rechtschreibung überprüfen. Dazu muss man nur entweder der Option <strong>speller</strong>, der Umgebungsvariable <code>$SPELL</code> oder dem Kommandozeilen-Parameter <code>-s</code> den Befehl für die Rechtschreibprüfung zuweisen. Für aspell wäre das <code>aspell check</code>. Anschließend kann man mittels Strg+T die Rechtschreibprüfung aufrufen. Gentoo-Benutzer müssen beachten das die Rechtschreibprüfung nur verfügbar ist wenn das USE-Flag <em>spell</em> verwendet wird. Falls man kein Rechtschreibprüfer installiert hat kann man das unter Gentoo mittels <code>emerge -av aspell aspell-de</code> nachholen. Ein kleiner Tipp: Wenn man mehrere Wörterbücher installiert hat kann man mittels <code>-l &lt;Sprache&gt;</code> angeben welches Wörterbuch aspell benutzen soll, also z.B. <code>aspell check -l en</code> für Englisch.</p>
<h2>Mehrere Dateien auf einmal bearbeiten</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/mehreredateienbearbeiten.png"><img class="alignright size-full wp-image-887" title="Mehrere Dateien auf einmal bearbeiten" src="http://antusblog.de/wp-content/uploads/2009/04/mehreredateienbearbeiten.png" alt="Mehrere Dateien auf einmal bearbeiten" width="274" height="100" /></a>Ist die Option <strong>multibuffer</strong> eingeschaltet lassen sich auch mehrere Dateien auf einmal im nano öffnen. Man kann dann mittels <code>Alt+.</code> und <code>Alt+,</code> zwischen den geöffneten Dateien/Puffern hin- und herschalten. Mit <code>Strg+R</code> kann man zusätzliche Dateien öffnen bzw. neue Puffer anlegen. Übrigens: Mit <code>Strg+R + Strg+X</code> kann man einen Befehl eingeben, die Ausgabe des Befehl landet dann in einem neuen Puffer und man kann direkt damit arbeiten.</p>
<h2>Dateibrowser</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/dateibrowser.png"><img class="aligncenter size-full wp-image-912" title="Der Dateibrowser vom nano-Editor" src="http://antusblog.de/wp-content/uploads/2009/04/dateibrowser.png" alt="Der Dateibrowser vom nano-Editor" width="430" height="95" /></a>Die wenigsten nano-Benutzer wissen das nano auch einen kleinen Dateibrowser eingebaut hat. Wenn man mittels Strg+O eine Datei abspeichert kann man Strg+T drücken um den Dateibrowser aufzurufen. Im Dateibrowser kann man mit den Pfeiltasten durch die Verzeichnisse navigieren und eine Datei auswählen unter der der Text abgespeichert werden soll.</p>
<h2>Syntaxhervorhebung</h2>
<p><a href="http://antusblog.de/wp-content/uploads/2009/04/syntaxhervorhebung.png"><img class="aligncenter size-full wp-image-915" title="Ein PHP-Quelltext in dem die Syntax farbig hervorgehoben ist." src="http://antusblog.de/wp-content/uploads/2009/04/syntaxhervorhebung.png" alt="Ein PHP-Quelltext in dem die Syntax farbig hervorgehoben ist." width="420" height="100" /></a>Auch Syntaxhervorhebung kann nano. Es gibt zwei Möglichkeiten diese zu konfigurieren. Entweder man trägt die Sytaxschemen alle in der Konfigurationsdatei ein, oder man erstellt Extra-Dateien für jede Sprache und bindet diese mittels include in die Konfiguration ein. Glücklicherweise werden schon einige fertige Syntaxschemen für die gängigsten Sprachen mit nano mitgeliefert, sie finden sich unter <code>/usr/share/nano/</code> und können mittels <code>include "pfad/zum/syntaxschema"</code> eingebunden und aktiviert werden. Als Beispiel, wie so eine Datei aussieht, hier das CSS-Syntaxschema das bei nano mitgeliefert wird:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># /usr/share/nano/css.nanorc</span>
syntax <span style="color: #ff0000;">&quot;css&quot;</span> <span style="color: #ff0000;">&quot;\.css$&quot;</span>
color brightred     <span style="color: #ff0000;">&quot;.&quot;</span>
color brightyellow  <span style="color: #007800;">start</span>=<span style="color: #ff0000;">&quot;\{&quot;</span> <span style="color: #007800;">end</span>=<span style="color: #ff0000;">&quot;\}&quot;</span>
color brightwhite   <span style="color: #007800;">start</span>=<span style="color: #ff0000;">&quot;:&quot;</span> <span style="color: #007800;">end</span>=<span style="color: #ff0000;">&quot;([;^\{]|$)&quot;</span>
color brightblue    <span style="color: #ff0000;">&quot;:active|:focus|:hover|:link|:visited|:link|:after|:before|$&quot;</span>
color brightblue    <span style="color: #007800;">start</span>=<span style="color: #ff0000;">&quot;\/\*&quot;</span> <span style="color: #007800;">end</span>=<span style="color: #ff0000;">&quot;\\*/&quot;</span>
color green         <span style="color: #ff0000;">&quot;;|:|\{|\}&quot;</span></pre></div></div>

<p>Mit syntax wird die Definition eines neuen Schemas eingeleitet. Der erste Parameter gibt den Namen des Schemas an, der zweite ist ein regulärer Ausdruck der bestimmt bei welchen Dateinamen das Schema verwendet werden soll. Dann kann man mit color   festlegen was wie eingefärbt wird. Es ist auch möglich anstelle des regulären Ausdrucks zwei reguläre Ausdrücke (start= und end=) zu benutzen, dann wird alles zwischen den beiden Ausdrücken mit der gewünschten Farbe eingefärbt. Bei der Farbe kann man getrennt durch ein Komma auch noch eine Hintergrundfarbe angeben, also <code>color vordergrundfarbe,hintergrundfarbe "regulärer ausdruck"</code>. Mögliche Farben sind red, green, blue, white, black, yellow, cyan, magenta. Vor jede Farbe kann man auch noch bright schreiben um die Farbe heller zu machen. Neben der Option color gibt es auch noch icolor, der einzige Unterschied ist das icolor bei den regulären Ausdrücken nicht die Groß- und Kleinschreibung beachtet.</p>
<p>Der nano-Editor bietet noch viele weitere Optionen, diese werden auf Seite 2 beschrieben.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/04/08/nano-nuetzliche-funktionen-konfiguration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>package.* Dateien bereinigen mit Portpeek</title>
		<link>http://www.antusblog.de/2009/03/21/package-dateien-bereinigen-mit-portpeek/</link>
		<comments>http://www.antusblog.de/2009/03/21/package-dateien-bereinigen-mit-portpeek/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 10:33:28 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[package.keywords]]></category>
		<category><![CDATA[package.unmask]]></category>
		<category><![CDATA[Portage]]></category>
		<category><![CDATA[portpeek]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=393</guid>
		<description><![CDATA[Portpeek ist ein kleines Skript für Gentoo-Benutzer, das die package.keywords und die package.unmask von nicht mehr benötigten Einträgen bereinigt. Es überprüft ob die entsprechenden Programme bzw. Versionen mittlerweile als stabil gekennzeichnet sind und entfernt die entsprechenden Einträge.
Zuerst einmal muss Portpeek installiert werden.

emerge -av portpeek

Anschließend kann man sich mit folgendem Befehl alle unnötigen Einträge anzeigen lassen.

portpeek [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_622" class="wp-caption aligncenter" style="width: 569px"><a href="http://antusblog.de/wp-content/uploads/2009/03/portpeek_loeschen.png"><img class="size-full wp-image-622" title="portpeek_loeschen" src="http://antusblog.de/wp-content/uploads/2009/03/portpeek_loeschen.png" alt="Portpeek löscht die nicht mehr benötigten Einträge." width="559" height="118" /></a><p class="wp-caption-text">Portpeek löscht die nicht mehr benötigten Einträge.</p></div>
<p><a href="http://www.mpagano.com/blog/?page_id=3" target="_blank">Portpeek</a> ist ein kleines Skript für Gentoo-Benutzer, das die <code>package.keywords</code> und die <code>package.unmask</code> von nicht mehr benötigten Einträgen bereinigt. Es überprüft ob die entsprechenden Programme bzw. Versionen mittlerweile als stabil gekennzeichnet sind und entfernt die entsprechenden Einträge.</p>
<p><span id="more-393"></span>Zuerst einmal muss Portpeek installiert werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">emerge <span style="color: #660033;">-av</span> portpeek</pre></div></div>

<p>Anschließend kann man sich mit folgendem Befehl alle unnötigen Einträge anzeigen lassen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">portpeek <span style="color: #660033;">-ar</span></pre></div></div>

<p>Und so löscht man die aufgelisteten Einträge:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">portpeek <span style="color: #660033;">-arf</span></pre></div></div>

<h2>Befehle und Optionen von Portpeek</h2>
<table border="0">
<thead>
<tr>
<th>Befehl</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>-a, --all</code></td>
<td>Zeige alle Einträge</td>
</tr>
<tr>
<td><code>-k, --keyword</code></td>
<td>Zeige nur Einträge aus package.keywords</td>
</tr>
<tr>
<td><code>-m, --mask</code></td>
<td>Zeige nur Einträge aus package.mask</td>
</tr>
<tr>
<td><code>-u, --unmask</code></td>
<td>Zeige nur Einträge aus package.unmask</td>
</tr>
<tr>
<td><code>-f, --fix</code></td>
<td>Entfernt alle als stabil gekennzeichneten Pakete ohne vorher nachzufragen</td>
</tr>
<tr>
<td><code>-h, --help</code></td>
<td>Zeigt die Hilfe an</td>
</tr>
</tbody>
</table>
<table border="0">
<thead>
<tr>
<th>Option</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>-c, --changes-only</code></td>
<td>Zeigt nur Einträge von Paketen an für die Aktualisierungen vorliegen</td>
</tr>
<tr>
<td><code>-r, --removable-only</code></td>
<td>Zeigt nur Einträge an die entfernt werden würden</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/03/21/package-dateien-bereinigen-mit-portpeek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>genlop: Informationen aus Log-Dateien von Portage auslesen</title>
		<link>http://www.antusblog.de/2009/02/26/genlop-informationen-aus-log-dateien-von-portage-auslesen/</link>
		<comments>http://www.antusblog.de/2009/02/26/genlop-informationen-aus-log-dateien-von-portage-auslesen/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 05:22:08 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[genlop]]></category>
		<category><![CDATA[Portage]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=495</guid>
		<description><![CDATA[Jedes mal wenn man ein Paket emergt werden Informationen darüber in eine Log-Datei geschrieben. Das Programm genlop kann diese Informationen auslesen und daraus zum Beispiel abschätzen wie lange es dauern würde bestimmte Pakete zu emergen. Außerdem kann genlop anzeigen wann Synchronisierungen durchgeführt wurden und wann welches Paket in welcher Version installiert wurde. Um genlop zu [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2009/02/genlopeta.png"><img class="alignleft size-thumbnail wp-image-497" title="genlopeta" src="http://antusblog.de/wp-content/uploads/2009/02/genlopeta-150x135.png" alt="genlopeta" width="150" height="135" /></a>Jedes mal wenn man ein Paket emergt werden Informationen darüber in eine Log-Datei geschrieben. Das Programm genlop kann diese Informationen auslesen und daraus zum Beispiel abschätzen wie lange es dauern würde bestimmte Pakete zu emergen. Außerdem kann genlop anzeigen wann Synchronisierungen durchgeführt wurden und wann welches Paket in welcher Version installiert wurde. Um genlop zu installieren genügt ein einfaches <code>emerge -av genlop</code>.</p>
<p><span id="more-495"></span></p>
<h2>Benutzung</h2>
<p>Mittels <code>genlop -c</code> kann man sich anzeigen lassen wie viel Zeit ein aktuell laufender Emerge-Prozess noch braucht, <code>genlop -t &lt;Kategorie/Paket(e)&gt;</code> zeigt an wie lange es gedauert hat ein bestimmtes Paket zu emergen. Will man im voraus wissen wie lange Emerge für bestimmte Pakete braucht kann man die Ausgabe von <code>emerge -p</code> an genlop weiterleiten.</p>
<div id="attachment_503" class="wp-caption aligncenter" style="width: 502px"><a href="http://antusblog.de/wp-content/uploads/2009/02/genloppretendopenoffice.png"><img class="size-full wp-image-503" title="emerge -p openoffice | genlop -p" src="http://antusblog.de/wp-content/uploads/2009/02/genloppretendopenoffice.png" alt="genloppretendopenoffice" width="492" height="117" /></a><p class="wp-caption-text">Laut genlop würde es 2 Stunden und 47 Minuten dauern openoffice noch einmal zu emergen.</p></div>
<p style="text-align: left;">Außerdem ist es möglich mittels <code>genlop -lu</code> aufzulisten wann welches Paket (de)installiert wurde. Ein Tipp: Mit <code>tail -n &lt;X&gt;</code> lässt sich die Anzeige auf die letzten X Programme beschränken. Wenn man herausfinden möchte welche Pakete an einem bestimmten Tag installiert wurden kann man auch ein Datum angeben, beispielsweise <code>genlop -lu --date 02/23/2009</code>.</p>
<h2>Übersicht</h2>
<p>Eine kleine Übersicht über die Parameter von genlop und was sie bewirken.</p>
<table border="0">
<tbody>
<tr>
<td>Parameter</td>
<td>Funktion</td>
</tr>
<tr>
<td><code>-c</code></td>
<td>Zeigt Pakete an die zur Zeit kompiliert werden und wie lange es ungefähr noch dauern wird.</td>
</tr>
<tr>
<td><code>-e &lt;Kategorie/Paket(e)&gt;</code></td>
<td>Zeigt an wann ein Paket in welcher Version emergt wurde.</td>
</tr>
<tr>
<td><code>-f &lt;Datei&gt;</code></td>
<td>Wertet die Informationen aus Datei aus, anstatt aus /var/log/emerge.log.</td>
</tr>
<tr>
<td><code>-h</code></td>
<td>Zeigt die Hilfe an.</td>
</tr>
<tr>
<td><code>-i</code></td>
<td>Zeigt zusätzliche Informationen wie z.B. USE-Flags oder die durchschnittliche Zeit zum kompilieren an.</td>
</tr>
<tr>
<td><code>-g</code></td>
<td>GMT/UTC-Zeit anstatt der lokalen Zeit anzeigen.</td>
</tr>
<tr>
<td><code>-n</code></td>
<td>Ausgabe nicht farbig machen.</td>
</tr>
<tr>
<td><code>-l</code></td>
<td>Listet auf wann welches Programm in welcher Version installiert wurde (alle je installierten Programme.)</td>
</tr>
<tr>
<td><code>-u</code></td>
<td>Zeigt auch an wann Pakete deinstalliert wurden.</td>
</tr>
<tr>
<td><code>-p</code></td>
<td>Schätzt wie lange es dauern würde die von emerge -p aufgelisteten Pakete zu kompilieren. (emerge -p Paket(e) | genlop -p</td>
</tr>
<tr>
<td><code>-q</code></td>
<td>Wenn ein Paket lokal noch nie emergt wurde kann genlop nicht abschätzen wie lange es dauern würde es zu kompilieren, mit -q wird genlop angewiesen die Datenbank von gentoo.linuxhowtos.org zu befragen.</td>
</tr>
<tr>
<td><code>-r</code></td>
<td>Zeigt an wann Synchronisierungen durchgeführt wurden (emerge &#8211;sync).</td>
</tr>
<tr>
<td><code>-s bzw. -S &lt;Kategorie/Paket(e)&gt;</code></td>
<td>Das angegebene Paket wird wie ein regulärer Ausdruck behandelt. (Bei -S wird die Groß- und Kleinschreibung beachtet, bei -s nicht.)</td>
</tr>
<tr>
<td><code>-t &lt;Kategorie/Paket(e)&gt;</code></td>
<td>Schätzt wie lange es dauern würde die angegebenen Pakete zu emergen.</td>
</tr>
<tr>
<td><code>-v</code></td>
<td>Zeigt die Version von genlop an.</td>
</tr>
<tr>
<td><code>--date &lt;Datum1&gt; [--date &lt;Datum2&gt;]</code></td>
<td>Zeigt nur Ergebnisse zwischen Datum1 und Datum2 an. Wird Datum2 nicht angegeben wird es automatisch zu heute.</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2009/02/26/genlop-informationen-aus-log-dateien-von-portage-auslesen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pakete suchen mit eix</title>
		<link>http://www.antusblog.de/2008/12/20/pakete-suchen-mit-eix/</link>
		<comments>http://www.antusblog.de/2008/12/20/pakete-suchen-mit-eix/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 13:12:34 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[eix]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Paketverwaltung]]></category>

		<guid isPermaLink="false">http://antusblog.de/?p=234</guid>
		<description><![CDATA[Portage durchsuchen. Jeder der Gentoo schon etwas länger benutzt weiß das die Suche nach einem Paket ewig dauert. Kein Wunder, denn die Portage-Datenbank basiert auf Dateien und somit müssen bei jeder Suche unzählige Verzeichnisse und Dateien durchgegangen werden, und das dauert nunmal. Aber es gibt eine Alternative zu emerge --search, sie heißt eix und ist [...]]]></description>
			<content:encoded><![CDATA[<p>Portage durchsuchen. Jeder der Gentoo schon etwas länger benutzt weiß das die Suche nach einem Paket ewig dauert. Kein Wunder, denn die Portage-Datenbank basiert auf Dateien und somit müssen bei jeder Suche unzählige Verzeichnisse und Dateien durchgegangen werden, und das dauert nunmal. Aber es gibt eine Alternative zu <code>emerge --search</code>, sie heißt <a href="http://eix.sourceforge.net/">eix</a> und ist nicht nur schneller als Emerge sondern auch viel mächtiger. Eix basiert auf einem binären Cache, was die Suche stark beschleunigt. Außerdem zeigt eix weit mehr Informationen an und es ist möglich die Suche viel stärker einzugrenzen (Lizenz, Homepage, Kategorie, Use-Flags, &#8230;), nach regulären Ausdrücken zu suchen und vieles mehr.</p>
<p>Ein kleiner Geschwindigkeitsvergleich:<br />
<code>time emerge --search mozilla-firefox<br />
  real    <strong>0m16.174s</strong><br />
  user    0m1.420s<br />
  sys     0m0.256s<br />
time eix mozilla-firefox<br />
  real    <strong>0m0.292s</strong><br />
  user    0m0.024s<br />
  sys     0m0.004s</code><br />
<span id="more-234"></span></p>
<h2>Installation</h2>
<p>Eix zu installieren ist nicht besonders schwer, es gibt natürlich ein ebuild.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">emerge <span style="color: #660033;">-av</span> eix</pre></div></div>

<h2>Benutzung</h2>
<p>Zu erst einmal muss der binäre Cache angelegt werden, ohne den funktioniert eix natürlich nicht. Mit <code>update-eix</code> wird der Cache angelegt/aktualisiert. Nach jedem <code>emerge --sync</code> muss das wiederholt werden, damit der Cache auch auf dem neusten Stand ist. Wer sich etwas Tipparbeit ersparen möchte kann auch gleich den Befehl <code>eix-sync</code> benutzen, der führt erst ein <code>emerge --sync</code> und anschließend ein <code>update-eix</code> aus.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">eix-sync
 * Running emerge --sync
&nbsp;
[...]
&nbsp;
 * Copying old /var/cache/eix cache to /var/cache/eix.previous
 * Running update-eix
Reading Portage settings ..
Building database (/var/cache/eix) ..
&nbsp;
[...]
&nbsp;
Database contains 13135 packages in 152 categories.
Diffing databases (13142 - 13135 packages)
[*&gt;]  == dev-ruby/mkrf (~0.2.3 -&gt; 0.2.3): mkrf is a library for generating Rakefiles, primarily intended for building C extentions for Ruby.
[&lt;]   == x11-themes/gtk-theme-switch (1.0.1-r2 2.0.0_rc2-r2 -&gt; 2.0.0_rc2-r2): Application for easy change of GTK-Themes
      &lt;&lt; x11-themes/gtk-engines-begtk (1.0.1-r2): GTK+1 BeGTK Theme Engine
[N]   &gt;&gt; dev-python/xlwt (~0.7.0): Python library to create spreadsheet files compatible with Excel</pre></div></div>

<p>eix-sync zeigt einem auch gleich eine kleine Übersicht an, welche Pakete neu in Portage sind und welche entfernt oder verändert wurden. </p>
<p><strong>Aber wie sucht man jetzt?</strong><br />
Ganz einfach, per <code>eix &lt;Paket&gt;</code>. Das ist natürlich noch nicht alles, eix bietet unzählige Optionen, diese werden im folgenden erklärt.</p>
<h2>Pakete suchen</h2>
<p>Eix bietet unzählige Möglichkeiten die Parameter der Suche zu verändern. Mehrere Suchausdrücke können kombiniert werden, jeder Suchausdruck kann auf bestimmte Felder (Lizenz, Name, Beschreibung, etc.) beschränkt und es können diverse Bedingungen (installiert, nicht installiert, maskiert, stabil, etc.) festgelegt werden.</p>
<p>Man kann zwischen 4 verschiedene Suchalgorithmen wählen. Mit <code>-e</code> bzw. <code>--exact</code> sucht eix nur noch nach dem exakten Suchausdruck, <code>eix -e kde</code> findet also nur noch das Paket kde, nicht jedoch kde-utils. Wenn man sich nicht sicher ist wie ein Paket geschrieben wird, kann eix versuchen über die <a href="http://de.wikipedia.org/wiki/Levenshtein-Distanz">Levenshtein-Distanz</a> Pakete mit ähnlichem Namen zu finden, dazu wird die Option <code>-f &lt;N&gt;</code> verwendet, N gibt dabei die maximale Distanz an, also wie viele Buchstaben anders sein dürfen. Mit <code>-p</code> bzw. <code>--pattern</code> sucht eix nach einem bestimmten Muster, mehr Informationen darüber stehen in der Manpage von glob (<code>man 7 glob</code>), wichtig hierbei ist das man das Muster in einzelne Anführungszeichen setzt, also &#8216;Muster&#8217;, damit die Shell das Muster nicht interpretiert. Wem Muster nicht reichen und wer lieber mit regulären Ausdrücken arbeitet der kann auch die Option <code>-r</code> bzw. <code>--regex</code> verwenden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">eix <span style="color: #660033;">-f</span> <span style="color: #000000;">2</span> amarock <span style="color: #666666; font-style: italic;"># Findet amarok, trotz des Rechtschreibfehlers</span>
eix <span style="color: #660033;">-p</span> <span style="color: #ff0000;">'??arok'</span> <span style="color: #666666; font-style: italic;"># Findet ebenfalls amarok, auch wenn man sich nicht mehr an die ersten beiden Buchstaben erinnert.</span>
eix <span style="color: #660033;">-r</span> <span style="color: #ff0000;">'^ama.*k$'</span> <span style="color: #666666; font-style: italic;"># Was fängt mit ama an und hört mit k auf? :-)</span></pre></div></div>

<p>Um mehrere Suchausdrücke zu kombinieren werden <code>-a</code> bzw. <code>--and</code> (und) und <code>-o</code> bzw. <code>--or</code> (oder) verwendet. Wenn mehrere Suchausdrücke angegeben werden, aber kein und/oder dazwischen steht wird automatisch abhängig von der Konfigurationsvariable DEFAULT_IS_OR entweder und oder oder eingesetzt. Die und/oder-Operatoren werden von links nach rechts ausgewertet, es ist nicht möglich die Ausdrücke in Klammern zu setzen o.Ä. Mit <code>--not</code> kann man einen Ausdruck negieren bzw. festlegen das der Ausdruck nicht zutreffen soll.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Findet Pakete in deren Namen &quot;kde&quot; und &quot;utils&quot; vorkommt.</span>
eix kde <span style="color: #660033;">-a</span> utils
<span style="color: #666666; font-style: italic;"># Findet Pakete in deren Namen &quot;virtualbox&quot; aber nicht &quot;ose&quot; vorkommt.</span>
eix virtualbox <span style="color: #660033;">-a</span> <span style="color: #660033;">--not</span> ose</pre></div></div>

<p>Nun können diverse Bedingungen festgelegt werden die ein Paket erfüllen muss um bei der Suche beachtet zu werden. Hier die (meiner Meinung nach) wichtigsten Bedingungen.</p>
<table border="0">
<tbody>
<tr>
<th>Bedingung</th>
<th>Beschreibung</th>
</tr>
<tr>
<td><code>-I, --installed</code></td>
<td>Die Pakete müssen installiert sein. Wichtig: Hierbei werden nur Pakete beachtet die sich auch in der Portage-Datenbank befinden. Wenn ein installiertes Paket nicht mehr in Portage enthalten ist kennt eix es nicht.</td>
</tr>
<tr>
<td><code>-i, --multi-installed</code></td>
<td>Die Pakete müssen mehrmals (in verschiedenen Versionen) installiert sein.</td>
</tr>
<tr>
<td><code>-d, --dup-packages</code></td>
<td>Listet nur Pakete auf die sowohl im offiziellen Portage-Baum als auch in einem Overlay vorhanden sind.</td>
</tr>
<tr>
<td><code>-D, --dup-versions</code></td>
<td>Listet nur Pakete auf von denen eine Version sowohl im offiziellen Portage-Baum als auch in einem Overlay vorhanden ist. (Es muss sich um die gleiche Version handeln, also z.B. KDE 4.1 sowohl im offiziellen Portage-Baum als auch in einem Overlay.)</td>
</tr>
<tr>
<td><code>-1, --slotted</code></td>
<td>Die Pakete müssen in einem Slot installiert werden. Hierbei ist egal ob ein Paket nur einen Slot hat oder mehrere, solange das Paket in einem Slot installiert wird.</td>
</tr>
<tr>
<td><code>-2, --slots</code></td>
<td>Die Pakete müssen über mehrere Slots verfügen.</td>
</tr>
<tr>
<td><code>-u, --upgrade</code></td>
<td>Nur Pakete zulassen für die es eine bessere Version gibt. (Das muss nicht unbedingt eine höhere Version sein)</td>
</tr>
<tr>
<td><code>--stable</code></td>
<td>Nur Pakete von denen es eine stabile Version gibt.</td>
</tr>
<tr>
<td><code>--testing</code></td>
<td>Nur Pakete von denen es eine unstabile (testing) oder stabile Version gibt.</td>
</tr>
<tr>
<td><code>--non-masked</code></td>
<td>Nur Pakete von denen es eine nicht maskierte Version gibt.</td>
</tr>
<tr>
<td><code>-O, --overlay</code></td>
<td>Nur Pakete von denen sich eine Version in einem Overlay befindet.</td>
</tr>
<tr>
<td><code>--in-overlay &lt;Overlay&gt;</code></td>
<td>Nur Pakete die sich in einem bestimmten Overlay befinden.</td>
</tr>
<tr>
<td><code>--fetch</code></td>
<td>Nur Pakete deren Installationsdateien nicht automatisch heruntergeladen werden können. (fetch-restriction)</td>
</tr>
</tbody>
</table>
<p>Es ist auch möglich eix nur bestimmte Felder durchsuchen zu lassen, beispielsweise nur den Namen des Pakets oder nur die Beschreibung.</p>
<table border="0">
<tbody>
<tr>
<th>Feld</th>
<th>Beschreibung</th>
</tr>
<tr>
<td><code>-s, --name</code></td>
<td>Der Name des Pakets</td>
</tr>
<tr>
<td><code>-S, --description</code></td>
<td>Die Beschreibung des Pakets.</td>
</tr>
<tr>
<td><code>-C, --category</code></td>
<td>Die Kategorie des Pakets.</td>
</tr>
<tr>
<td><code>-A, --category-name</code></td>
<td>Die Kategorie und der Name des Pakets</td>
</tr>
<tr>
<td><code>-H, --homepage</code></td>
<td>Die Webseite des Pakets</td>
</tr>
<tr>
<td><code>-L, --license</code></td>
<td>Die Lizenz des Pakets</td>
</tr>
<tr>
<td><code>-P, --provide</code></td>
<td>Was das Paket bereitstellt, also z.B. virtual/cron</td>
</tr>
</tbody>
</table>
<h2>Die Ausgabe</h2>
<p>Die Ausgabe von eix lässt sich noch durch einige Zusatzoptionen beeinflussen. So kann beispielsweise mit <code>-c</code> (<code>--compact</code>) die Ausgabe auf eine Zeile pro Paket beschränkt werden, mittels <code>-v</code> bzw. <code>--verbose</code> hingegen werden alle verfügbaren Informationen angezeigt. Das sieht dann so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">eix -ve gcc
* sys-devel/gcc
     Available versions:
        (2.95)  *2.95.3-r9 ~*2.95.3-r10
        (3.1)   *3.1.1-r2
        (3.2)   **3.2.2 *3.2.3-r4
        (3.3)   ~3.3.6-r1
        (3.4)   3.4.6-r2
        (4.0)   ~*4.0.4
        (4.1)   ~4.1.0-r1 4.1.2
        (4.2)   ~4.2.3 ~4.2.4
        (4.3)   **4.3.0 ~4.3.1 ~4.3.1-r1 ~4.3.2
        {altivec bootstrap boundschecking build d doc fixed-point fortran gcj gtk hardened ip28 ip32r10k java libffi mudflap multilib multislot n32 n64 nls nocxx nopie nossp objc objc++ objc-gc openmp static test vanilla}
     Installed versions:  Version: 4.1.2(4.1)
                          Date:    18:38:09 10/20/08
                          USE:     fortran gtk mudflap multilib nls -altivec -bootstrap -build -d -doc -gcj -hardened -ip28 -ip32r10k -libffi -multislot -n32 -n64 -nocxx -objc -objc++ -objc-gc -test -vanilla
                          Version: 4.2.4(4.2)
                          Date:    16:33:30 10/17/08
                          USE:     fortran gtk mudflap multilib nls openmp -altivec -bootstrap -build -doc -gcj -hardened -ip28 -ip32r10k -libffi -multislot -n32 -n64 -nocxx -objc-objc++ -objc-gc -test -vanilla
                          Version: 4.3.1-r1(4.3)
                          Date:    16:33:31 10/17/08
                          USE:     fortran mudflap multilib nls openmp -altivec -bootstrap -build -doc -gcj -gtk -hardened -ip28 -ip32r10k -libffi -multislot -n32 -n64 -nocxx -objc -objc++ -objc-gc -test -vanilla
     Best versions/slot:  3.4.6-r2 4.1.2
     Recommendation:      Downgrade
     Package sets:        system
     Homepage:            http://gcc.gnu.org/
     Description:         The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking
     License:             GPL-2 LGPL-2.1</pre></div></div>

<p>Es wird sogar angezeigt wann man eine bestimmte Version des Pakets installiert hat, und ob Portage eine Aktualisierung bzw. wie in diesem Fall ein Downgrade empfiehlt. </p>
<p>Diese kleine Anleitung deckt keinesfalls alles ab was eix kann. Wer noch mehr wissen möchte sollte die Manpage von eix lesen (<code>man 1 eix</code>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2008/12/20/pakete-suchen-mit-eix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>emerge &#8211;jobs</title>
		<link>http://www.antusblog.de/2008/10/19/emerge-jobs/</link>
		<comments>http://www.antusblog.de/2008/10/19/emerge-jobs/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 21:03:03 +0000</pubDate>
		<dc:creator>Antu</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://antu.bplaced.net/?p=54</guid>
		<description><![CDATA[
Ich hab vorhin eine neue, sehr praktische Funktion in der Manpage von emerge entdeckt. Man kann mit --jobs &#60;Jobs&#62; bzw. -j &#60;Jobs&#62; angeben wieviele Pakete gleichzeitig emergt werden sollen. Praktisch, grade bei Mehrkernprozessoren, da es ja durchaus einige Pakete gibt die mit mehreren gleichzeitigen Kompilationsprozessen nicht klar kommen (MAKEOPTS="-j&#60;Anzahl&#62;"). So kann man den Emerge-Prozess dann [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://antusblog.de/wp-content/uploads/2008/10/emerge_jobs.png"><img class="aligncenter size-full wp-image-56" title="emerge --jobs" src="http://antusblog.de/wp-content/uploads/2008/10/emerge_jobs.png" alt="emerge --jobs" width="564" height="256" /></a></p>
<p>Ich hab vorhin eine neue, sehr praktische Funktion in der Manpage von emerge entdeckt. Man kann mit <code>--jobs &lt;Jobs&gt;</code> bzw. <code>-j &lt;Jobs&gt;</code> angeben wieviele Pakete gleichzeitig emergt werden sollen. Praktisch, grade bei Mehrkernprozessoren, da es ja durchaus einige Pakete gibt die mit mehreren gleichzeitigen Kompilationsprozessen nicht klar kommen (<code>MAKEOPTS="-j&lt;Anzahl&gt;"</code>). So kann man den Emerge-Prozess dann trotzdem beschleunigen. <img src='http://www.antusblog.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.antusblog.de/2008/10/19/emerge-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
