<?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>iWebDev&#039;s blog &#187; tsk</title>
	<atom:link href="http://www.iwebdev.it/blog/?feed=rss2&#038;tag=tsk" rel="self" type="application/rss+xml" />
	<link>http://www.iwebdev.it/blog</link>
	<description>and everything goes around</description>
	<lastBuildDate>Sat, 06 Aug 2011 23:08:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>LAMPP vs LD_LIBRARY_PATH</title>
		<link>http://www.iwebdev.it/blog/?p=116</link>
		<comments>http://www.iwebdev.it/blog/?p=116#comments</comments>
		<pubDate>Tue, 14 Dec 2010 20:30:13 +0000</pubDate>
		<dc:creator>to</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[lampp]]></category>
		<category><![CDATA[ld_library_path]]></category>
		<category><![CDATA[tsk]]></category>
		<category><![CDATA[ubuntu 10.10]]></category>

		<guid isPermaLink="false">http://www.iwebdev.it/blog/?p=116</guid>
		<description><![CDATA[Al fine di velocizzare il processo di installazione di una web application spesso si ricorre a package già &#8220;pre-configurati&#8221; dove l&#8217;unica operazione necessaria è la decompressione dell&#8217;archivio. Finché l&#8217;applicazione web è &#8220;semplice&#8221; non si riscontrano problemi ma quando è necessario, per esempio, eseguire comandi nativi unix o comandi di terze parti (generatori di barcode, TSK, [...]]]></description>
			<content:encoded><![CDATA[<p>Al fine di velocizzare il processo di installazione di una web application spesso si ricorre a package già &#8220;pre-configurati&#8221; dove l&#8217;unica operazione necessaria è la decompressione dell&#8217;archivio. Finché l&#8217;applicazione web è &#8220;semplice&#8221; non si riscontrano problemi ma quando è necessario, per esempio, eseguire comandi nativi unix o comandi di terze parti (generatori di barcode, TSK, tool di scan o simili) iniziano i problemi legati alle librerie. L&#8217;errore a cui ci si trova di fronte è il seguente:</p>
<blockquote><p>/usr/local/bin/fls: /opt/lampp/lib/libcrypto.so.0.9.8: no version information available (required by /usr/local/lib/libafflib.so.0) /usr/local/bin/fls: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/local/lib/libewf.so.1) /usr/local/bin/fls: /opt/lampp/lib/libgcc_s.so.1: version `GCC_4.2.0&#8242; not found (required by /usr/lib/libstdc++.so.6)</p></blockquote>
<p>Il problema fa riferimento ad un conflitto di versione delle librerie  presenti all&#8217;interno della directory <strong>/usr/local/lib</strong> e <strong>/opt/lampp/lib</strong>. Da una prima analisi si potrebbe obiettare come l&#8217;alternativa più immediata sia quella di installare le singole componenti anziché un pacchetto pre-configurato; d&#8217;altro canto questa strada non è la soluzione al problema ma piuttosto un workaround. Durante la fase di debug si è visto come il seguente codice:</p>
<blockquote><p>putenv(&#8220;LD_LIBRARY_PATH=/usr/local/lib&#8221;);<br />
echo shell_exec(&#8220;/usr/local/bin/fls -V 2&gt;&amp;1&#8243;);</p></blockquote>
<p>risolvesse completamente il problema. Si è scoperto quindi che la natura del problema è da ricercarsi all&#8217;interno della variabile d&#8217;ambiente <strong>LD_LIBRARY_PATH</strong>. La variable d&#8217;ambiente associata alle librerie può essere modificata in diversi file del sistema operativo (/etc/ld.so.conf, bash.bashrc, .profile, putenv via PHP) ma per essere il meno invasivi possibili è stato scelto di modificare lo script di avvio del servizio LAMPP. Aprendo infatti il file <strong>/opt/lampp/lampp</strong>, nel dettaglio alla riga 100,  si legge l&#8217;istruzione:</p>
<blockquote><p>export LD_LIBRARY_PATH=/opt/lampp/lib:$LD_LIBRARY_PATH</p></blockquote>
<p>Modificando l&#8217;istruzione precedente in:</p>
<blockquote><p><strong>export LD_LIBRARY_PATH=/usr/local/lib</strong></p></blockquote>
<p>vengono risolti tutti i problemi dovuti alle dipendenze richieste durante l&#8217;esecuzione del comando d&#8217;esempio. Riavviando il servizio /opt/lampp/lampp restart infatti si ottiene l&#8217;output corretto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwebdev.it/blog/?feed=rss2&#038;p=116</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
