<?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>node-0 &#187; Techtip</title>
	<atom:link href="http://node-0.mneisen.org/category/techtip/feed/" rel="self" type="application/rss+xml" />
	<link>http://node-0.mneisen.org</link>
	<description>more random ramblings ...</description>
	<lastBuildDate>Tue, 20 Oct 2009 08:32:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ubuntu: Ruby und MySQL</title>
		<link>http://node-0.mneisen.org/2008/01/10/ubuntu-ruby-und-mysql/</link>
		<comments>http://node-0.mneisen.org/2008/01/10/ubuntu-ruby-und-mysql/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 23:22:32 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/2008/01/10/ubuntu-ruby-und-mysql/</guid>
		<description><![CDATA[	Möchte man das RubyGem mysql unter Ubuntu oder Kubuntu installieren, ist es zunächst notwendig, die Dev-Sourcen des MySQL-Clients zu installieren, sonst kommt es zu folgender Fehlermeldung:
	$ sudo gem install mysql
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native [...]]]></description>
			<content:encoded><![CDATA[	<p>Möchte man das RubyGem <a href="http://www.tmtm.org/en/mysql/ruby/">mysql</a> unter <a href="http://www.ubuntu.com/">Ubuntu</a> oder <a href="http://www.kubuntu.com/">Kubuntu</a> installieren, ist es zunächst notwendig, die Dev-Sourcen des MySQL-Clients zu installieren, sonst kommt es zu folgender Fehlermeldung:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo gem install mysql
Building native extensions.  This could take a <span class="kw1">while</span>...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.
&nbsp;
/usr/bin/ruby1<span class="nu0">.8</span> extconf.rb install mysql
checking <span class="kw1">for</span> mysql_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lmysqlclient... no
checking <span class="kw1">for</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lm... yes
checking <span class="kw1">for</span> mysql_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lmysqlclient... no
checking <span class="kw1">for</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lz... no
checking <span class="kw1">for</span> mysql_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lmysqlclient... no
checking <span class="kw1">for</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lsocket... no
checking <span class="kw1">for</span> mysql_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lmysqlclient... no
checking <span class="kw1">for</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lnsl... yes
checking <span class="kw1">for</span> mysql_query<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">in</span> -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file
<span class="kw1">for</span> more details. You may need configuration options.
<span class="br0">&#91;</span>...<span class="br0">&#93;</span></pre>
	<p>Die Fehlermeldung weist darauf hin, dass die Client-Sourcen von MySQL finden; bei der Erstellung der nativen Anteile der Ruby-MySQL-Bindings wird versucht, gegen die Bibliothek mit den entsprechenden Routinen zu binden (<code>-lmysqlclient</code>).</p>
	<p>Die notwendige Entwickler-Bibliothek des MySQL-Clients kann folgendermaßen installiert werden:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo apt-get install libmysqlclient15-dev</pre>
	<p>Danach kann dann das mysql-Gem installiert werden:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo gem install mysql</pre>
	<p>Fertig.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2008/01/10/ubuntu-ruby-und-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RMagick unter Ubuntu/Kubuntu installieren</title>
		<link>http://node-0.mneisen.org/2007/12/03/rmagick-unter-ubuntukubuntu-installieren/</link>
		<comments>http://node-0.mneisen.org/2007/12/03/rmagick-unter-ubuntukubuntu-installieren/#comments</comments>
		<pubDate>Mon, 03 Dec 2007 12:25:11 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=289</guid>
		<description><![CDATA[	Wer gerne automatisiert Bilder bearbeitet und Ruby mag, für den ist RMagick genau das Richtige. Allerdings ist die Installation unter Ubuntu nicht ganz ohne.
	Denn wie immer, wenn der Paket-Manager (in diesem Falle also apt) die Pakete nicht im Repository finden kann, steht man ein bisschen im Regen. Natürlich lässt sich RMagick (wie bei Ruby-Paketen üblich) [...]]]></description>
			<content:encoded><![CDATA[	<p>Wer gerne automatisiert Bilder bearbeitet und Ruby mag, für den ist <a href="http://rmagick.rubyforge.org/">RMagick</a> genau das Richtige. Allerdings ist die Installation unter Ubuntu nicht ganz ohne.</p>
	<p>Denn wie immer, wenn der Paket-Manager (in diesem Falle also apt) die Pakete nicht im Repository finden kann, steht man ein bisschen im Regen. Natürlich lässt sich RMagick (wie bei Ruby-Paketen üblich) auch über die gem-Repositories installieren. Probiert man das dann, passiert aber folgendes:</p>
	<pre class="codetext" style="font-size:9pt;">$ sudo gem install rmagick
Building native extensions.  This could take a while...
ERROR:  While executing gem ...
  (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.
&nbsp;
ruby gem_extconf.rb install rmagick
&nbsp;
sh configure
&nbsp;
Configuring RMagick 1.15.11
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gcc option to accept ISO C99... -std=gnu99
checking for gcc -std=gnu99 option to accept ISO Standard C...
  (cached) -std=gnu99
checking for ruby... /usr/bin/ruby
checking for Magick-config... no
checking for GraphicsMagick-config... no
configure: error: Can't install RMagick.
  Can't find Magick-config or GraphicsMagick-config program.
RMagick configuration failed with status 1.
&nbsp;
&nbsp;
Gem files will remain installed in
  /var/lib/gems/1.8/gems/rmagick-1.15.11 for inspection.
Results logged to
  /var/lib/gems/1.8/gems/rmagick-1.15.11/gem_make.out</pre>
	<p>Wie so oft besteht die Lösung darin, zunächst ein paar andere Pakete zu installieren. In unserem Fall sind das zunächst einmal die <code>build-essentials</code>:</p>
	<pre class="codetext" style="font-size:9pt;">$ sudo apt-get install build-essential</pre>
	<p>Damit sind wir aber noch nicht fertig. Was fehlt noch? Ein Blick in Google und Co. bringt folgende Lösung:<br />
<pre class="codetext" style="font-size:9pt;">$ sudo apt-get install libmagick9-dev ruby1.8-dev</pre>
	<p>Danach sollte ein neuerlicher Aufruf<br />
<pre class="codetext" style="font-size:9pt;">$ sudo gem install rmagick</pre>
	<p>zum gewünschten Ergebnis führen.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/12/03/rmagick-unter-ubuntukubuntu-installieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Techtip: Umlaute und xfig</title>
		<link>http://node-0.mneisen.org/2007/11/07/techtip-umlaute-und-xfig/</link>
		<comments>http://node-0.mneisen.org/2007/11/07/techtip-umlaute-und-xfig/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 12:09:23 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techtip]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=287</guid>
		<description><![CDATA[	Wer &#8211; wie ich &#8211; häufiger mal mit xfig arbeitet und mit diesem Zeichenprogramm eigentlich sehr zufrieden ist, wird dennoch immer wieder an der Tatsache verzweifeln, dass xfig es einem scheinbar absichtlich sehr schwer macht, Umlaute und andere diakritische Zeichen einzugeben.
	Da ich immer wieder vergesse, wie genau das geht, dokumentiere ich das mal. Ich denke, [...]]]></description>
			<content:encoded><![CDATA[	<p>Wer &#8211; wie ich &#8211; häufiger mal mit <a href="http://www.xfig.org/">xfig</a> arbeitet und mit diesem Zeichenprogramm eigentlich sehr zufrieden ist, wird dennoch immer wieder an der Tatsache verzweifeln, dass xfig es einem scheinbar absichtlich sehr schwer macht, Umlaute und andere diakritische Zeichen einzugeben.</p>
	<p>Da ich immer wieder vergesse, wie genau das geht, dokumentiere ich das mal. Ich denke, dass auch andere Benutzer von xfig ähnliche Probleme haben.</p>
	<p>Zunächst einmal entnehmen wir der <a href="http://xfig.org/userman/drawing.html#compose-char">entsprechenden Stelle der xfig-Dokumentation</a>, dass man Latin-1-Zeichen mit dem Meta- oder Alt-Key zusammensetzen kann.</p>
	<p>Allerdings ist es enorm wichtig, die Beschreibung dort exakt zu lesen. Um z.B. ein ä einzugeben, empfiehlt die Dokumentation:</p>
	<blockquote>
		<p> For example to enter `a umlaut&#8217;, press and release the COMPOSE key (or META or ALT key), enter the character `a&#8217;, and then the character `&#8221;&#8217; (double quote).</p>
	</blockquote>
	<p>Es ist entscheidend, die Alt-Taste tatsächlich loszulassen, <em>bevor</em> man das a eingibt &#8211; ansonsten passiert entweder nichts oder man hat irgendeinen Shortcut ausgelöst.</p>
	<p>Ein Traum von mir ist, dass die Maintainer von xfig irgendwann einmal auch die Eingabe von Umlauten und anderen Zeichen ohne diese Verrenkungen ermöglichen. xfig ist toll, aber die Eingabe von Sonderzeichen ist eine Zumutung.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/11/07/techtip-umlaute-und-xfig/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kubuntu Upgrade von Edgy Eft nach Feisty Fawn &#8211; Visual Guide</title>
		<link>http://node-0.mneisen.org/2007/05/02/kubuntu-upgrade-von-edgy-eft-nach-feisty-fawn-visual-guide/</link>
		<comments>http://node-0.mneisen.org/2007/05/02/kubuntu-upgrade-von-edgy-eft-nach-feisty-fawn-visual-guide/#comments</comments>
		<pubDate>Wed, 02 May 2007 10:21:08 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Xubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=243</guid>
		<description><![CDATA[	Am 19. April 2007 ist die neuste Version 7.04 »Feisty Fawn« der Betriebssysteme aus der Ubuntu-Familie (also Ubuntu, Kubuntu und Xubuntu) erschienen. Dieser Blogpost soll als »Visual Guide« für das Upgrade von Kubuntu 6.10 »Edgy Eft« nach Kubuntu 7.04 »Feisty Fawn« dienen und den Upgrade-Prozess auch für den Normal-User (gibt es den auf Linux-Systemen überhaupt [...]]]></description>
			<content:encoded><![CDATA[	<p>Am 19. April 2007 ist die neuste Version 7.04 »Feisty Fawn« der Betriebssysteme aus der Ubuntu-Familie (also Ubuntu, Kubuntu und Xubuntu) erschienen. Dieser Blogpost soll als »Visual Guide« für das Upgrade von Kubuntu 6.10 »Edgy Eft« nach Kubuntu 7.04 »Feisty Fawn« dienen und den Upgrade-Prozess auch für den Normal-User (gibt es den auf Linux-Systemen überhaupt schon?) so einfach wie möglich machen.</p>
	<h3>Vorbedingungen</h3>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-00.png"><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-00.png" width="200" height="150" alt="Screenshot von Kubuntu Edgy Eft vor dem Upgrade" title="Screenshot von Kubuntu Edgy Eft vor dem Upgrade"  /></a> Absolute Vorbedingung für ein Upgrade nach »Feisty Fawn« ist ein laufendes System mit Kubuntu »Edgy Eft«.</p>
	<p>Wer noch Kubuntu 6.06 »Dapper Drake« verwendet, muss zunächst auf »Edgy Eft« upgraden &#8211; ein direktes Upgrade ist leider nicht möglich. Das Upgrade von »Dapper Drake« nach »Edgy Eft« ist <a href="http://node-0.mneisen.org/2006/11/25/kubuntu-upgrade-von-dapper-drake-auf-edgy-eft/">hier</a> beschrieben.</p>
	<p>Darüber hinaus ist eine funktionierende Verbindung zum Internet notwendig, um die aktualisierten Pakete aus den Repositories laden zu können.</p>
	<h3>Das Upgrade</h3>
	<p>Sind die gerade beschriebenen Vorbedingungen erfüllt, kann mit dem Upgrade von <em>Edgy Eft</em> nach <em>Feisty Fawn</em> begonnen werden.</p>
	<h4>Adept Package Manager starten</h4>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-01.png"><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-01.png" width="200" height="150" alt="" title=""  /></a>Für das Upgrade von <em>Edgy Eft</em> nach <em>Feisty Fawn</em> kann erstmals ein graphisches Upgrade-Tool genutzt werden; dies ist auch die empfohlene Vorgehensweise. Alternativ kann ein Upgrade natürlich auch weiterhin über die Kommandozeile mit <em>apt</em> vorgenommen werden.</p>
	<p>Auf einem Desktop-System ist aber sicherlich das graphische Tool vorzuziehen: Daher wird zunächst der Adept Package Manager gestartet.</p>
	<p>Dies kann wahlweise über das in Kubuntu vorkonfigurierte <a href="http://kde-apps.org/content/show.php?content=33985">Katapult</a> (Alt+Shift) oder über das K-Menü -> System -> Adept Manager geschehen.</p>
	<h4>edgy-updates freischalten</h4>
	<p><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-08.png" width="262" height="120" alt="" title="" /> Im Adept Manager wird im Menü <em>Adept</em> der Punkt <em>Manage Repositories</em> ausgewählt.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-09.png"><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-09.png" width="430" height="247" alt="Repository für edgy-updates einschalten" title="Repository für edgy-updates einschalten"  /></a></p>
	<p>In der Liste der Repositories müssen nun diejenigen Repositories aktiviert werden, bei denen als Distribution (dritte Spalte) <em>edgy-updates</em> angegeben ist. Das Aktivieren des jeweiligen Repositorys ist ganz einfach: Rechts-Klick auf die Zeile für dieses Reporitory und dann <em>enable</em> auswählen.</p>
	<h4>Fetch Updates</h4>
	<p><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-07.png" width="104" height="46" alt="Informationen über neue Pakete aus den Repositories holen" title="Informationen über neue Pakete aus den Repositories holen" /> Nachdem wir Adept nun mitgeteilt haben, dass wir auch die <em>edgy-updates</em> haben wollen (siehe letzter Punkt), klicken wir auf <em>Fetch Updates</em>, um aus den einzelnen Repositories die neuesten Paketbeschreibungen zu holen.</p>
	<h4>Full Upgrade</h4>
	<p><img class="alignright" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-05.png" width="91" height="46" alt="Full Upgrade nach Feisty Fawn" title="Full Upgrade nach Feisty Fawn" />Vor dem eigentlich Upgrade nach <em>Feisty Fawn</em> müssen wir zunächst noch <em>Edgy Eft</em> auf den aktuellsten Stand bringen. Dazu wählen wir <em>Full Upgrade</em> aus und klicken dann auf <em>Apply</em>.</p>
	<p><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-10.png" width="104" height="46" alt="Änderungen am System ausführen und aktualisierte Pakete einspielen" title="Änderungen am System ausführen und aktualisierte Pakete einspielen" />Das nun folgende Update des Systems kann etwas dauern &#8211; zunächst wird nämlich <em>Edgy Eft</em> auf den aktuellen Stand gebracht. Ist dies geschehen, ...</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-11.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-11.png" width="430" height="249" alt="Aktualisierung von Edgy Eft vor dem Upgrade auf Feisty Fawn" title="Aktualisierung von Edgy Eft vor dem Upgrade auf Feisty Fawn"  /></a></p>
	<h4>Das Upgrade-Tool: Anweisungen folgen</h4>
	<p>... startet dann das neue graphische Update-Tool, das nach Rückfrage, ob man denn auf <em>Feisty Fawn</em> upgraden möchte, einige Veränderungen am System vornimmt.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-14.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-14.png" width="430" height="355" alt="Startansicht des graphischen Updatetools für Feisty Fawn" title="Startansicht des graphischen Updatetools für Feisty Fawn"  /></a></p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-15.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-15.png" width="430" height="355" alt="Der Upgrader auf Feisty Fawn gibt ein paar Hinweise" title="Der Upgrader auf Feisty Fawn gibt ein paar Hinweise"  /></a></p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-16.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-16.png" width="430" height="355" alt="Mit dem eigentlichen Upgrade kann es losgehen ..." title="Mit dem eigentlichen Upgrade kann es losgehen ..."  /></a></p>
	<p>Dann kann es mit dem eigentlichen Upgrade losgehen.</p>
	<h4>Das eigentliche Upgrade</h4>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-18.png"><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-18.png" width="200" height="118" alt="Letzte Vorbereitungen" title="Letzte Vorbereitungen"  /></a>... verlangt vom Nutzer eigentlich nur eines: Geduld, und das &#8211; je nach Bandbreite der Internetverbindung durchaus in größeren Maßen. Je nach Anzahl und Art der installierten Pakete sind es ca. 750 MB und mehr, die für das Upgrade downgeloadet werden müssen.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-21.png"><img class="alignright" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-21.png" width="183" height="200" alt="Soll das Upgrade wirklich durchgeführt werden?" title="Soll das Upgrade wirklich durchgeführt werden?"  /></a>Nach ein paar letzten Vorbereitungen fragt der Upgrade noch einmal nach, ob man das Upgrade nun wirklich durchführen möchte. <em>Last exit</em>, sozusagen. Da wir mit dem Upgrade natürlich fortfahren wollen, klicken wir auf <em>Start Upgrade</em>, und gehen Kaffee kochen, Zeitung lesen oder tun etwas anderes zeitaufwändiges, denn: Selbst mit DSL2000 dauert es nun ca. eine Stunde, bis alle Pakete da sind.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-26.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-26.png" width="430" height="253" alt="Download der neuen Pakete" title="Download der neuen Pakete"  /></a></p>
	<h4>Handarbeit</h4>
	<p>Das Upgrade läuft dann vollautomatisch durch, bis auf zwei Ausnahmen:</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-27.png"><img class="alignleft" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-27.png" width="200" height="179" alt="Soll die alte Konfiguration übernommen oder durch eine neue Version ersetzt werden?" title="Soll die alte Konfiguration übernommen oder durch eine neue Version ersetzt werden?"  /></a>Zum einen fragt das Upgrade-Tool nach, bevor es vom Benutzer geänderte Konfigurationsfiles mit einer neuen Version überschreibt. Da kann es u.U. sinnvoll sein, die alte Konfigurationsdatei zu sichern und dann erst einmal die neue Version zu nehmen, um sie dann nach dem Upgrade wieder anzupassen. Einfach die alte Version zu behalten kann sich als fatal herausstellen, etwa dann, wenn die neue Version des entsprechenden Pakets das alte Format nicht mehr lesen kann oder bspw. neue Funktionen anbietet, deren Default-Einstellungen nicht dem gewünschten Verhalten entspricht.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-29.png"><img class="alignright" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-29.png" width="183" height="200" alt="Einige Pakete werden im Zuge des Upgrades deinstalliert" title="Einige Pakete werden im Zuge des Upgrades deinstalliert"  /></a>Zum anderen informiert das Tool über diejenigen Pakete, für die der Support eingestellt wurde und zusätzlich über diejenigen Pakete, die im Zuge des Upgrades deinstalliert werden. Beides ist tatsächlich eher als Information zu sehen, großartig geändert werden kann das Verhalten des Upgrade-Tools nicht. Das wäre auch wenig sinnvoll, da unsupportete Pakete und solche, die für den Betrieb des Systems nicht mehr notwendig sind, ohnehin nur ungenutzt auf der Platte herumliegen würden und zudem eventuell mit neuen Versionen anderer Pakete konfligieren können.</p>
	<h4>Das Ende naht</h4>
	<p>Bekanntlich hat alles mal ein Ende, und so verhält sich das auch mit dem Upgrade auf <em>Feisty Fawn</em>.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-32.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-32.png" width="430" height="84" alt="Reboot tut gut" title="Reboot tut gut"  /></a></p>
	<p>Zu guter Letzt bleibt uns nur noch eins zu tun, nämlich das System neu zu starten.</p>
	<h4>Reboot</h4>
	<p>Nach dem Reboot sollte uns Kubuntu 7.04 »Feisty Fawn« in seiner ganzen Pracht begrüßen.</p>
	<p>Am Bootvorgang hat sich graphisch nur wenig geändert:<br />
<a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-34.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-34.png" width="430" height="343" alt="Bootvorgang von Feisty Fawn" title="Bootvorgang von Feisty Fawn"  /></a></p>
	<p>Der Loginscreen ist ebenfalls recht ähnlich geblieben:<br />
<a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-35.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-35.png" width="430" height="343" alt="Login-Screen von Kubuntu Feisty Fawn" title="Login-Screen von Kubuntu Feisty Fawn"  /></a></p>
	<p>Gleiches gilt auch für den Desktop:<br />
<a href="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/upgrade-edgy-eft-feisty-fawn-36.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/04/upgrade-edgy-feisty/_upgrade-edgy-eft-feisty-fawn-36.png" width="430" height="322" alt="Desktop von Kubuntu 7.04 Feisty Fawn" title="Desktop von Kubuntu 7.04 Feisty Fawn"  /></a></p>
	<h3>Fazit</h3>
	<p>Das Upgrade von Kubuntu 6.10 »Edgy Eft« auf Kubuntu 7.04 »Feisty Fawn« ist dank des graphischen Upgrade-Tools kinderleicht und DAU-sicher. Der Anwender profitiert nach dem Upgrade in erster Linie von neuen Versionen wichtiger Anwendungen &#8211; z.B. OpenOffice 2.2, Apache 2.2, Java SDK 1.6, Subversion 1.4.3, ... und viele andere mehr.</p>
	<p>Insbesondere die Unterstützung von WLANs hat sich ebenfalls entscheidend verbessert. Wer also ohnehin die neuen Software-Versionen nutzen möchte, ist mit einem Upgrade auf <em>Feisty Fawn</em> gut beraten.</p>
	<p><small><br />
<strong>Zu diesem Thema in der Blogosphäre:</strong></p>
	<ul>
		<li>Planet Geek: <a href="http://planet-geek.com/archives/003858.html">Ubuntu Feisty Fawn Upgrade from Edgy Eft</a></li>
		<li>Netscape Tech: <a href="http://tech.netscape.com/story/2007/04/21/ubuntu-feisty-fawn-upgrade-was-a-breeze">Ubuntu »Feisty Fawn« upgrade was a breeze</a></li>
		<li>Nixcraft: <a href="http://www.cyberciti.biz/tips/howto-upgrading-existing-ubuntu-installation.html">Howto upgrade from Ubuntu 6.10 to Ubuntu feisty fawn 7.04 Linux</a></li>
	</ul>
	<ul>
		<li>Daniel Schneller: <a href="http://dschneller.blogspot.com/2007/04/upgrade-to-feisty-fawn.html">Upgrade to Feisty Fawn</a>
	<p></small></p>


 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/05/02/kubuntu-upgrade-von-edgy-eft-nach-feisty-fawn-visual-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Erzeugen einer Liste installierter Pakete auf einem (K)Ubuntu-System</title>
		<link>http://node-0.mneisen.org/2007/04/17/erzeugen-einer-liste-installierter-pakete-auf-einem-kubuntu-system/</link>
		<comments>http://node-0.mneisen.org/2007/04/17/erzeugen-einer-liste-installierter-pakete-auf-einem-kubuntu-system/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 22:44:53 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=237</guid>
		<description><![CDATA[	Wer sich schon einmal gefragt hat, wie er eine Liste aller auf seinem Ubuntu- bzw. Kubuntu-System installierten Pakete erhalten kann, sollte sich mal das folgende kleine Kommando angucken:
	$ sudo dpkg -l &#124; grep ^ii &#124; awk '{print $2}' &#62; paket-liste
	Es wird eine Liste installierter Pakete in die Datei paket-liste geschrieben. Diese Liste kann man sich [...]]]></description>
			<content:encoded><![CDATA[	<p>Wer sich schon einmal gefragt hat, wie er eine Liste aller auf seinem Ubuntu- bzw. Kubuntu-System installierten Pakete erhalten kann, sollte sich mal das folgende kleine Kommando angucken:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo dpkg -l | grep ^ii | awk <span class="st0">'{print <span class="es0">$</span>2}'</span> &gt; paket-liste</pre>
	<p>Es wird eine Liste installierter Pakete in die Datei <code>paket-liste</code> geschrieben. Diese Liste kann man sich dann als Bettlektüre zu Gemüte führen (weniger empfehlenswert <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ) oder aber &#8211; und das ist das interessante &#8211; man kann diese Datei auf einen anderen Rechner übertragen und dann folgendes machen:</p>
	<pre class="codebash" style="font-size:9pt;">$ <span class="kw1">for</span> paket <span class="kw1">in</span> $<span class="br0">&#40;</span>cat paket-liste<span class="br0">&#41;</span>; <span class="kw1">do</span>
  <span class="kw3">echo</span> <span class="re1">$paket</span>;
  sudo apt-get install <span class="re1">$paket</span>;
<span class="kw1">done</span></pre>
	<p>Damit wird auf dem Zielsystem exakt die gleiche Paketauswahl installiert, die auf dem Ursprungssystem installiert war. Ich habe an dieser Stelle darauf verzichtet, Pakete auf dem Zielsystem zu entfernen, die auf dem Ursprungssystem <em>nicht</em> installiert waren &#8211; eventuell werden die auf dem Zielsystem aus anderen Gründen benötigt.</p>
	<p>Sollte diese Funktionalität aber benötigt werden, dürfte ein einfaches <em>diff</em> zwischen den Paketlisten beider Systeme zeigen, welche zusätzlichen Pakete auf dem Zielsystem installiert sind &#8211; und diese können dann entfernt werden.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/04/17/erzeugen-einer-liste-installierter-pakete-auf-einem-kubuntu-system/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>GPG-Keys automatisch in apt importieren</title>
		<link>http://node-0.mneisen.org/2007/04/16/gpg-keys-automatisch-in-apt-importieren/</link>
		<comments>http://node-0.mneisen.org/2007/04/16/gpg-keys-automatisch-in-apt-importieren/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 14:01:57 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Xubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=236</guid>
		<description><![CDATA[	Wer mit Ubuntu/Kubuntu/Xubuntu/... arbeitet, kommt um die Benutzung des manchmal etwas widerspenstigen apt in all seinen Varianten (apt-get, apt-cache, ...) nicht herum &#8211; es sei denn, man entscheidet sich für das oftmals nicht weniger kryptische aptitude.
	Ein nettes Feature von apt (und inzwischen eigentlich aller anderen package manager wie yast, portage, ...) ist, dass Pakete vor [...]]]></description>
			<content:encoded><![CDATA[	<p>Wer mit Ubuntu/Kubuntu/Xubuntu/... arbeitet, kommt um die Benutzung des manchmal etwas widerspenstigen apt in all seinen Varianten (apt-get, apt-cache, ...) nicht herum &#8211; es sei denn, man entscheidet sich für das oftmals nicht weniger kryptische aptitude.</p>
	<p>Ein nettes Feature von apt (und inzwischen eigentlich aller anderen <em>package manager</em> wie yast, portage, ...) ist, dass Pakete vor der Installation gegen einen oder mehrere kryptographische Hashes (meist MD5 und SHA1) getestet werden. Damit kann festgestellt werden, ob das Paket (möglicherweise mit finsteren Absichten) verändert wurde.</p>
	<p>Zusätzlich baut apt auf die Signatur von Paketen durch die <em>package maintainer</em>: Auch diese Signatur ist natürlich kryptographisch gesichert und stellt sicher, dass das von apt downgeloadete Paket in dem Zustand vorliegt, in dem der Maintainer es released hat.</p>
	<p>Und jetzt kommt der Knackpunkt bzw. die kleine Unbequemlichkeit: Damit eine solche Signatur überhaupt einen Wert hat, muss sie auch überprüft werden &#8211; und dazu benötigt man den <em>public key</em> des Signierenden, also im Falle von apt den <em>public key</em> des <em>package maintainers</em>, sonst gibt apt folgendes aus:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo apt-get update
Get:<span class="nu0">1</span> http://archive.canonical.com edgy-commercial Release.gpg
<span class="br0">&#91;</span>191B<span class="br0">&#93;</span>
Get:<span class="nu0">2</span> http://archive.czessi.net edgy Release.gpg <span class="br0">&#91;</span>481B<span class="br0">&#93;</span>
Hit http://archive.canonical.com edgy-commercial Release
Get:<span class="nu0">3</span> http://ubuntu.beryl-project.org edgy Release.gpg <span class="br0">&#91;</span>191B<span class="br0">&#93;</span>
Get:<span class="nu0">4</span> http://security.ubuntu.com edgy-security Release.gpg
<span class="br0">&#91;</span>191B<span class="br0">&#93;</span>
Get:<span class="nu0">5</span> http://mirror2.ubuntulinux.nl edgy-seveas Release.gpg
<span class="br0">&#91;</span>307B<span class="br0">&#93;</span>
<span class="br0">&#91;</span>...<span class="br0">&#93;</span>
W: GPG error: http://kubuntu.org edgy Release: The following
signatures couldn<span class="st0">'t be verified because the public key
is not available: NO_PUBKEY A506E6D4DD4D5088
W: GPG error: http://wine.budgetdedicated.com edgy
Release: The following signatures couldn'</span>t be verified
because the public key is not available: NO_PUBKEY
58403026387EE263
W: You may want to run apt-get update to correct these problems</pre>
	<p>Um diese lästige Meldung loszuwerden und gleichzeitig in den Genuss überprüfter Packages zu kommen, bietet sich das folgende kleine Skript an, dass die noch nicht importierten Keys (halb-)automatisch von einem Key-Server besorgt, in den lokalen GPG-Keyring und mittels apt-key auch nach apt importiert:</p>
	<pre class="codebash" style="font-size:9pt;"><span class="kw1">for</span> KEY <span class="kw1">in</span> <span class="st0">&quot;A506E6D4DD4D5088&quot;</span> <span class="st0">&quot;58403026387EE263&quot;</span>;
<span class="kw1">do</span>
  gpg --keyserver hkp://subkeys.pgp.net --recv-keys <span class="re1">$KEY</span>;
  gpg --<span class="kw3">export</span> --armor <span class="re1">$KEY</span> | sudo apt-key add -;
<span class="kw1">done</span></pre>
	<p>Bei diesem Skript müssen am Beginn der for-Schleife die IDs der noch fehlenden Keys eingetragen werden. Nach dem Start fragt das Skript einmal nach dem User-Passwort, um das sudo in der dritten Zeile ausführen zu können; die folgenden Aufrufe sollten sich in der Standard-Konfiguration von Ubuntu, Kubuntu, Xubuntu, ... nicht noch einmal nach dem Passwort erkundigen, da ein erfolgreicher sudo-Aufruf für einige Zeit gecachet wird.</p>
	<p>Wenn dieses Skript erfolgreich durchgelaufen ist, sollte es keine Probleme mit noch fehlenden Keys mehr geben &#8211; jedenfalls so lange nicht, bis man ein weiteres Repository zu seiner /etc/apt/sources.list hinzufügt.</p>
	<p><strong>Hausaufgabe für besonders Fleißige: <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </strong></p>
	<p>Wer schreibt mir ein schönes Skript für sed, awk oder grep, dass aus der Ausgabe von apt-get die IDs der noch fehlenden <em>public keys</em> extrahiert und diese dann automatisch in das obige Skript eingibt?</p>
	<p>Danke schon einmal &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/04/16/gpg-keys-automatisch-in-apt-importieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Techtip: Persistenz mit Hibernate</title>
		<link>http://node-0.mneisen.org/2007/04/04/techtip-persistenz-mit-hibernate/</link>
		<comments>http://node-0.mneisen.org/2007/04/04/techtip-persistenz-mit-hibernate/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 11:48:01 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=232</guid>
		<description><![CDATA[	Wer immer schon einmal wissen wollte, wie er seine (Java-) Applikation zwar mit Db-gestützter Persistenz ausstatten kann, sich dabei aber nicht auf ein RDBMS oder eine Handvoll davon festlegen muss, der sollte sich einmal die Kurzeinführung in Hibernate beim Net-Business-Blog ansehen.
	Guter Stoff &#8230;  

 ]]></description>
			<content:encoded><![CDATA[	<p>Wer immer schon einmal wissen wollte, wie er seine (Java-) Applikation zwar mit Db-gestützter Persistenz ausstatten kann, sich dabei aber nicht auf ein <acronym title="Relational Database Management System">RDBMS</acronym> oder eine Handvoll davon festlegen muss, der sollte sich einmal die <a href="http://blog.doubleslash.de/2007/03/27/speichern-egal-wohin-dank-hibernate/">Kurzeinführung in Hibernate beim Net-Business-Blog</a> ansehen.</p>
	<p>Guter Stoff &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/04/04/techtip-persistenz-mit-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eMail-Subjects in UTF-8 mit Ruby kodieren</title>
		<link>http://node-0.mneisen.org/2007/03/13/email-subjects-in-utf-8-mit-ruby-kodieren/</link>
		<comments>http://node-0.mneisen.org/2007/03/13/email-subjects-in-utf-8-mit-ruby-kodieren/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 11:32:06 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=222</guid>
		<description><![CDATA[	Falls mal jemand außer mir in die Verlegenheit kommt, aus einem Ruby-Skript heraus eMails zu generieren, die im Header auch Umlaute/Sonderzeichen enthalten, dann wird dieser jemand wohl auch recht bald feststellen, dass das gar nicht so einfach ist.
	Das erste Problem: Die entsprechenden RFC 822, 1652, 2821, etc. sind nämlich ein bisschen haarig zu lesen, außerdem [...]]]></description>
			<content:encoded><![CDATA[	<p>Falls mal jemand außer mir in die Verlegenheit kommt, aus einem Ruby-Skript heraus eMails zu generieren, die im Header auch Umlaute/Sonderzeichen enthalten, dann wird dieser jemand wohl auch recht bald feststellen, dass das gar nicht so einfach ist.</p>
	<p>Das erste Problem: Die entsprechenden <acronym title="Request for Comment">RFC</acronym> <a href="http://tools.ietf.org/html/rfc822">822</a>, <a href="http://tools.ietf.org/html/rfc1652">1652</a>, <a href="http://tools.ietf.org/html/rfc2821">2821</a>, etc. sind nämlich ein bisschen haarig zu lesen, außerdem gibt es so viele davon; nach meiner Zählung muss man sich bei der standard-konformen Implementierung von eMail-Funktionalität (sprich: <acronym title="Simple Mail Transfer Protocol">SMTP</acronym>) um mindestens 24 RFCs kümmern; wir sind ja nicht Microsoft und definieren unsere eigenen Standards &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p>Gut, worin liegt nun das eigentliche Problem? Kurz gefasst: eMail-Subjects sollen ausschließlich Zeichen des 7bit-<acronym title="American Standard Code for Information Interchange">ASCII</acronym> enthalten. Für den englisch-sprachigen Raum mag das angehen, für Europa, Südamerika und Asien hingegen reicht das bei weitem nicht.</p>
	<p>Also muss das Subjekt z.B. in einen UTF-8-Wrapper kodiert werden. Die Zeile<br />
<pre class="codebash" style="font-size:9pt;">Subject: Vielen Dank für die Blumen!</pre>
	<p>sieht korrekt kodiert dann so aus:<br />
<pre class="codebash" style="font-size:9pt;">Subject: =?utf<span class="nu0">-8</span>?b?<span class="re2">VmllbGVuIERhbmsgZsO8ciBkaWUgQmx1bWVuIQ=</span>=?=</pre>
	<p>Kann man gut lesen, oder?! <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p>Wer das ganze als bequeme Ruby-Methode haben möchte, darf sich an folgendem Code bedienen:<br />
<pre class="coderuby" style="font-size:9pt;"><span class="kw1">def</span> encodeSubject<span class="br0">&#40;</span>subject<span class="br0">&#41;</span>
    <span class="st0">&quot;=?utf-8?b?#{[subject].pack(&quot;</span>m<span class="st0">&quot;).delete(&quot;</span>\n<span class="st0">&quot;)}?=&quot;</span>
<span class="kw1">end</span></pre>
	<p>Solchen Code sollte man typischerweise großflächig mit Warnhinweisen kommentieren, dass nur derjenige, der ihn auch wirklich versteht, zu Änderungen befugt ist &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>


 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/03/13/email-subjects-in-utf-8-mit-ruby-kodieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beryl 0.1.9999.1 ist »broken« &#8211; Abhilfe</title>
		<link>http://node-0.mneisen.org/2007/02/03/beryl-0199991-ist-broken-abhilfe/</link>
		<comments>http://node-0.mneisen.org/2007/02/03/beryl-0199991-ist-broken-abhilfe/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 18:42:28 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Xubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=212</guid>
		<description><![CDATA[	Vorgestern habe ich voller Elan das Update von Beryl 0.1.99.2 auf 0.1.9999.1 installiert und wurde mit einem nicht mehr funktionierenden 3D-Desktop »belohnt«   .
	Mir ist das sogar gleich auf zwei Rechnern passiert, da Beryl auch nach dem Update zunächst noch funktioniert. Erst nach einen Reboot kommt es zu Problemen. Da hatte ich aber auch [...]]]></description>
			<content:encoded><![CDATA[	<p>Vorgestern habe ich voller Elan das Update von Beryl 0.1.99.2 auf 0.1.9999.1 installiert und wurde mit einem nicht mehr funktionierenden 3D-Desktop »belohnt« <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  .</p>
	<p>Mir ist das sogar gleich auf zwei Rechnern passiert, da Beryl auch nach dem Update zunächst noch funktioniert. Erst nach einen Reboot kommt es zu Problemen. Da hatte ich aber auch schon den zweiten Rechner upgedated. Prima, das spricht wieder einmal für ein ingenieursmäßig organisiertes Vorgehen meinerseits &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p>Zur Zeit scheint es aus dem <a href="http://www.beryl-project.org/">Beryl-Projekt</a> selbst keinerlei Bug-Fixes für dieses Problem zu geben. Im <acronym title="Internet Relay Chat">IRC</acronym> hört man auf dem Channel <code>#beryl</code> nur »same problem here«, auch den Entwicklern scheint der Faux-pas bekannt zu sein. Nur Abhilfe gibt es &#8211; auch heute, immerhin zwei Tage später &#8211; nicht. Das ist natürlich verständlich, schließlich arbeiten die Beryl-Entwickler in ihrer Freizeit an diesem wirklich innovativen 3D-Desktop. Für den Anwender ist es aber dennoch doof.</p>
	<p>In meinem Fall &#8211; ich arbeite mit Kubuntu 6.10 »Edgy Eft« &#8211; gibt es eine recht einfache Lösung: Einfach die alte Version 0.1.99.2 wieder installieren. Da es mitunter ein bisschen schwierig ist, an die alten *.deb-Files zu kommen, habe ich mal ein Paket für Ubuntu, Kubuntu und Xubuntu zusammengestellt, dass alle benötigten Pakete enthält:</p>
	<ul>
		<li><a href="http://node-0.mneisen.org/wp-content/uploads/2007/02/beryl-0.1.99.2.tar.bz2" title="ca. 4,8 MiB">beryl-0.1.99.2.tar.bz2</a>
	<p>In diesem Tarball ist ein Bash-Skript namens <code>install.sh</code> enthalten, das nach dem Download und Auspacken automatisch die alte Beryl-Version 0.1.99.2 installiert:</p>
	<pre class="codebash" style="font-size:9pt;">$ tar xfjv beryl<span class="nu0">-0.1</span><span class="nu0">.99</span><span class="nu0">.2</span>.tar.bz2
$ <span class="kw3">cd</span> beryl<span class="nu0">-0.1</span><span class="nu0">.99</span><span class="nu0">.2</span>
$ sudo ./install.sh</pre>
	<p>Einen Restart später sollte der 3D-Desktop dann wieder zu sehen sein.</p>
	<p>Auf die stabile Version 0.2 von Beryl bin ich schon einmal gespannt und hoffe, dass die dann auch problemlos unter {K,X}Ubuntu funktioniert &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>


 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/02/03/beryl-0199991-ist-broken-abhilfe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation von VirtualBox unter Kubuntu</title>
		<link>http://node-0.mneisen.org/2007/01/15/installation-von-virtualbox-unter-kubuntu/</link>
		<comments>http://node-0.mneisen.org/2007/01/15/installation-von-virtualbox-unter-kubuntu/#comments</comments>
		<pubDate>Mon, 15 Jan 2007 12:20:40 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=203</guid>
		<description><![CDATA[	Wer sich bei der Installation des heute unter der GPL freigegebenen Virtualisierungstools VirtualBox unter Kubuntu exakt an die Anleitung hält, bekommt ein Rechteproblem beim Start einer virtuellen Maschine. In diesem kurzen Tutorial möchte ich zeigen, wie man VirtualBox unter Kubuntu zum Laufen bekommt.
	Bitte das Update am Ende des Artikels beachten!
	Zunächst einmal besorgt man sich die [...]]]></description>
			<content:encoded><![CDATA[	<p>Wer sich bei der Installation des heute unter der <a href="http://www.gnu.org/licenses/gpl.html">GPL</a> <a href="http://www.golem.de/0701/49934.html">freigegebenen</a> Virtualisierungstools <a href="http://www.virtualbox.org/">VirtualBox</a> unter <a href="http://www.kubuntu.com/">Kubuntu</a> exakt an die Anleitung hält, bekommt ein Rechteproblem beim Start einer virtuellen Maschine. In diesem kurzen Tutorial möchte ich zeigen, wie man VirtualBox unter Kubuntu zum Laufen bekommt.</p>
	<p><strong>Bitte das Update am Ende des Artikels beachten!</strong></p>
	<p>Zunächst einmal besorgt man sich die aktuellste Version (1.3.2, Stand: 15.01.2007) der Virtualbox auf der <a href="http://www.virtualbox.org/wiki/Downloads">Downloadseite bei Innotek</a>. Diese wird auf der lokalen Platte (z.B. in /home/mein-account) gespeichert.</p>
	<p>Die Installation wird mit<br />
<pre class="codebash" style="font-size:9pt;">$ sudo dpkg -i VirtualBox_1<span class="nu0">.3</span>.2_Ubuntu_Edgy_x86.deb</pre>
	<p>durchgeführt. Wichtig ist der am Schluss der Installationsroutine angezeigte Hinweis, dass sich der Nutzer von VirtualBox in der neu angelegten Gruppe <code>vboxusers</code> befinden muss. Wir fügen also den aktuellen Benutzer (und alle weiteren, die mit VirtualBox arbeiten sollen) dieser neuen Gruppe hinzu:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo usermod --append --groups vboxusers mneisen</pre>
	<p><small><strong>Hinweis:</strong> <code>mneisen</code> bitte durch den eigenen Accountnamen ersetzen!</small></p>
	<p>Dann prüfen wir, ob das VirtualBox-Kernelmodul bereits geladen wurde und laden es ggf. mit <code>modprobe</code>:</p>
	<pre class="codebash" style="font-size:9pt;">$ lsmod | grep vboxdrv
$ sudo modprobe vboxdrv</pre>
	<p><small><strong>Hinweis:</strong> Die zweite Zeile ist nur notwendig, wenn die erste Zeile keinerlei Output erzeugte.</small></p>
	<p>Als letzter Schritt vor dem Start von VirtualBox muss noch ein kleiner Fehler der Installationsroutine(?) ausgemerzt werden: Der Zugriff auf das gerade geladene Kernelmodul führt noch zu Problemen mit den Rechteeinstellungen.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/01/virtualbox-error.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/01/_virtualbox-error.png" width="400" height="225" alt="Rechteprobleme bei einer Standardinstallation von Virtualbox unter Kubuntu führen zu einem Fehler beim Start einer virtuellen Maschine" title="Rechteprobleme bei einer Standardinstallation von Virtualbox unter Kubuntu führen zu einem Fehler beim Start einer virtuellen Maschine"  /></a></p>
	<p>Dies beheben wir mit einer beherzten Änderung der Rechtebits von <code>/dev/vboxdrv</code>:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo chmod <span class="nu0">777</span> /dev/vboxdrv</pre>
	<p>Nun kann die VirtualBox von der Kommandozeile gestartet werden:</p>
	<pre class="codebash" style="font-size:9pt;">$ VirtualBox</pre>
	<p>Natürlich ist es ebenso möglich, sich einen entsprechenden Eintrag im K-Menu zu erstellen oder ein Icon auf den Desktop zu legen. Wie auch immer man VirtualBox startet, man bekommt (hoffentlich!) dieses Administrationspanel zu sehen:</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2007/01/virtualbox-admin.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2007/01/_virtualbox-admin.png" width="400" height="298" alt="Administrationsüberfläche von VirtualBox" title="Administrationsüberfläche von VirtualBox"  /></a></p>
	<p>Viel Spaß mit VirtualBox!</p>
	<p><strong>Update</strong></p>
	<p>Nach einer Diskussion auf #vbox (dem IRC-Channel der VirtualBox-Entwickler) hat sich herausgestellt, dass es sich bei dem beschriebenen Rechteproblem wohl am ehesten um ein Linux- bzw. (K)Ubuntu-Problem handelt. Zwar hatten auch andere User die beschriebenen Probleme, allerdings stellte sich heraus, dass Kubuntu das Hinzufügen eines Nutzers zu einer Gruppe weder in neu gestarteten Shells noch nach einem Neustart der KDE-Session beherzigt.</p>
	<p><strong>Erst ein kompletter Neustart hat die beschriebenen Probleme beseitigt.</strong></p>
	<p>Daher empfehle ich (K)Ubuntu-Nutzern nach der Installation der VirtualBox einen Neustart ihres Systems durchzuführen.</p>


 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2007/01/15/installation-von-virtualbox-unter-kubuntu/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>ZFS unter Ubuntu/Kubuntu 6.10 (»Edgy Eft«)</title>
		<link>http://node-0.mneisen.org/2006/12/31/zfs-unter-ubuntu-kubuntu-610-edgy-eft/</link>
		<comments>http://node-0.mneisen.org/2006/12/31/zfs-unter-ubuntu-kubuntu-610-edgy-eft/#comments</comments>
		<pubDate>Sun, 31 Dec 2006 16:55:08 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=190</guid>
		<description><![CDATA[	Sun Microsystems hat der OpenSource Community ein neues Power-Tool geschenkt: Das Zettabyte Filesystem, kurz ZFS genannt. Dieses Filesystem räumt mit der gängigen Zuordnung »eine Partition &#8211; ein Dateisystem« gründlich auf und abstrahiert die Filesystem-Ebene komplett von der darunterliegenden Speicherinfrastruktur. Wer mehr zu den Grundlagen von ZFS lesen möchte, kann dies hier tun.
	Zunächst war ZFS lediglich [...]]]></description>
			<content:encoded><![CDATA[	<p>Sun Microsystems hat der OpenSource Community ein neues Power-Tool geschenkt: Das Zettabyte Filesystem, kurz ZFS genannt. Dieses Filesystem räumt mit der gängigen Zuordnung »eine Partition &#8211; ein Dateisystem« gründlich auf und abstrahiert die Filesystem-Ebene komplett von der darunterliegenden Speicherinfrastruktur. Wer mehr zu den Grundlagen von ZFS lesen möchte, kann dies <a href="http://www.opensolaris.org/os/community/zfs/">hier</a> tun.</p>
	<p>Zunächst war ZFS <a href="http://www.golem.de/0605/45049.html">lediglich für Suns Betriebssystem Solaris</a> verfügbar. Inzwischen laufen Portierungsprojekte auf <a href="http://www.golem.de/0611/49031.html">verschiedene BSD-Derivate</a>, <a href="http://www.golem.de/0612/49546.html">MacOS</a> und <a href="http://www.golem.de/0612/49628.html">Linux</a>. Gerade die Linux-Variante ist wohl für viele Anwender interessant. Diese wird von Ricardo Correira implementiert und baut auf <acronym title="File System in USErland">FUSE</acronym> auf, da die Integration der unter Suns <acronym title="Common Development and Distribution License">CDDL</acronym> freigegebenen Sourcen in den unter der <acronym title="GNU Public License">GPL</acronym> stehenden Linux-Kernel aus lizenzrechtlichen Gründen problematisch ist.</p>
	<p>In diesem Blogpost möchte ich kurz beschreiben, wie man ZFS unter einem aktuellen Kubuntu 6.10 (»Edgy Eft«) kompiliert und zum Laufen bringt.</p>
	<p><strong>The shoulders of Giants</strong></p>
	<p>Auch andere haben sich natürlich schon dieses Themas angenommen, darunter <a href="http://mtrr.org/blog/?p=84">Machine Check Exception</a> und <a href="http://www.csamuel.org/2006/12/30/zfs-on-linux-works/">Chris Samuel</a>.</p>
	<h4>Source Code besorgen</h4>
	<p>Es gibt grundsätzlich zwei Möglichkeiten, sich den Source-Code zu besorgen: per Download oder über das Mercurial-Repository von<br />
Ricardo Correia. Letztere Möglichkeit ist insbesondere für Anwender/Entwickler, die immer auf dem letzten Stand sein wollen &#8211; birgt aber auch die Gefahr, dass der Code nicht gar so <em>rock stable</em> ist wie eine releaste Version.</p>
	<p>Die letzte releaste Version 0.4.0_alpha1 (Stand: 31.12.2006) kann unter</p>
	<p style="text-align:center;"><a href="https://developer.berlios.de/project/showfiles.php?group_id=6836">https://developer.berlios.de/project/showfiles.php?group_id=6836</a></p>
	<p>bezogen werden.</p>
	<p>Das von dort heruntergeladene Source-Code-Archiv wird dann per<br />
<pre class="codebash" style="font-size:9pt;">$ tar xfj zfs-fuse<span class="nu0">-0.4</span>.0_alpha1.tar.bz2</pre>
	<p>entpackt.</p>
	<p>Die Abenteurer unter uns können sich Mercurial installieren (falls nicht ohnehin schon vorhanden) und sich dann den Source Code direkt aus Ricardos Repository ziehen. Die erste der beiden Codezeilen checkt die letzte releaste Version aus der Serie 0.4 aus, die zweite besorgt die <em>cutting edge</em> Version (Hinweis: <em>use at your own risk</em>):<br />
<pre class="codebash" style="font-size:9pt;">$ hg clone http://www.wizy.org/mercurial/zfs-fuse/<span class="nu0">0.4</span>.x
$ hg clone http://www.wizy.org/mercurial/zfs-fuse/trunk</pre>
	<h4>Dependencies installieren</h4>
	<p>Damit sich ZFS unter Ubuntu/Kubuntu kompilieren und installieren lässt, müssen wir uns zunächst eine Build-Umgebung schaffen und die Dependencies (die Sourcen von FUSE) installieren:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo apt-get install build-essential scons
$ sudo apt-get install libfuse-dev</pre>
	<h4>MAKE</h4>
	<p>Wir wechseln nun in das Verzeichnis mit den Sourcen. Der genaue Pfad hängt davon ab, welche der oben vorgestellten Möglichkeiten zur Beschaffung des Source Codes gewählt wurde:<br />
<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> zfs-fuse<span class="nu0">-0.4</span>.0_alpha1/src <span class="co1"># nach Download</span>
$ <span class="kw3">cd</span> <span class="nu0">0.4</span>.x/src <span class="co1"># Mercurial-Checkout aktuelle Serie</span>
$ <span class="kw3">cd</span> trunk/src <span class="co1"># für Wagemutige</span></pre>
	<p>Der Build der Sourcen wird über ein im Source-Paket enthaltenes Skript für <a href="http://www.scons.org/">scons</a> gesteuert. Für uns bedeutet das, dass wir es nun sehr einfach haben:<br />
<pre class="codebash" style="font-size:9pt;">$ scons</pre>
	<h4>Installation</h4>
	<p>Die Installation ist ebenfalls extrem einfach gehalten und wird auch über <code>scons</code> gesteuert:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo scons install</pre>
	<p>Fertig! <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<h4>Arbeiten mit ZFS</h4>
	<p>Hier möchte ich nun keine komplette Übersicht über die Möglichkeiten von ZFS bieten &#8211; dazu gibt es (vielleicht) mal einen weiteren Artikel. Interessant wäre aber schon, ob das gerade übersetzte und installierte ZFS überhaupt funktioniert &#8230;</p>
	<p>Damit wir mit ZFS unter Linux arbeiten können, müssen wir zunächst den ZFS-Daemon starten. Ein Skript dafür ist in den Sourcen im Verzeichnis <code>src/zfs-fuse</code> enthalten:<br />
<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> src/zfs-fuse; ./run.sh</pre>
	<p>Wir benötigen nun noch mindestens ein, möglichst aber mehrere Block-Devices, um die Möglichkeiten von ZFS zu demonstrieren. In meinem Fall habe ich unter <acronym title="Enterprise Volume Management System">EVMS</acronym> einfach zwei neue Devices <code>/dev/evms/zfs0</code> und <code>/dev/evms/zfs1</code> auf verschiedenen Festplatten angelegt. Man kann aber auch Dateien als Pseudo-Blockdevices verwenden.<br />
<pre class="codebash" style="font-size:9pt;">$ dd <span class="re2">if=</span>/dev/zero <span class="re2">of=</span>~/zfs0 <span class="re2">bs=</span>1M <span class="re2">count=</span><span class="nu0">1024</span>
<span class="nu0">1024</span><span class="nu0">+0</span> records <span class="kw1">in</span>
<span class="nu0">1024</span><span class="nu0">+0</span> records out
<span class="nu0">1073741824</span> bytes <span class="br0">&#40;</span><span class="nu0">1.1</span> GB<span class="br0">&#41;</span> copied, <span class="nu0">22.3667</span> seconds, <span class="nu0">48.0</span> MB/s
$ dd <span class="re2">if=</span>/dev/zero <span class="re2">of=</span>~/zfs1 <span class="re2">bs=</span>1M <span class="re2">count=</span><span class="nu0">512</span>
<span class="nu0">512</span><span class="nu0">+0</span> records <span class="kw1">in</span>
<span class="nu0">512</span><span class="nu0">+0</span> records out
<span class="nu0">536870912</span> bytes <span class="br0">&#40;</span><span class="nu0">537</span> MB<span class="br0">&#41;</span> copied, <span class="nu0">1.42299</span> seconds, <span class="nu0">377</span> MB/s
$ dd <span class="re2">if=</span>/dev/zero <span class="re2">of=</span>~/zfs2 <span class="re2">bs=</span>1M <span class="re2">count=</span><span class="nu0">1536</span>
<span class="nu0">1536</span><span class="nu0">+0</span> records <span class="kw1">in</span>
<span class="nu0">1536</span><span class="nu0">+0</span> records out
<span class="nu0">1610612736</span> bytes <span class="br0">&#40;</span><span class="nu0">1.6</span> GB<span class="br0">&#41;</span> copied, <span class="nu0">21.063</span> seconds, <span class="nu0">76.5</span> MB/s</pre>
	<p>Dies legt null-gefüllte Dateien <code>zfs{0|1|2}</code> mit einer Größe von 1G, 0.5G und 1.5G im Heimatverzeichnis des aktuellen Benutzers an.</p>
	<p>Der <em>ZFS Pool</em> kann dann mit<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zpool create <span class="kw3">test</span> ~/zfs0</pre>
	<p>angelegt werden. Wir können nun mit ZFS-Tools ein paar Informationen über den soeben angelegten ZPool sammeln:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
<span class="kw3">test</span>                   1016M     88K   1016M     <span class="nu0">0</span>%  ONLINE     -
$ sudo zpool status <span class="kw3">test</span>
  pool: <span class="kw3">test</span>
 state: ONLINE
 scrub: none requested
config:
&nbsp;
        NAME                  STATE     READ WRITE CKSUM
        <span class="kw3">test</span>                  ONLINE       <span class="nu0">0</span>     <span class="nu0">0</span>     <span class="nu0">0</span>
          /home/mneisen/zfs0  ONLINE       <span class="nu0">0</span>     <span class="nu0">0</span>     <span class="nu0">0</span>
&nbsp;
errors: No known data errors</pre>
	<p>Super: Noch keine Fehler &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p>Zeit für das erste Dateisystem; Dateisysteme in ZFS sind hierarchisch, d.h., Dateisysteme können ihrerseits wiederum Dateisysteme enthalten. Properties (wie etwa Quotas, Kompression, Reservierung, ...) werden dabei von oben nach unten vererbt.<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs create <span class="kw3">test</span>/users
$ sudo zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
<span class="kw3">test</span>         114K   984M  <span class="nu0">25</span>.5K  /<span class="kw3">test</span>
<span class="kw3">test</span>/users  <span class="nu0">24</span>.5K   984M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users</pre>
	<p>Dann wollen mit mal ein paar Dateisysteme für unsere beiden Benutzer Alice und Bob anlegen:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs create <span class="kw3">test</span>/users/alice
$ sudo zfs create <span class="kw3">test</span>/users/bob
$ sudo zfs list
NAME               USED  AVAIL  REFER  MOUNTPOINT
<span class="kw3">test</span>               178K   984M  <span class="nu0">25</span>.5K  /<span class="kw3">test</span>
<span class="kw3">test</span>/users        <span class="nu0">76</span>.5K   984M  <span class="nu0">27</span>.5K  /<span class="kw3">test</span>/users
<span class="kw3">test</span>/users/alice  <span class="nu0">24</span>.5K   984M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/alice
<span class="kw3">test</span>/users/bob    <span class="nu0">24</span>.5K   984M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/bob</pre>
	<p>Alice und Bob sollen jeweils maximal 1G Speicher verbrauchen können.<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs <span class="kw3">set</span> <span class="re2">quota=</span>1G <span class="kw3">test</span>/users/alice
$ sudo zfs <span class="kw3">set</span> <span class="re2">quota=</span>1G <span class="kw3">test</span>/users/bob</pre>
	<p>Zusammen sollen Alice und Bob maximal 1.5G Platz in unserem ZPool belegen.<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs <span class="kw3">set</span> <span class="re2">quota=</span>1536M <span class="kw3">test</span>/users</pre>
	<p>Für Bob sollen allerdings mindestens 640M reserviert werden.<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs <span class="kw3">set</span> <span class="re2">reservation=</span>640M <span class="kw3">test</span>/users/bob
$ sudo zfs list
NAME               USED  AVAIL  REFER  MOUNTPOINT
<span class="kw3">test</span>               640M   344M  <span class="nu0">25</span>.5K  /<span class="kw3">test</span>
<span class="kw3">test</span>/users         640M   344M  <span class="nu0">27</span>.5K  /<span class="kw3">test</span>/users
<span class="kw3">test</span>/users/alice  <span class="nu0">24</span>.5K   344M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/alice
<span class="kw3">test</span>/users/bob    <span class="nu0">24</span>.5K   984M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/bob</pre>
	<p>Oops, was ist denn jetzt passiert? Alice kann nur noch 344M belegen? Ja. Das sind die Auswirkungen der Reservierung von 640M Platz für Bob. Damit dieser <em>garantiert</em> 640M belegen kann, müssen andere Nutzer in ihrem Platzbedarf eingeschränkt werden. Das ist ein wirklich schönes Feature von ZFS, dass es so zwar auch in anderen Dateisystemen oder Add-On-Produkten gibt. Hier ist aber Kernbestandteil des Dateisystems und kann auch auf ganze Teilbäume im hierarchischen Baum der Dateisysteme in ZFS angewendet werden. Mit<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs <span class="kw3">set</span> <span class="re2">reservation=</span><span class="nu0">1</span>.5G <span class="kw3">test</span>/users
cannot <span class="kw3">set</span> property <span class="kw1">for</span> <span class="st0">'test/users'</span>: size is greater than available space</pre>
	<p>kann z.B. festgelegt werden, dass für die Benutzer mindestes 1.5G Platz zur Verfügung steht &#8211; wäre da nicht die ominöse Fehlermeldung, die uns darauf aufmerksam macht, dass für eine solche Reservierung nicht mehr genügend Speicherplatz in unserem Pool zur Verfügung steht. Da wir aber noch zwei weitere Devices (<code>zfs1</code> und <code>zfs2</code>, unsere Pseudo-Blockdevices in normalen Files) zur Verfügung haben, können wir diese zu unserem ZPool hinzufügen und damit Platz schaffen:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zpool add <span class="kw3">test</span> ~/zfs1
$ sudo zpool add <span class="kw3">test</span> ~/zfs2
$ sudo zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
<span class="kw3">test</span>                   <span class="nu0">2</span>.98G    194K   <span class="nu0">2</span>.98G     <span class="nu0">0</span>%  ONLINE     -</pre>
	<p>Nun können wir auch die Reservierung von 1.5G Platz für die Gesamtheit aller Dateisysteme unter <code>test/users</code> durchsetzen:<br />
<pre class="codebash" style="font-size:9pt;">$ sudo zfs <span class="kw3">set</span> <span class="re2">reservation=</span><span class="nu0">1</span>.5G <span class="kw3">test</span>/users
$ sudo zfs list
NAME               USED  AVAIL  REFER  MOUNTPOINT
<span class="kw3">test</span>              <span class="nu0">1</span>.50G  <span class="nu0">1</span>.43G  <span class="nu0">25</span>.5K  /<span class="kw3">test</span>
<span class="kw3">test</span>/users         640M   896M  <span class="nu0">27</span>.5K  /<span class="kw3">test</span>/users
<span class="kw3">test</span>/users/alice  <span class="nu0">24</span>.5K   896M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/alice
<span class="kw3">test</span>/users/bob    <span class="nu0">24</span>.5K  1024M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/bob
&nbsp;</pre>
	<p>Voìla! Wie man sieht, hat Bob nun maximal 1G zur Verfügung. Da er 640M fest zugesichert bekommt und für die Dateisysteme unter <code>test/users</code> maximal 1.5G eingeplant sind, bleiben für Alice 896M übrig. Sie wird Ihre maximal zugewiesenen 1G also nicht nutzen können &#8211; außer wir verändern die Obergrenze auf <code>test/users</code>. In unserem ZPool <code>test</code> haben wir insgesamt rund 3G Platz &#8211; 1.5G davon sind inzwischen aber verbraucht, da wir den Nutzern soviel Speicherplatz fest zugesagt haben.</p>
	<p>Damit Alice, die keine 1G Platz beanspruchen kann, aber dennoch viel in ihrem Verzeichnis unterbringt, schalten wir (nur für ihren Verzeichnisbaum) Kompression an:<br />
<pre class="codebash" style="font-size:9pt;">&nbsp;
$ zfs <span class="kw3">set</span> <span class="re2">compression=</span>on <span class="kw3">test</span>/users/alice</pre>
	<p>Dies komprimiert alle neu hinzukommenden Daten in Alice&#8217; Verzeichnis, vollkommen transparent für den Anwender. Wir testen die Auswirkungen:<br />
<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> ~; wget http://www2.kernel.org/pub/linux/kernel/v2<span class="nu0">.6</span>/linux<span class="nu0">-2.6</span><span class="nu0">.19</span><span class="nu0">.1</span>.tar.bz2
$ tar xj ~/linux<span class="nu0">-2.6</span><span class="nu0">.19</span><span class="nu0">.1</span>.tar.bz2
$ du -sh linux<span class="nu0">-2.6</span><span class="nu0">.19</span><span class="nu0">.1</span>
269M    linux<span class="nu0">-2.6</span><span class="nu0">.19</span><span class="nu0">.1</span>
$ sudo rsync -aS ~/linux<span class="nu0">-2.6</span><span class="nu0">.19</span><span class="nu0">.1</span> /<span class="kw3">test</span>/users/alice
<span class="br0">&#91;</span>...<span class="br0">&#93;</span>
sent <span class="nu0">230975825</span> bytes  received <span class="nu0">468146</span> bytes  <span class="nu0">1624168.22</span> bytes/sec
total size is <span class="nu0">229629549</span>  speedup is <span class="nu0">0.99</span>
$ sudo zfs list
NAME               USED  AVAIL  REFER  MOUNTPOINT
<span class="kw3">test</span>              <span class="nu0">1</span>.50G  <span class="nu0">1</span>.43G  <span class="nu0">25</span>.5K  /<span class="kw3">test</span>
<span class="kw3">test</span>/users         775M   761M  <span class="nu0">27</span>.5K  /<span class="kw3">test</span>/users
<span class="kw3">test</span>/users/alice   135M   761M   135M  /<span class="kw3">test</span>/users/alice
<span class="kw3">test</span>/users/bob    <span class="nu0">24</span>.5K  1024M  <span class="nu0">24</span>.5K  /<span class="kw3">test</span>/users/bob
&nbsp;</pre>
	<p>Obwohl die Sourcen des Linux Kernel 2.6.19.1 etwa 269M umfassen, belegen sie in Alice&#8217; komprimiertem Verzeichnis lediglich 135M. Wenn Alice also hauptsächlich mit gut komprimierbaren Daten arbeitet (Source Code, LaTeX-Dokumente, XML-Dateien, ...), dann wird sie aller Voraussicht nach sogar <em>mehr</em> als 1G Daten in ihrem Verzeichnis unterbringen können.</p>
	<h3>Fazit</h3>
	<p>Die ZFS-Portierung von Solaris nach Linux&#38;FUSE ist zwar noch nicht ganz abgeschlossen, es wird auch auf die noch fehlende Optimierung und potentielle Bugs hingewiesen. In meinen Tests bin ich allerdings noch auf keinen solchen Fehler gestoßen, die Performance ist (wenn tatsächlich Disks und keine Dateien auf einem anderen Dateisystem) schon recht ordentlich. Für Systemadministratoren ist ZFS das Ende vieler Konfigurations-Alpträume und sollte Alternativen wie LVM und EVMS starke Konkurrenz machen.</p>
	<p>Selbst professionelle, kommerzielle Lösungen können typischerweise auch nicht mehr als ZFS (z.B. Snapshots, Clones, ...). Wenn ich wetten müsste, welcher Volume Manager in 5 Jahren den Markt aufgerollt hat, würde ich auf ZFS tippen.</p>
	<p>Für die kommende Zeit plane ich ein paar Performance-Messungen, über die ich dann hier berichten werde. Eventuell schreibe ich auch noch ein kleines Tutorial &#8211; mal sehen, wieviel Zeit ich haben werde &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>


 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/12/31/zfs-unter-ubuntu-kubuntu-610-edgy-eft/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Kubuntu: Upgrade von Dapper Drake auf Edgy Eft</title>
		<link>http://node-0.mneisen.org/2006/11/25/kubuntu-upgrade-von-dapper-drake-auf-edgy-eft/</link>
		<comments>http://node-0.mneisen.org/2006/11/25/kubuntu-upgrade-von-dapper-drake-auf-edgy-eft/#comments</comments>
		<pubDate>Sat, 25 Nov 2006 17:25:16 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=180</guid>
		<description><![CDATA[	
Hinweis: Einen Visual Guide für das Upgrade von Kubuntu 6.10 »Edgy Eft« nach Kubuntu 7.04 »Feisty Fawn« gibt es hier .

	Nachdem ich schon verschiedentlich gelesen hatte (z.B. bei Ende der Vernunft), dass das Upgrade von (K)Ubuntu 6.06 LTS (Codename: »Dapper Drake«) auf die Version 6.10 (»Edgy Eft«) zwar nicht direkt schwierig ist, aber doch ihre [...]]]></description>
			<content:encoded><![CDATA[	<p><small><br />
<strong>Hinweis:</strong> Einen Visual Guide für das Upgrade von Kubuntu 6.10 »Edgy Eft« nach Kubuntu 7.04 »Feisty Fawn« gibt es <a href="http://node-0.mneisen.org/2007/05/02/kubuntu-upgrade-von-edgy-eft-nach-feisty-fawn-visual-guide/">hier</a> .<br />
</small></p>
	<p>Nachdem ich schon verschiedentlich gelesen hatte (z.B. bei <a href="http://www.ende-der-vernunft.org/2006/10/27/kubuntu-610-edgy-eft-ein-kleiner-schritt/">Ende der Vernunft</a>), dass das Upgrade von (K)Ubuntu 6.06 LTS (Codename: »Dapper Drake«) auf die Version 6.10 (»Edgy Eft«) zwar nicht direkt schwierig ist, aber doch ihre Tücken aufweist, habe ich (in mir unbekannter Geduld) erst einmal ein bisschen abgewartet, bis ich auch diesen Schritt wage. Jetzt ist es soweit: Mein Rechner am Arbeitsplatz ist schon upgedated (mit nur wenigen Problemchen), jetzt gerade läuft das Upgrade meines Laptops. Mein PC im Arbeitszimmer folgt dann irgendwann.</p>
	<h4>Motivation</h4>
	<p>Warum upgraden, wenn alles gerade so schän läuft? Nun, wenn ich meine Rechner als reine Büromaschinen einsetzen würde, also nur für Openoffice, Kontact (eMail, Adressen, Kalendar), Web-Browsing und vielleicht ein bisschen Multimedia (MP3, Digikam, ...) &#8211; dann hätte ich mir das auch noch einmal überlegt. Solche »normalen« Anwender müssen sicherlich noch nicht updaten.</p>
	<p>Wenn man allerdings auf den Maschinen entwickelt, dann hat man schon ganz gerne etwas frischere Software am Start. Insbesondere finde ich das Upgrade auf Mozilla Firefox 2.0 und endlich eine etwas modernere Variante von Subversion ganz hilfreich &#8211; obwohl Subversion 1.3.2 auch nicht wirklich »aktuell« genannt werden kann, da gibt es schon die Version 1.4.2 (Stand: 25.11.2006).</p>
	<p>Die Empfehlung ist also ganz klar und sieht so aus, wie es bei Software-Updates immer ist: Wenn alles so läuft, wie man das möchte, wenn man keine weiteren Features oder neuere Programmversionen benötigt und für die aktuelle Serie auch noch Sicherheitsupdates herausgegeben werden (bei 6.06 LTS &#8211; »Long Term Support« &#8211; ist das noch einige Jahre so), dann sollte man auch nicht updaten. Sonst schon.</p>
	<h4>Ablauf des Updates</h4>
	<p>Auf den Seiten bei <a href="http://kubuntu.org/announcements/6.10-release.php">Kubuntu</a> ist die Prozedur für das Upgrade eigentlich sehr gut erklärt. Zunächst sollte man in seinen apt-Sources alle Vorkommen von »dapper« durch »edgy« ersetzen:</p>
	<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> /etc/apt
$ sudo sed -ibkp -e <span class="st0">'s/dapper/edgy/g'</span> sources.list</pre>
	<p>Danach holt man sich dann per</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo apt-get update</pre>
	<p>die neuen Paket-Beschreibungen aus den Repositories und startet das Upgrade mittels</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo apt-get dist-upgrade</pre>
	<p>Das kann jetzt ein bisschen dauern: In meinem Fall mussten ca. 1,4 GByte Pakete heruntergeladen werden, was auch bei DSL 2000 etwa 1,5 h in Anspruch nahm (macht nix, ich wollte eh zum Friseur <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ).</p>
	<p>Während des Upgrade kann es verschiedentlich zu kleinen Problemchen kommen. Darunter ist aber nichts, was sich nicht mir einem beherzten</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo dpkg --configure -a</pre>
	<p>beheben ließe. Im Extremfall muss man ein Paket temporär entfernen und kann es erst wieder nach dem Upgrade installieren. Ein solcher Fall war auf meinem Laptop <code>courier-authlib</code> und verwandte Pakete. Da ich die aber ohnehin nur zum Ausprobieren einiger Details installiert hatte, flogen die gleich ganz runter und werden vorerst auch nicht mehr installiert.</p>
	<p><strong>Hinweis:</strong> <em>Die Sache mit</em> <code>courier-authlib</code> <em>ist im Übrigen ein »known bug«, für den es ein ziemlich übles <a href="https://launchpad.net/distros/ubuntu/+source/courier-authlib/+bug/64615">Workaround</a> gibt.</em></p>
	<p><em>Der Trick ist besteht dabei tatsächlich darin, das Paket zu de-installieren (die Abhängigkeiten haben sich in »Edgy Eft« geändert). Die De-Installation ist allerdings mit ein bisschen Gewalt verbunden:</em></p>
	<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> /var/run
$ sudo rm -rf courier
$ sudo dpkg --force-remove-reinstreq -P courier-authdaemon</pre>
	<p><em>Danach geht es dann weiter mit</em></p>
	<pre class="codebash" style="font-size:9pt;">$ sudo dpkg --configure -a
$ sudo apt-get dist-upgrade</pre>
	<p><em>Hässlich, aber wirkungsvoll &#8230;</em> <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p>Bei einigen Paketen fragt apt auch nach, wie sie konfiguriert werden sollen. Da ist dann jeder sich selbst bzw. jedem sein Geschmack überlassen, ob man die neuen »plain-vanilla« config-Files aus dem Upgrade übernimmt und dann nachher anhand der <em>vorher gesicherten</em> alten config-Files anpasst, oder ob man einfach die alten config-Files behält, mit dem Risiko, dass da dann auch nicht alles passt. Ich persönlich wähle da immer die erste Alternative.</p>
	<p>Ein letzter Schritt ist dann noch notwendig, um das Upgrade abzuschließen:</p>
	<pre class="codebash" style="font-size:9pt;">$ sudo apt-get install kubuntu-desktop python-qt3 \
    python-kde3 ubuntu-minimal</pre>
	<p>Nach einem kurzen (hoffentlich) Reboot befindet man sich dann in einem Kubuntu 6.10 »Edgy Eft«.</p>
	<p><a href="http://node-0.mneisen.org/wp-content/uploads/2006/11/desktop-nach-edgy-upgrade.png"><img class="centered" src="http://node-0.mneisen.org/wp-content/uploads/2006/11/_desktop-nach-edgy-upgrade.png" width="400" height="300" alt="" title=""  /></a></p>
	<p>(OK, der Desktop sieht jetzt irgendwie genau so aus wie vorher auch: Zum einen werden die nutzer-individuellen Einstellungen wie z.B. Wallpaper etc. übernommen, zum anderen hatte ich auch vorher schon KDE 3.5.5. Einziger Hint: Die Fenster-Deokrationen wurden auf »Lipstick« upgedated, vorher war es »Plastik«.)</p>
	<h4>Fazit</h4>
	<p>Das Upgrade ist nicht schwierig durchzuführen und dürfte auch dem Laien bei Befolgen der &#8220;Anleitung auf Kubuntu.com&#8221;: recht mühelos gelingen. Für <del>Angsthasen</del> Vorsichtige (so wie ich es einer bin) empfiehlt sich eventuell, vorher ein komplettes Backup des Rechners, zumindest aber der System-Partition anzulegen.</p>
	<p>Nach dem Update hat man ein Kubuntu-System mit frischen Paketen, darunter KDE 3.5.5, OpenOffice 2, Mozilla Firefox 2, ...</p>
	<p>Warum allerdings Kubuntu kein <a href="https://wiki.ubuntu.com/EdgyReleaseNotes#head-b07f8bdf28ae0444c03e1a61110c683c77e56cd0">Update-Tool wie Ubuntu</a> hat &#8211; diese Frage stelle ich mir immer wieder &#8230;</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/11/25/kubuntu-upgrade-von-dapper-drake-auf-edgy-eft/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Gentoo und MySQL: A never-ending story</title>
		<link>http://node-0.mneisen.org/2006/10/25/gentoo-und-mysql-a-never-ending-story/</link>
		<comments>http://node-0.mneisen.org/2006/10/25/gentoo-und-mysql-a-never-ending-story/#comments</comments>
		<pubDate>Wed, 25 Oct 2006 16:53:19 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=166</guid>
		<description><![CDATA[	Bereits im April gab es Probleme mit einem MySQL-Upgrade, nun gibt es einen weiteren Fall, in dem die Maintainer für MySQL bei Gentoo offensichtlich etwas zu schnell geschossen haben.
	Historie oder: Was im April geschah
	Nach der Aktualisierung von MySQL 4.1.14 auf die Version 4.1.14-r1 (und einer nicht angekündigten und schlecht kommunizierten Änderung des Standard-Encodings von latin1 [...]]]></description>
			<content:encoded><![CDATA[	<p><img class="alignright" src="http://node-0.mneisen.org/wp-content/stock/_gentoo-logo-white-background.png" width="114" height="120" alt="" title="" />Bereits im April gab es <a href="http://node-0.mneisen.org/2006/04/25/gentoo-php-mysql-updates-machen-probleme/">Probleme mit einem MySQL-Upgrade</a>, nun gibt es einen weiteren Fall, in dem die Maintainer für <a href="http://www.mysql.org/">MySQL</a> bei <a href="http://www.gentoo.org/">Gentoo</a> offensichtlich etwas zu schnell geschossen haben.</p>
	<h4>Historie oder: Was im April geschah</h4>
	<p>Nach der Aktualisierung von MySQL 4.1.14 auf die Version 4.1.14-r1 (und einer nicht angekündigten und schlecht kommunizierten Änderung des Standard-Encodings von <code>latin1</code> auf <code>utf8</code>) funktionierten viele PHP-basierte Anwendungen entweder nicht mehr oder aber stellten Umlaute und andere Sonderzeichen falsch dar.</p>
	<p>Dies ließ sich relativ schmerzlos durch einen kleinen Patch an den betroffenen Applikationen beheben (siehe den <a href="http://node-0.mneisen.org/2006/04/25/gentoo-php-mysql-updates-machen-probleme/">damaligen Blogpost</a>). <del>Schlauere</del> Misstrauischere Zeitgenossen hatten auch noch eine andere Möglichkeit, wenn sie denn ein Backup ihrer Daten hatten: Einen DB-Dump mit dem <em>alten</em> MySQL in <em>neuer</em> Kodierung erstellen, dann MySQL stoppen, MySQL upgraden, dann ein Reload der Datenbank aus dem Dump mit <em>neuer</em> Kodierung.</p>
	<p>Ich aber hatte das Pech, dass ich ein &#8220;Bindestrich-Update&#8221; (schließlich änderte sich nur die Gentoo-interne Revisionnummer) unterschätzt und für sicher gehalten habe &#8211; zumal die neue Version als <em>stabil</em> gekennzeichnet worden war. Wie so ein massiver Fehler den Maintainern bei Gentoo unterlaufen konnte, kann ich mir bis heute nicht erklären; so etwas darf nicht passieren, denn sehr viele Linux-Installationen werden in einem <acronym title="Linux, Apache, MySQL, PHP|Perl|Python">LAMP</acronym> Stack eingesetzt, in dem das M eben für MySQL steht.</p>
	<p>Kommen wir aber zum aktuellen Problem mit Gentoo und MySQL.</p>
	<h4>Das aktuelle Problem: Update von MySQL 5.0.26 auf 5.0.26-r1</h4>
	<p><a href="http://www.mysql.com/" target="_top"><img class="alignright" src="http://node-0.mneisen.org/wp-content/stock/mysql-125x64.png" width="125" height="64" alt="" title="" /><a />Seit ca. August 2006 hatte ich die MySQL-Version 5.0.24 im Einsatz, die auch prima funktionierte: Blog betreiben, <a href="http://www.postfix.org/">Postfix</a> mit virtuellen Maildomains und virtuellen Mailboxes, <a href="http://www.courier-mta.org/">Courier-IMAP</a> mit <a href="http://www.courier-mta.org/">Courier-Authlib</a> und vor allem (das wird noch wichtig): <a href="http://asg.web.cmu.edu/sasl/">Cyrus-SASL</a> für die <a href="http://de.wikipedia.org/wiki/SMTP-Auth">SMTP-Authentifizierung</a> per <acronym title="Simple Authentication and Security Layer">SASL</acronym>. Alle diese Komponenten greifen mehr oder weniger direkt auf den lokal laufenden MySQL-Server zu.</p>
	<p>Am 13. Oktober 2006 wurde dann das Update auf MySQL 5.0.26 freigegeben, welches ich auch erfolgreich kompiliert und installiert habe. Wiederum lief alles prima &#8211; offensichtlich aber nur für diejenigen Nutzer, die <em>keine</em> Perl-DBI-Applikationen betreiben.</p>
	<p>Genau da hatte die Version 5.0.26 nämlich einige Probleme und musste gepatcht werden, was dann am 21. Oktober 2006 geschah: Version 5.0.26-r1 (man beachte: es handelt sich um ein Bindestrich-Update!) fixte diese Probleme. Da ich meine Server immer gerne auf aktuellem Stand halte, habe ich auch dieses Update installiert.</p>
	<h4>Das war ein Fehler</h4>
	<p>Fast alle Applikationen liefen nach wie vor prima, allerdings hatte Cyrus-SASL keine Chance mehr, sich mit dem MySQL-Server zu verbinden. Also war auch keine SMTP-Authentifizierung mehr möglich, und in Folge dessen konnten keine eMails mehr über meinen <acronym title="Mail Transfer Agent">MTA</acronym> versendet werden. Der Empfang lief weiterhin prima, genauso wie der automatische Versand von eMails vom Server aus selbst. Vom Arbeitsplatz oder Laptop aus aber ging gar nichts mehr, weil diese SMTP-Sessions authentifiziert werden müssen (Stichwort: <a href="http://de.wikipedia.org/wiki/Open_Relay">Open Relay</a>).</p>
	<h4>Was nun?</h4>
	<p>Bislang hatte sich Cyrus-SASL über das Unix-Socket mit MySQL verbunden. Von der Kommandozeile aus ging das auch immer noch prima:<br />
<pre class="codebash" style="font-size:9pt;">$ mysqladmin -u root -p version
mysqladmin  Ver <span class="nu0">8.41</span> Distrib <span class="nu0">5.0</span><span class="nu0">.26</span>, <span class="kw1">for</span> pc-linux-gnu on x86_64
Copyright <span class="br0">&#40;</span>C<span class="br0">&#41;</span> <span class="nu0">2000</span> MySQL AB &amp; MySQL Finland AB &amp; TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
&nbsp;
Server version          <span class="nu0">5.0</span><span class="nu0">.26</span>-log
Protocol version        <span class="nu0">10</span>
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 <span class="nu0">1</span> hour <span class="nu0">7</span> min <span class="nu0">9</span> sec
&nbsp;
Threads: <span class="nu0">10</span>  Questions: <span class="nu0">2705</span>  Slow queries: <span class="nu0">0</span>  Opens: <span class="nu0">30</span>
Flush tables: <span class="nu0">1</span>  Open tables: <span class="nu0">24</span>  Queries per second avg: <span class="nu0">0.671</span>
&nbsp;</pre>
	<p>Applikationen wie <a href="http://www.wordpress.org/">Wordpress</a> oder Postfix selbst (für virtuelle Mailboxes etc.) konnten sich auch weiterhin über das Unix-Socket in <code>/var/run/mysqld/mysqld.sock</code> connecten, genauso wie auch über TCP/IP(Transport Control Protocol/Internet Protocol). Nur Cyrus-SASL verweigerte sowohl über das Socket als auch über TCP/IP den Dienst.</p>
	<p>Nach vielen Hin und Her hat sich dann herausgestellt, dass folgende Konfiguration für Cyrus-SASL in <code>/etc/sasl2/smtpd.conf</code> immer noch die richtige ist:<br />
<pre class="codebash" style="font-size:9pt;">pwcheck_method: auxprop
auxprop_plugin: sql
srp_mda: md5
password_format: crypt
mech_list: login plain
log_level: <span class="nu0">0</span>
&nbsp;
sql_engine: mysql
sql_hostname: <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span>
sql_database: postfix
sql_user: postfix
sql_passwd: geheim
sql_select: SELECT password FROM accounts WHERE <span class="re2">email=</span><span class="st0">'%u@%r'</span>
sql_usessl: no
&nbsp;</pre>
	<p>Als <code>sql_hostname</code> kann wahlweise auch <code>localhost</code> oder die nicht-lokale IP des MySQL-Servers verwendet werden.</p>
	<p>Einziges Manko dieser Konfiguration: Sie funktionierte nicht mehr. Also scheint der Fehler bei MySQL zu liegen.</p>
	<p>Was liegt näher als ein Downgrade auf die letzte funktionierende Version? Nichts, außer dass das entsprechende ebuild (<code>/usr/portage/dev-db/mysql/mysql-5.0.24-r1.ebuild</code>) am 21. Oktober aus Portage entfernt wurde. Der Spaß begann.</p>
	<h4>Spaß</h4>
	<p>Durch freundliche Hilfe im Forum bei Gentoo wurde ich darauf aufmerksam gemacht, dass ich einfach nur den ebuild für MySQL 5.0.26-r1 umkopieren müssen und damit dann schon den entsprechenden ebuild für die gewünschte Version hätte:<br />
<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> /usr/portage/dev-db/mysql
$ cp mysql<span class="nu0">-5.0</span><span class="nu0">.26</span>-r1.ebuild mysql<span class="nu0">-5.0</span><span class="nu0">.24</span>-r1.ebuild</pre><br />
Danach war nur noch notwendig, den digest für diesen &#8220;neuen&#8221; (alten) ebuild zu erzeugen:<br />
<pre class="codebash" style="font-size:9pt;">$ ebuild mysql<span class="nu0">-5.0</span><span class="nu0">.24</span>-r1.ebuild digest</pre><br />
Dieses Kommando lädt die für den ebuild benötigten Dateien und erstellt für alle Prüfsummen. Leider: Die benötigte Datei <code>mysql-5.0.24.tar.gz</code> ist auf einigermaßen aktuellen Mirrorn des Gentoo Mirror Networks nicht mehr vorhanden, da der zugehörige ebuild ja bereits aus Portage entfernt wurde.</p>
	<p>Bei MySQL selbst gibt es die Datei mysql-5.0.24a-linux.tar.gz &#8211; nur ob das jetzt die gleiche ist wie die Datei, die es mal auf den Gentoo-Mirrorn gab, ist eher schwierig zu entscheiden.</p>
	<p>Ich stand also da ohne die benötigten Source-Pakete &#8211; und ohne die geht unter Gentoo gar nichts. Ich hatte also mehr Spaß.</p>
	<h4>Mehr Spaß</h4>
	<p>Glücklicherweise konnte ich auf einem Server in Portugal, der offensichtlich schon seit ein paar Tagen nicht mehr gesynct wurde, diese Datei dann doch noch finden, zusammen mit dem kompletten Patch-Set für MySQL 5.0.24-r1.</p>
	<p>Also nichts wie runtergeladen, Digests erstellt (s.o.) und dann ein<br />
<pre class="codebash" style="font-size:9pt;">$ emerge -p =dev-db/mysql<span class="nu0">-5.0</span><span class="nu0">.24</span>-r1</pre>
	<p>Das lief dann auch gut durch und wurde installiert, und schon nach einem<br />
<pre class="codebash" style="font-size:9pt;">$ /etc/init.d/mysql restart</pre>
	<p>lief alles wieder wie gewohnt: reibungslos.</p>
	<p>Da ich diese Version jetzt sicherlich so schnell nicht wieder updaten möchte, habe ich der Datei <code>/etc/portage/package.mask</code> noch folgende Zeile hinzugefügt:<br />
<pre class="codebash" style="font-size:9pt;">=dev-db/mysql<span class="nu0">-5.0</span><span class="nu0">.26</span></pre>
	<p>Damit sind alle MySQL-Versionen ab 5.0.26 gesperrt.</p>
	<h4>Fazit</h4>
	<p>Das MySQL-Maintainer-Team bei Gentoo hat es wieder einmal geschafft, mir (und vermutlich vielen anderen Anwendern) echte Probleme zu bereiten. Da wird mit heißer Nadel ein Fehler gefixt, der &#8211; und das muss man natürlich auch in Betracht ziehen &#8211; viele Perl-Anwender an den Rand der Verzweiflung getrieben hat. Nur: Der Patch, der diesen Fehler behebt, ist dann eine echte Katastrophe für all diejenigen, die auf Postfix+Cyrus-SASL+MySQL als MTA setzen &#8211; und das dürften nicht gerade wenige sein.</p>
	<p>Insgesamt erinnert mich das alles ein bisschen an die Patch-Gewohnheiten von Microsoft: Da gibt es auch häufiger mal einen Patch für einen Patch für einen Patch &#8230; Weil mit jedem Patch (von denen jeder für sich genommen sicherlich sehr wichtig ist) das Produkt an einer anderen Stelle bricht.</p>
	<p>Ich hoffe, dass die Maintainer bei Gentoo nun aus diesem Disaster lernen und zukünftig die MySQL-Releases ein bisschen besser testen. Damit können sie sich viele Freunde unter den Perl-Usern und den MTA-Admins machen.</p>
	<h4>Service</h4>
	<p>Da es wohl schwieriger werden wird, die Dateien für die Gentoo-Variante von MySQL 5.0.24-r1 über die üblichen Kanäle zu beziehen, habe ich sie hier noch einmal zusammengestellt.</p>
	<table>
		<tr>
			<td> <strong>Datei</strong> </td>
			<td> <strong>Größe</strong> </td>
			<td> <strong>speichern in</strong> </td>
		</tr>
		<tr>
			<td> <a href="http://node-0.mneisen.org/wp-content/uploads/2006/10/mysql-5.0.24-r1.ebuild">mysql-5.0.24-r1.ebuild</a> </td>
			<td> 1.1K </td>
			<td> /usr/portage/dev-db/mysql </td>
		</tr>
		<tr>
			<td> <a href="http://node-0.mneisen.org/wp-content/uploads/2006/10/mysql-5.0.24.tar.gz">mysql-5.0.24.tar.gz</a> </td>
			<td> 20M </td>
			<td> /usr/portage/distfiles </td>
		</tr>
		<tr>
			<td> <a href="http://node-0.mneisen.org/wp-content/uploads/2006/10/mysql-patchset-5.0.24-r2.tar.bz2">mysql-patchset-5.0.24-r2.tar.bz2</a> </td>
			<td> 1.7K</td>
			<td> /usr/portage/distfiles </td>
		</tr>
	</table>
	<p><em>Die Angaben zum Speicherort beziehen sich auf ein standard-konform eingerichtetes Gentoo-System. Die ebuild-Datei ist nach dem nächsten</em><br />
<pre class="codebash" style="font-size:9pt;">$ emerge --sync</pre>
	<p><em>wieder weg, da sie nicht mehr im offiziellen Portage-Tree enthalten ist. Hier könnte man mit <a href="http://www.gentoo.org/proj/en/overlays/userguide.xml">Overlays</a> arbeiten. Nach dem Download und Speichern der drei Dateien ist Folgendes auszuführen:</em><br />
<pre class="codebash" style="font-size:9pt;">$ <span class="kw3">cd</span> /usr/portage/dev-db/mysql
$ ebuild mysql<span class="nu0">-5.0</span><span class="nu0">.24</span>-r1.ebuild digest
$ emerge -av =mysql<span class="nu0">-5.0</span><span class="nu0">.24</span>-r1
$ /etc/init.d/mysql restart</pre></a></p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/10/25/gentoo-und-mysql-a-never-ending-story/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>XFS und (De)Fragmentierung</title>
		<link>http://node-0.mneisen.org/2006/10/13/xfs-und-defragmentierung/</link>
		<comments>http://node-0.mneisen.org/2006/10/13/xfs-und-defragmentierung/#comments</comments>
		<pubDate>Fri, 13 Oct 2006 14:41:10 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=162</guid>
		<description><![CDATA[	Ich betreibe viele Partitionen mit dem von mir sehr geschätzten Dateisystem XFS von SGI, das seit längerer Zeit schon auch im Linux-Kernel als rock stable gilt.
	Eine feine Fähigkeit von XFS ist es, dass man Partitionen mit einem Tool namens xfs_fsr defragmentieren kann, wie man das auch von Windows her gewohnt ist. Eigentlich ist das Mantra [...]]]></description>
			<content:encoded><![CDATA[	<p>Ich betreibe viele Partitionen mit dem von mir sehr geschätzten Dateisystem XFS von SGI, das seit längerer Zeit schon auch im Linux-Kernel als <em>rock stable</em> gilt.</p>
	<p>Eine feine Fähigkeit von XFS ist es, dass man Partitionen mit einem Tool namens <code>xfs_fsr</code> defragmentieren kann, wie man das auch von Windows her gewohnt ist. Eigentlich ist das Mantra bei Linux-Dateisystemen ja:</p>
	<blockquote>
		<p>Intelligente Ressourcen-Allokation verhindert zu starke Fragmentierung.</p>
	</blockquote>
	<p>Und daher sollte man angeblich auch auf defragementierende Tools verzichten können. Gerade XFS sticht mit einer besonders intelligenten Block-Allokation gegenüber anderen Dateisystemen hervor: Es werden z.B. beim Schreiben großer Dateien gleich megabyteweise zusammenhängender Platz auf dem Block-Device reserviert und erst dann geschrieben. Das ermöglicht nachher beim Lesen dieser Daten eine extrem hohe Datentransferrate, da der Schreib-/Lese-Kopf keine Seeks über das Medium mehr machen muss.</p>
	<p>Allerdings scheint es Workloads zu geben, die auch die intelligente Block-Allokation von XFS in die Kniee zwingt. Gestern scheine ich eine solche produziert zu haben. Ich habe auf eine portable USB-Platte mit 320 GB Kapazität gleichzeitig 12 Datenströme mit jeweils etwa 1 GB geschrieben. Beim Lesen dieser Daten heute zu Hause fiel mir auf, dass das doch recht langsam geht.</p>
	<p>Also habe ich gerade mal<br />
<pre class="codebash" style="font-size:9pt;">$ xfs_fsr -v</pre>
	<p>angeschmissen. <code>xfs_fsr</code> analysiert die <em>inodes</em> des Dateisystems und versucht Dateien so umzuorganisieren, dass sie mit möglichst wenigen <em>extents</em> auskommen. Im Idealfall hat eine Datei einen <em>extent</em>, der genau so viele Blocks umfasst, wie die Datei zu ihrer Speicherung benötigt.</p>
	<p>Die Ausgabe von <code>xfs_fsr</code> (auf das Interessante gekürzt):<br />
<pre class="codebash" style="font-size:9pt;">START: <span class="re2">pass=</span><span class="nu0">0</span> <span class="re2">ino=</span><span class="nu0">0</span> /dev/sda1 /media/usbdisk
/media/usbdisk start <span class="re2">inode=</span><span class="nu0">0</span>
<span class="re2">ino=</span><span class="nu0">143</span>
extents before:<span class="nu0">32903</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">143</span>
<span class="re2">ino=</span><span class="nu0">134</span>
extents before:<span class="nu0">3316</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">134</span>
<span class="re2">ino=</span><span class="nu0">135</span>
extents before:<span class="nu0">1403</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">135</span>
<span class="re2">ino=</span><span class="nu0">7241782</span>
extents before:<span class="nu0">1135</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">7241782</span>
<span class="re2">ino=</span><span class="nu0">7241786</span>
extents before:<span class="nu0">886</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">7241786</span>
<span class="re2">ino=</span><span class="nu0">7241787</span>
extents before:<span class="nu0">842</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">7241787</span>
<span class="re2">ino=</span><span class="nu0">7241785</span>
extents before:<span class="nu0">561</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">7241785</span>
<span class="re2">ino=</span><span class="nu0">7241788</span>
extents before:<span class="nu0">241</span> after:<span class="nu0">1</span> DONE <span class="re2">ino=</span><span class="nu0">7241788</span>
&nbsp;</pre>
	<p>Danach kommt nur noch Kleinkram.</p>
	<p>Dass eine Datei mit 32903 Extents bei der Lesegeschwindigkeit <em>etwas</em> hinter den Erwartungen hinterherhinkt &#8211; das konnt man auch wirklich nicht erwarten &#8230; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
	<p><strong>Im WWW zu diesem Thema:</strong></p>
	<ul>
		<li><a href="http://bitubique.com/content/view/45/50/">Defragment XFS File-system</a></li>
	</ul>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/10/13/xfs-und-defragmentierung/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google bietet Ping-Service für Weblogs an</title>
		<link>http://node-0.mneisen.org/2006/10/06/google-bietet-ping-service-fur-weblogs-an/</link>
		<comments>http://node-0.mneisen.org/2006/10/06/google-bietet-ping-service-fur-weblogs-an/#comments</comments>
		<pubDate>Fri, 06 Oct 2006 11:29:47 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=139</guid>
		<description><![CDATA[	Endlich bietet Google einen Service an, den andere Suchdienste für Blogs schon lange anbieten: Man kann Google nun anpingen, um neue Beiträge im eigenen Blog zu melden. Die Suchmaschine wird dann kurze Zeit später diesen neuen Blogpost indexieren und damit für die Suche zugänglich machen.
	Bereits seit längerem bietet Google eine spezialisierte Suche nach Artikeln in [...]]]></description>
			<content:encoded><![CDATA[	<p>Endlich bietet Google einen <a href="http://googleblog.blogspot.com/2006/10/got-blog-will-ping.html">Service</a> an, den andere Suchdienste für Blogs schon lange anbieten: Man kann Google nun anpingen, um neue Beiträge im eigenen Blog zu melden. Die Suchmaschine wird dann kurze Zeit später diesen neuen Blogpost indexieren und damit für die Suche zugänglich machen.</p>
	<p>Bereits seit längerem bietet Google eine <a href="http://www.google.com/blogsearch">spezialisierte Suche nach Artikeln in Weblogs</a> an. Der Ping-Service ist unter <a href="http://blogsearch.google.com/ping">http://blogsearch.google.com/ping</a> erreichbar, dort kann die Adresse des eigenen Blogs eingetragen werden. Die meiste Blog-Software (z.B. Wordpress) bieten auch die Möglichkeit, dies zu automatisieren; bei der Publizierung eines neuen Artikels werden dann automatisch die eingetragenen Ping-Services über den neuen Blogpost unterrichtet.</p>
	<p>Bei Wordpress lässt sich dies unter <em>Einstellungen &raquo; Schreiben</em> einrichten. Dort muss in das entsprechende Eingabefeld (siehe Abbildung) der neue Ping-Dienst eingetragen werden.</p>
	<p><img class="centered" id="image138" src="http://node-0.mneisen.org/wp-content/uploads/2006/10/google-ping-service-in-wordpress.png" alt="google-ping-service-in-wordpress.png" /><div class="caption">Eintragen eines neuen Ping-Services in einem Wordpress-Blog.</div></p>
	<p>Google bietet noch einen weiteren interessanten neuen Service an: Unter der URL <a href="http://blogsearch.google.com/changes.xml">http://blogsearch.google.com/changes.xml</a> kann man sich die aktuellen bei Google einlaufenden Pings ansehen; dies lässt sich sicherlich auch für eine eigene Blog-Search-Engine nutzen, wobei die Rechtslage hinsichtlich der Nutzung dieser Daten momentan noch unklar ist, da sich die Google Blogsearch insgesamt noch im Beta-Stadium befindet.</p>
	<p>[via <a href="http://www.golem.de/0610/48221.html">Golem</a>]</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/10/06/google-bietet-ping-service-fur-weblogs-an/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wie man ein Blog über Inhalte bekannt macht</title>
		<link>http://node-0.mneisen.org/2006/10/04/wie-man-ein-blog-uber-inhalte-bekannt-macht/</link>
		<comments>http://node-0.mneisen.org/2006/10/04/wie-man-ein-blog-uber-inhalte-bekannt-macht/#comments</comments>
		<pubDate>Wed, 04 Oct 2006 18:42:36 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Techtip]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=137</guid>
		<description><![CDATA[	von Neil Patel
	Für jeden Blogger ist es ein Ziel, bekannt zu werden. Das kann durch Optimierungen des Blogs erreicht werden oder durch die diversen social media, die es mittlerweile gibt. Diese Methoden sind großartig und können den Bekanntheitsgrad eines Blogs steigern, allerdings liegen sie typischerweise außerhalb der eigenen Kontrolle. Das entscheidende Mittel hat man hingegen [...]]]></description>
			<content:encoded><![CDATA[	<p>von <a href="http://www.pronetadvertising.com/articles/making-your-blog-popular-through-content.html">Neil Patel</a></p>
	<p>Für jeden Blogger ist es ein Ziel, bekannt zu werden. Das kann durch Optimierungen des Blogs erreicht werden oder durch die diversen <em>social media</em>, die es mittlerweile gibt. Diese Methoden sind großartig und können den Bekanntheitsgrad eines Blogs steigern, allerdings liegen sie typischerweise außerhalb der eigenen Kontrolle. Das entscheidende Mittel hat man hingegen in der eigenen Hand: der Content, der Inhalt im Blog. Hier folgen nun einige Ideen, wie man den Bekanntheitsgrad eines Blogs  über den Content steigern kann.</p>
	<p><strong>Verbreite Neuigkeiten</strong></p>
	<p>Neuigkeiten verbreiten sich in der Blogosphäre wie ein Lauffeuer. Handelt es sich um neue und wichtige Nachrichten, dann wird jeder darüber schreiben und auf die Fundstelle dieser News verlinken. Meistens ist es nicht einfach, Neuigkeiten zu verbreiten, während Tausende andere das Gleiche tun. Wenn dies aber gelingt, dann werden andere Blogger auf Dein Blog verlinken und es auch weiterhin regelmäßig lesen, um auf dem neuesten Stand zu bleiben.</p>
	<p><strong>Veröffentliche an Wochenenden</strong></p>
	<p>Wahrscheinlich werden die Leser Deines Blogs auch andere Blogs lesen. Schon wegen der schieren Anzahl an Blogs, die tägliche neue Artikel posten, wird es für die Leser schwierig sein, alle Artikel zu lesen. Wenn Du hingegen dann neue Artikel postest, wenn Deine Leser Zeit haben, z.B. am Wochenende, dann steigen die Chancen, dass diese Leser Dein Blog lesen. Wenn Du Dir die Blogs in Deinem Interessenbereich ansiehst, werden die meisten davon vermutlich nicht am Wochenende posten. Mir ist klar, dass einige hiermit Schwierigkeiten haben, aber überlege Dir diesen Ansatz, wenn Du die Zeit hierfür am Wochenende übrig hast.</p>
	<p><strong>Veröffentliche zeitlose Artikel</strong></p>
	<p>Versuche nicht nur Artikel zu schreiben, die eine Lebensdauer von nur einer Woche haben, sondern schreibe immer wieder über zeitlose Dinge. Diese Artikel werden zwar anfänglich nicht so stark einschlagen, aber sie könnten in einigen Monaten populär werden. Versuche also Artikel zu schreiben, die länger als einen Tag oder eine Woche &#8220;leben&#8221;.</p>
	<p><strong>Lehre, verkaufe nicht</strong></p>
	<p>Viele Leute beginnen mit einem Blog, weil sie Geld verdienen wollen. Am Geldverdienen ist nichts Falsches, und auch bloggen für Geld ist nicht verkehrt, aber vermeide jede Form der Verkaufsmasche in Deinen Blogartikeln. Wenn Du Deine Leser stattdessen informierst und gut unterrichtest, dann werden Dich die Leute möglicherweise als Autorität auf Deinem Gebiet ansehen, und das kann zu vielen günstigen Gelegenheiten für Geschäfte o.ä. führen.</p>
	<p><strong>Beteilige Dich an Diskussionen</strong></p>
	<p>eMails an andere Blogger mit der Bitte um Links können ein effektives Mittel sein, den Traffic auf Deinem Blog zu erhöhen. Ein anderer guter Weg, die eigenen Popularität zu steigern, ist die Teilnahme an Diskussionen und Unterhaltungen. Ein gutes Beispiel hierfür sind die <a href="http://rohitbhargava.typepad.com/weblog/2006/08/5_rules_of_soci.html">5 Rules of Social Media Optimization</a> von Rohit Bhargava; durch die <a href="http://www.web-strategist.com/blog/2006/08/13/rules-of-social-media-optimization/">Beiträge tausender Leser</a> wurde aus dieser Liste von fünf Regeln die <a href="http://rohitbhargava.typepad.com/weblog/2006/08/adding_the_17th.html">17 Rules of Social Media Optimization</a>.</p>
	<p>Ein populäres Blog zu betreiben ist eine fordernde Aufgabe, besonders angesichts der großen Anzahl neuer Blogs, die jeden Tag hinzukommen. Das Beste, was man tun kann: hochqualitativen, nützlichen Content produzieren, über Themen, an denen man selbst wirklich interessiert ist. Die Leute warten darauf von Dir zu hören, was Du ihnen erzählen möchtest. Verschwende nicht ihre Zeit!</p>
	<p><small><br />
Dieses Posting ist eine Übersetzung des Beitrags <a href="http://www.pronetadvertising.com/articles/making-your-blog-popular-through-content.html">Making your blog popular through content</a> von <a href="http://www.pronetadvertising.com/about/">Neil Patel</a>.<br />
</small></p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/10/04/wie-man-ein-blog-uber-inhalte-bekannt-macht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neuer Mirror für Gentoo online &#124; New Gentoo Mirror online</title>
		<link>http://node-0.mneisen.org/2006/09/23/neuer-mirror-fur-gentoo-online-new-gentoo-mirror-online/</link>
		<comments>http://node-0.mneisen.org/2006/09/23/neuer-mirror-fur-gentoo-online-new-gentoo-mirror-online/#comments</comments>
		<pubDate>Sat, 23 Sep 2006 11:27:37 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=123</guid>
		<description><![CDATA[	Deutscher Text
	English text follows at bottom of post.
	Ab sofort steht ein neuer full mirror der Linux-Distribution Gentoo zur Verfügung, der alle zwei Stunden upgedated wird. Gespiegelt sind alle distfiles, die täglichen Snapshots des Portage-Trees sowie alle ISO-Images des Gentoo-Projekts (außer /releases/historical). Gehostet wird der Mirror auf einem AMD Athlon 64 3700+, 1 GB RAM, XFS [...]]]></description>
			<content:encoded><![CDATA[	<p><strong>Deutscher Text</strong></p>
	<p><em>English text follows at bottom of post.</em></p>
	<p>Ab sofort steht ein neuer <em>full mirror</em> der Linux-Distribution Gentoo zur Verfügung, der alle zwei Stunden upgedated wird. Gespiegelt sind alle <em>distfiles</em>, die täglichen Snapshots des Portage-Trees sowie alle ISO-Images des Gentoo-Projekts (außer /releases/historical). Gehostet wird der Mirror auf einem AMD Athlon 64 3700+, 1 GB RAM, XFS auf RAID-0, 1 GBit NIC, Kernel 2.6.17-gentoo-r8; das Rechenzentrum steht in Nürnberg und ist mit insgesamt 9 GBit an verschiedene Backbones angebunden.</p>
	<p>Momentan ist der Mirror weder hinsichtlich der Bandbreite noch der Anzahl gleichzeitiger Benutzer eingeschränkt.</p>
	<p>Erreichbar ist der Mirror per HTTP und FTP:</p>
	<ul>
		<li><a href="http://gentoo.mneisen.org/">http://gentoo.mneisen.org/</a></li>
	</ul>
	<ul>
		<li><a href="ftp://ftp.mneisen.org/gentoo/">ftp://ftp.mneisen.org/gentoo/</a>
	<p>Um den neuen Mirror zu verwenden, öffnen Sie bitte als <code>root</code> die Datei <em>/etc/make.conf</em> und suchen dort eine Zeile, die mit _GENTOO_MIRRORS_ beginnt, z.B.<br />
<code><br />
GENTOO_MIRRORS="http://distfiles.gentoo.org/"<br />
</code></p>
	<p>Fügen Sie nun den neuen Mirror an erster Stelle ein (dabei können Sie zwischen HTTP und FTP wählen):</p>
<code>
GENTOO_MIRRORS="http://gentoo.mneisen.org/ http://distfiles.gentoo.org/"
</code>
	<p>bzw.</p>
<code>
GENTOO_MIRRORS="ftp://ftp.mneisen.org/gentoo/ http://distfiles.gentoo.org/"
</code>
	<p>Auf diese Weise verwenden Sie standardmäßig den neuen Mirror und behalten den ursprünglich eingetragenen Mirror als <em>fall back</em>.</p>
	<p>Für weitere Informationen oder bei Problemen kontaktieren Sie bitte <a href="mailto:martin.eisenhardt@mneisen.org?subject=Gentoo%20mirror">Martin Eisenhardt</a>.</p>
	<p><hr /></p>
	<p><strong>English text</strong></p>
	<p>Beginning September 23, 2006, a new full mirror of the Gentoo Linux distribution is available to the general public. Updated on a bi-hourly schedule, it provides all <em>distfiles</em>, daily snapshots of the portage tree and all ISO images of the Gentoo project (sparing /releases/historical). The mirror runs on AMD Athlon 64 3700+, 1 GB RAM, XFS on RAID-0, 1 GBit NIC, kernel 2.6.17-gentoo-r8; the data center is located in Nuremberg (Germany) and connects with an aggregated bandwidth of 9 GBit to several backbones.</p>
	<p>Momenarily, the mirror does not limit total bandwidth or concurrent number of users.</p>
	<p>You may connect to the mirror by HTTP or FTP:</p>
		<li><a href="http://gentoo.mneisen.org/">http://gentoo.mneisen.org/</a></li>
	</ul>
	<ul>
		<li><a href="ftp://ftp.mneisen.org/gentoo/">ftp://ftp.mneisen.org/gentoo/</a>
	<p>To use the new mirror, open the file <em>/etc/make.conf</em> with <code>root</code> privileges and search a line starting with _GENTOO_MIRRORS_, f.e.<br />
<code><br />
GENTOO_MIRRORS="http://distfiles.gentoo.org/"<br />
</code></p>
	<p>Insert the new mirror as first mirror (you may choose to use HTTP or FTP):</p>
<code>
GENTOO_MIRRORS="http://gentoo.mneisen.org/ http://distfiles.gentoo.org/"
</code>
	<p>or</p>
<code>
GENTOO_MIRRORS="ftp://ftp.mneisen.org/gentoo/ http://distfiles.gentoo.org/"
</code>
	<p>Save the file. Now, your system will use the new mirror as primary mirror, with your old mirror(s) as fall-back solution.</p>
	<p>For additional information, or in the case of problems, contact <a href="mailto:martin.eisenhardt@mneisen.org?subject=Gentoo%20mirror">Martin Eisenhardt</a>.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/09/23/neuer-mirror-fur-gentoo-online-new-gentoo-mirror-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gentoo: PHP &amp; MySQL-Updates machen Probleme</title>
		<link>http://node-0.mneisen.org/2006/04/25/gentoo-php-mysql-updates-machen-probleme/</link>
		<comments>http://node-0.mneisen.org/2006/04/25/gentoo-php-mysql-updates-machen-probleme/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 22:40:57 +0000</pubDate>
		<dc:creator>Martin Eisenhardt</dc:creator>
				<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Techtip]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSS]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://node-0.mneisen.org/?p=46</guid>
		<description><![CDATA[	Sonntags hat man ja nichts zu tun, wir haben ja alle eine 40-Stunden-Woche und &#8220;Freitag ab eins macht jeder seins&#8221;  . Was macht man also? Während man die während der Woche liegengebliebene Arbeit nachholt und sich auf die nächste Arbeitswoche vorbereitet, kann man ja mal eben schnell seinen Server auf den neuesten Stand bringen.
	Ich [...]]]></description>
			<content:encoded><![CDATA[	<p>Sonntags hat man ja nichts zu tun, wir haben ja alle eine 40-Stunden-Woche und &#8220;Freitag ab eins macht jeder seins&#8221; <img src='http://node-0.mneisen.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . Was macht man also? Während man die während der Woche liegengebliebene Arbeit nachholt und sich auf die nächste Arbeitswoche vorbereitet, kann man ja mal eben schnell seinen Server auf den neuesten Stand bringen.</p>
	<p>Ich betreibe meine Rechner vorzugsweise unter Gentoo, nur zum Daddeln habe ich auf dem Laptop auch ein Windows. Das Schöne an Gentoo ist eigentlich, dass man sich darauf verlassen kann, dass alles so funktioniert, wie es soll. Es ist zwar manchmal ein bisschen Nachhilfe notwendig, aber das macht die Sache ja eher noch interessanter.</p>
	<p>Aber was ist jetzt passiert? Ich habe gestern PHP und MySQL auf die neuesten stabilen(!) Versionen upgedated, und musste dann feststellen, dass sich sowohl Joomla! als auch phpBB2 beharrlich weigerten, Umlaute darzustellen. Stattdessen bekam man nur Multi-Byte-Sequenzen zu sehen. Die neuen Versionen ließen sich auch durch weitestgehende Anpassungen der /etc/mysql/my.cnf bzw. der /etc/apache2-php5/php.ini nicht dazu überreden, dass die Umlaute wieder korrekt angezeigt wurden.</p>
	<p>Was war denn da kaputt? Schließlich ging es nur von MySQL 4.1.14 auf 4.1.14-r1, und auch bei PHP ging es nur um ein ähnlich kleines Update. Grund für die Probleme war es offensichtlich, dass die bereits existierenden Datenbanken in LATIN1-Kodierung vorlagen, das neue MySQL 4.1.14-r1 auf Gentoo aber UTF-8 verwendet. Stellt man das auf LATIN1 zurück, erscheinen zwar die Umlaute wieder, dann gibt es aber Probleme mit neuen Datenbanken, die man gerne in UTF-8 hätte.</p>
	<p>Was passiert war: Zum ersten Mal seit langem haben die Betreuer des Package-Systems von Gentoo (portage) wohl etwas durchgewunken, was nicht hätte stable sein sollen. Das letzte Mal war mit das bei einem Update von apache-2.0.x-r39 auf apache-2.0.x-r40 untergekommen: bei diesem Update hatten sich die Maintainer des Portage-Trees dazu entschlossen, das Layout der Konfigurations-Dateien komplett zu ändern&#8212;bis dato wiesen die Konfigurationsdateien des httpd unter Gentoo eine gänzlich andere Struktur auf als von der Apache Foundation oder anderen Linux-Distributionen bekannt.</p>
	<p>Was mich besonders ärgert: Wie kann man eine ernsthafte Linux-Distribution sein wollen und gleichzeitig Bindestrich-Updates (bumlux-x.y.z-r13 auf bumlux-x.y.z-r14) als stable releasen, die den Sysadmins die Konfiguration völlig zerhauen? Das darf einfach nicht passieren, schließlich gibt es ja nicht nur ein paar Privatanwender und Lehrstühle, die auf (Gentoo) Linux bauen&#8212;inzwischen gibt es auch Leute, die damit ihr Geld verdienen und die wichtige Applikationen betreiben.</p>
	<p>Ach ja, der Work-around: Lokalisiert jeden Aufruf von <code>mysql_connect()</code> in Eurer Web-Applikation und schreibt direkt dahinter ein</p>
<code>mysql_query("SET CHARACTER SET xxx");</code>
	<p>wobei xxx das gewünschte character set ist.</p>
	<p>Umständlich und blöd, aber es funktioniert zumindest bei Joomla! und phpBB2.</p>
	<p>Zum Schluss, und damit da keine Missverständnisse entstehen: Ich halte Gentoo nach wie vor für eine tolle Distribution und setze weiter darauf&#8212;ich hoffe aber, dass sich das Release Management zumindest bei den wichtigen Applikationen (LAMP, X, KDE, ...) noch weiter verbessert.</p>
	<h4>Update</h4>
	<ul>
		<li><a href="http://www.bwurst.org/comment.php?type=trackback&#38;entry_id=66">Bernd Wurst schreibt in seinem Blog auch über die oben beschriebene Problematik</a> und erklärt auch noch ein bisschen besser, <em>warum</em> MySQL sich so benimmt, während ich ja hier nur eine Metabetrachtung vorgenommen habe und den Workaround beschreibe. Danke an Bernd für die Erklärung!</li>
	</ul>
	<ul>
		<li><a href="http://steffenzieger.de/index.php/2006/06/25/umlaute-in-php-aus-mysql-datenbank/trackback/">Steffen Zieger schreibt in seinem Blog</a>, dass es auch jetzt noch Probleme mit MySQL und PHP unter Gentoo gibt, die allerdings einfacher zu umschiffen sind. Inzwischen müssen nur noch die Zeichensätze der Datenbanken in der Konfigurationsdatei <code>my.cnf</code> richtig eingestellt werden &#8211; und das ist ja auch logisch.</li>
	</ul>

 ]]></content:encoded>
			<wfw:commentRss>http://node-0.mneisen.org/2006/04/25/gentoo-php-mysql-updates-machen-probleme/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
