<?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>BibaBlog &#187; command line</title>
	<atom:link href="http://wap.ecw.de/archives/tag/command-line/feed" rel="self" type="application/rss+xml" />
	<link>http://wap.ecw.de</link>
	<description>Vom Erfinder der Pandemie</description>
	<lastBuildDate>Mon, 26 Jul 2010 18:17:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Howto: Citrix XenServer-Patch nochmals installieren</title>
		<link>http://wap.ecw.de/archives/1256</link>
		<comments>http://wap.ecw.de/archives/1256#comments</comments>
		<pubDate>Thu, 17 Dec 2009 16:41:37 +0000</pubDate>
		<dc:creator>Schakko</dc:creator>
				<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[citrix]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[downgrade]]></category>
		<category><![CDATA[force]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[reinstall]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[uuid]]></category>
		<category><![CDATA[xenserver]]></category>

		<guid isPermaLink="false">http://wap.ecw.de/?p=1256</guid>
		<description><![CDATA[Heute wurde ich in das Büro geholt, da beim Update auf die letzten XenServer-Version (5.5.0 Update-1) wohl einiges schief gegangen ist. Nach dem Neustart des Servers konnten unser FibreChannel Storage Repository, das lokale Storage Repository und die iSCSI-Volumes nicht mehr geladen werden. Beim Re-attachen eines iSCSI-Laufwerks bekam ich den Fehler, dass der Treiber lvmoiscsi nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Heute wurde ich in das Büro geholt, da beim Update auf die letzten XenServer-Version (5.5.0 Update-1) wohl einiges schief gegangen ist. Nach dem Neustart des Servers konnten unser FibreChannel Storage Repository, das lokale Storage Repository und die iSCSI-Volumes nicht mehr geladen werden. Beim Re-attachen eines iSCSI-Laufwerks bekam ich den Fehler, dass der Treiber <em>lvmoiscsi</em> nicht geladen wurde. Weiterhin war es uns auch nicht möglich, die USB-Treiber zu nutzen, da diese offensichtlich nicht mehr vorhanden gewesen sind.</p>
<p>Problematischerweise konnten wir mit der Installations-Cd von 5.5.0 Update-1 unser System nicht wiederherstellen bzw. upgraden, da der Patch bereits als komplett installiert erkannt worden war.</p>
<p>Nach mehreren missglückten Lösungsansätzen und wenig Erfolg bei Google hatte ich dann die rettende Idee, folgende Kommandos müssen auf der CLI des XenServers abgesetzt werden.</p>
<pre class="brush: bash;">
wget http://downloadns.citrix.com.edgesuite.net/4276/XenServer-5.5.0-Update1.xsupdate /tmp
xe patch-upload file-name=XenServer-5.5.0-Update1.xsupdate
</pre>
<p>Nun kann es sein, dass der Patch bereits als installiert gekennzeichnet worden ist. Deshalb muss im Verzeichnis /var/patch bzw. /var/patch/applied das Verzeichnis mit der UUID, die <em>xe patch-upload</em> zurückliefert, verschoben werden.</p>
<pre class="brush: bash;">
/usr/bin/gpg --homedir /opt/xensource/gpg --no-default-keyring --keyring /opt/xensource/gpg/pubring.gpg --decrypt /tmp/XenServer-5.5.0-Update1.xsupdate &gt; /tmp/update.sh
chmod u+x /tmp/update.sh
/tmp/update.sh unpack
</pre>
<p>Damit wird die Installationsdatei entschlüsselt und danach entpackt. Der Aufruf von <em>/tmp/update.sh apply</em> funktionierte bei uns nicht, da die Version trotz oben genannter Anpassungen als bereits installiert gekennzeichnet worden war.<br />
Im Verzeichnis <em>/tmp</em> befindet sich nun ein neues Unterverzeichnis, in dem die Installationsdaten des Updates liegen. Das Script <em>install.sh</em> ist leider so geschrieben, dass es bei der ersten fehlgeschlagenen Installation eines RPM-Packages komplett abbricht. Außerdem braucht es eine kleine Anpassung im Header (<em>vi install.sh</em>):</p>
<pre class="brush: bash;">
#!/bin/bash
### Generic patch install.sh script
# ...

#[ -n &quot;$UUID&quot; ] || exit 2
UUID=$2
# ...
</pre>
<p>Die Zeile mit der Überprüfung der UUID muss auskommentiert und stattdessen UUID als zweiter Parameter des Scripts übergeben werden.<br />
Nun folgt die Installation aller RPM-Packages. Eventuell müssen die Packages in richtiger Reihenfolge installiert werden, bei mir reichte aber</p>
<pre class="brush: bash;">
rpm -U *.rpm
</pre>
<p>aus.<br />
Es sollten nun (hoffentlich!) alle nötigen RPM-Packages installiert worden sein. Als letzten Schritt muss die Datei CONTENTS angepasst werden. Sie enthält alle Dateien, die beim Update-Prozess geändert/installiert werden. Da die RPM-Packages bereits im vorherigen Schritt installiert worden sind, müssen sie aus der Datei entfernt werden.</p>
<pre class="brush: bash;">
cp CONTENTS CONTENTS.bak
vi CONTENTS
# alle Zeilen beginnend mit &quot;rpm&quot; löschen
</pre>
<p>Soweit so gut, nun folgt der Aufruf des <em>install.sh</em>-Scripts:</p>
<pre class="brush: bash;">
install.sh apply $UUID
</pre>
<p>$UUID muss mit der UUID aus Schritt 1 (<em>xe patch-upload</em>) ersetzt werden. Nach einem Neustart ist der XenServer auf dem letzten Stand.</p>
<p>Für die Frickler unter euch, die wissen möchten, wie der Update-Prozess abläuft:</p>
<ul>
<li>Laden der Update-Datei</li>
<li>Entpacken der Daten und Aufruf des Scripts:
<ul>
<li>Delegation an die <em>install.sh</em></li>
<li>Zeilenweise lesen der Datei <em>CONTENTS</em></li>
<li>Je nach Beginn der Zeile in <em>CONTENTS</em> wird ein RPM-Package installiert oder eine Datei umkopiert</li>
<li>Aufruf der post_install(_update1) zum Generieren der initrds</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wap.ecw.de/archives/1256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Links (Die besten Einzeiler, Analyse mit Traceroute, Closures and JVM)</title>
		<link>http://wap.ecw.de/archives/887</link>
		<comments>http://wap.ecw.de/archives/887#comments</comments>
		<pubDate>Mon, 23 Feb 2009 08:27:04 +0000</pubDate>
		<dc:creator>Schakko</dc:creator>
				<category><![CDATA[Effizient arbeiten]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[analyse]]></category>
		<category><![CDATA[closures]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[traceroute]]></category>

		<guid isPermaLink="false">http://wap.ecw.de/archives/887</guid>
		<description><![CDATA[Hier ein paar interessante Links, die über das Wochenende in meinen Lieblings-Blogs aufgetaucht sind Matthias: Command Line FU &#8211; Die besten Einzeller Einzeiler für die Kommandozeile (Linux) Analyse mit Traceroute Mirko: Closures and JVM]]></description>
			<content:encoded><![CDATA[<p>Hier ein paar interessante Links, die über das Wochenende in meinen Lieblings-Blogs aufgetaucht sind</p>
<p><a href="https://www.adminlife.net/">Matthias</a>:</p>
<ul>
<li><a href="http://www.commandlinefu.com/commands/browse">Command Line FU</a> &#8211; Die besten <span style="text-decoration: line-through;">Einzeller</span> Einzeiler für die Kommandozeile (Linux)</li>
<li><a href="http://www.tobiaskoelligan.de/internet/a-practical-guide-to-correctly-troubleshooting-with-traceroute/">Analyse mit Traceroute</a></li>
</ul>
<p><a href="http://blog.misto.ch">Mirko</a>:</p>
<ul>
<li><a href="http://www.infoq.com/presentations/gafter-jvm-closures">Closures and JVM</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wap.ecw.de/archives/887/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
