<?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>guzik &#187; Linux</title>
	<atom:link href="http://guzik.net.pl/blog/category/tech/os/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://guzik.net.pl/blog</link>
	<description>Mój blog</description>
	<lastBuildDate>Fri, 10 Feb 2012 23:44:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Linux MPIO &#8211; Hitachi vs. Fujitsu</title>
		<link>http://guzik.net.pl/blog/2012/01/linux-mpio-hitachi-vs-fujitsu/</link>
		<comments>http://guzik.net.pl/blog/2012/01/linux-mpio-hitachi-vs-fujitsu/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 21:56:07 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[AMS2100]]></category>
		<category><![CDATA[DX80]]></category>
		<category><![CDATA[Eternus]]></category>
		<category><![CDATA[Fujitsu]]></category>
		<category><![CDATA[Hitachi]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=3665</guid>
		<description><![CDATA[Od jakiegoś czasu używam macierzy Hitachi AMS2100 i Fujitsu DX80 (pisałem wcześniej o niej w kontekście automatyzacji migawek). Obie połączone są wieloma ścieżkami FC do serwerów. Na serwerach (np. Red Hat Enterprise Linux Server release 5.5) są sterowniki dostarczane przez obu producentów. Wszystko działa dobrze, ale jest jeden szczegół, który różni sposób dostępu do zasobów. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hds.com/products/storage-systems/adaptable-modular-storage-2000-family/"><img alt="" src="http://www.hds.com/hdscorp/groups/public/documents/webcontent/hds_138382.jpg" class="alignleft" width="62" height="100" /></a><br />
Od jakiegoś czasu używam macierzy <a href="http://www.hds.com/products/storage-systems/adaptable-modular-storage-2000-family/">Hitachi AMS2100</a> i <a href="http://www.fujitsu.com/global/services/computing/storage/eternus/products/diskstorage/dx-entry/">Fujitsu DX80</a> (<a href="http://guzik.net.pl/blog/2011/05/czego-mozna-sie-spodziewac-po-expect-i-macierzy-fujitsu-eternus-dx80/">pisałem wcześniej o niej</a> w kontekście automatyzacji migawek). Obie połączone są wieloma ścieżkami FC do serwerów. Na serwerach (np. Red Hat Enterprise Linux Server release 5.5) są sterowniki dostarczane przez obu producentów. Wszystko działa dobrze, ale jest jeden szczegół, który różni sposób dostępu do zasobów. <span id="more-3665"></span><br />
Mianowicie wolumeny wystawione przez DX80 widoczne są jako jedno urządzenie w drzewie <code>/dev/</code>:</p>
<blockquote><p><code>/opt/FJSVmpd/bin/iompadm info</p>
<p>IOMP: vhba0<br />
Element:<br />
    DISK: ETERNUS_DXL-  010309-0000-0002 (sdf)<br />
    PATH:<br />
        sdf 0000:02:00.0 standby "online" 11, 11, 2<br />
        sdf 0000:02:00.0 active "online" 10, 10, 0<br />
        sdf 0000:03:00.0 fail "no such device or address" 11, 11, 2<br />
        sdf 0000:03:00.0 fail "no such device or address" 10, 10, 0</p>
<p>    DISK: ETERNUS_DXL-  010309-0000-0000 (sdg)<br />
    PATH:<br />
        sdg 0000:02:00.0 standby "online" 11, 11, 2<br />
        sdg 0000:02:00.0 active "online" 10, 10, 0<br />
        sdg 0000:03:00.0 fail "no such device or address" 11, 11, 2<br />
        sdg 0000:03:00.0 fail "no such device or address" 10, 10, 0</code></p></blockquote>
<p>Nie zwracajcie uwagi na fail na jednej karcie &#8211; chwilowo światłowody od strony macierzy wpięte są do jednego przełącznika. Ważne to, że mamy dwa wolumeny i dwa urządzenia <code>/dev/sdf</code> i <code>/dev/sdg</code>.<br />
Na AMS2100 wygląda to inaczej:</p>
<blockquote><p><code>/opt/DynamicLinkManager/bin/dlnkmgr view -drv<br />
PathID HDevName Device   LDEV<br />
000000 <strong>sddlmae</strong>  <strong>/dev/sdb</strong> AMS.83004182.0001<br />
000001 sddlmaf  /dev/sdc AMS.83004182.0002<br />
000002 sddlmag  /dev/sdd AMS.83004182.0003<br />
000003 sddlmah  /dev/sde AMS.83004182.0004<br />
000008 <strong>sddlmae</strong>  <strong>/dev/sdh</strong> AMS.83004182.0001<br />
000009 sddlmaf  /dev/sdi AMS.83004182.0002<br />
000010 sddlmag  /dev/sdj AMS.83004182.0003<br />
000011 sddlmah  /dev/sdk AMS.83004182.0004<br />
KAPL01001-I The HDLM command completed normally. Operation name = view, completion time = 2012/01/27 22:09:41</code></p></blockquote>
<p><a href="http://www.fujitsu.com/global/services/computing/storage/eternus/products/diskstorage/dx-entry/"><img alt="" src="http://www.fujitsu.com/img/STRSYS/system/11-photo_dx80s2.jpg" class="alignright" width="150" height="130" /></a>Mamy <code>/dev/sddlmae</code>, które to jest złączeniem <code>/dev/sdb</code> i <code>/dev/sdh</code> (analogicznie reszta). Możemy odwołać się do tego pierwszego urządzenia i wtedy mamy wielościeżkowość zapewnioną, ale równie dobrze możemy korzystać z pojedynczych urządzeń (naturalnie bez MPIO).<br />
Niestety domyślnie składowe urządzenia są widoczne. Jeśli podłączając zasób odwołujemy się bezpośrednio do nazwy <code>/dev/sddlmae</code> to nie ma problemu. Gorzej, gdy montujemy korzystając z <em>label</em>&#8216;i. Jako, że może istnieć wiele urządzeń tak samo nazwanych, system wybierze pierwsze i z niego skorzysta. W takim przypadku jak mój pierwsze oznacza to przez jedną ścieżkę (<code>fdisk -l 2>&#038;1|grep ^Disk</code>).</p>
<p>Swego czasu przy przenoszeniu danych z macierzy Fujitsu na Hitachi nie zwróciłem na to uwagi, a to spowodowało krótką niedostępność&#8230;</p>
<p>Gdyby się ktoś nad tym zastanawiał, to UUID niczego nie zmienia:</p>
<blockquote><p><code>/dev/sdb1: LABEL="database" UUID="e275b221-be9f-449b-a0ff-88de3a01799a" TYPE="ext3"<br />
/dev/sdh1: LABEL="database" UUID="e275b221-be9f-449b-a0ff-88de3a01799a" TYPE="ext3"<br />
/dev/sddlmae1: LABEL="database" UUID="e275b221-be9f-449b-a0ff-88de3a01799a" TYPE="ext3"</code></p></blockquote>
<p>Kto dopisze jak ukryć urządzenia składowe przez <code>udev</code>?</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2012/01/linux-mpio-hitachi-vs-fujitsu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trochę inny top</title>
		<link>http://guzik.net.pl/blog/2011/11/troche-inny-top/</link>
		<comments>http://guzik.net.pl/blog/2011/11/troche-inny-top/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 19:27:46 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cpumonitor]]></category>
		<category><![CDATA[top]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=3504</guid>
		<description><![CDATA[Gdzieś w sieci natknąłem się na projekt CPU Monitor autorstwa Dominika Giles&#8217;a. Wprawdzie jego rozwój zatrzymał się w 2010 roku na wersji 0.2 (6 listopada), ale i tak wygląda ładnie ;-) CPU Monitor łączy się z maszyną przez SSH i wykonuje proste komendy, żeby pobrać dane do wykresów. Pobieżnie przejrzałem źródła i widzę, że w [...]]]></description>
			<content:encoded><![CDATA[<p>Gdzieś w sieci natknąłem się na projekt <a href="http://dominicgiles.com/cpumonitor.html">CPU Monitor</a> autorstwa Dominika Giles&#8217;a. Wprawdzie jego rozwój zatrzymał się w 2010 roku na wersji 0.2 (6 listopada), ale i tak wygląda ładnie ;-)</p>
<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2011/11/cpumonitor.png"><img class="aligncenter size-medium wp-image-3506" title="cpumonitor" src="http://guzik.net.pl/blog/wp-content/uploads/2011/11/cpumonitor-300x164.png" alt="" width="300" height="164" /></a><br />
<span id="more-3504"></span><br />
CPU Monitor łączy się z maszyną przez SSH i wykonuje proste komendy, żeby pobrać dane do wykresów. Pobieżnie przejrzałem źródła i widzę, że w przypadku Linuksa (<code>LinuxMonitoredServer.java</code>) informacje o serwerze wyciągane są za pomocą:</p>
<blockquote><p><code>echo -n 'Number Of Processors: '; cat /proc/cpuinfo | grep processor | wc -l; cat /proc/cpuinfo | egrep -m 2 'cpu MHz|model name';cat /proc/meminfo | grep MemTotal:</code></p></blockquote>
<p>natomiast same dane pochodzą z:</p>
<blockquote><p><code>vmstat &lt;refreshRate&gt;</code></p></blockquote>
<p>Dla MacOS (<code>MacOSMonitoredServer.java</code>) jest to:</p>
<blockquote><p><code>system_profiler -detailLevel mini | egrep 'Number.Of.Processors:|Memory: |Processor.Name|Processor.Speed</code></p></blockquote>
<p>oraz</p>
<blockquote><p><code>iostat -w &lt;refreshRate&gt; -n 1</code></p></blockquote>
<p>a dla Solaris (<code>SolarisMonitoredServer.java</code>):</p>
<blockquote><p><code>echo -n 'Number Of Processors: '; /usr/sbin/psrinfo | wc -l;/usr/sbin/psrinfo -v | egrep 'MHz' | head -1; /usr/sbin/prtconf | grep Memory</code></p></blockquote>
<p>i</p>
<blockquote><p><code>iostat &lt;refreshRate&gt;</code></p></blockquote>
<p>W przyszłości ma również być dodana obsługa AIX i HP-UX. Zapowiadana była również możliwość monitorowania sieci.</p>
<p>Konfiguracja zawiera się w pliku XML i wygląda mniej więcej tak (za dokumentacją):</p>
<blockquote><p>&lt;?xml version = &#8217;1.0&#8242; encoding = &#8216;UTF-8&#8242;?&gt;<br />
&lt;CPUMonitor Title=&#8221;Compute Nodes&#8221; xmlns=&#8221;http://www.dominicgiles.com/cpumonitor&#8221;&gt;<br />
&lt;MonitoredNode&gt;<br />
&lt;HostName&gt;localhost&lt;/HostName&gt;<br />
&lt;Username&gt;root&lt;/Username&gt;<br />
&lt;Password&gt;mypassword&lt;/Password&gt;<br />
&lt;Comment&gt;My Computer&lt;/Comment&gt;<br />
&lt;/MonitoredNode&gt;<br />
&lt;/CPUMonitor&gt;</p></blockquote>
<p>Jedyny parametr, którym możemy sterować z poziomu programu to czas odświeżania. Proste i w miarę przejrzyste. Spróbujcie sami.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/11/troche-inny-top/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Numeromania</title>
		<link>http://guzik.net.pl/blog/2011/08/numeromania/</link>
		<comments>http://guzik.net.pl/blog/2011/08/numeromania/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 21:58:35 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=3225</guid>
		<description><![CDATA[Jakoś tak wyszło (późno) przez ten urlop&#8230; A OpenBSD 5.0 beta nadal nie mam :/]]></description>
			<content:encoded><![CDATA[<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2011/08/linux3.png"><img class="aligncenter size-medium wp-image-3226" title="linux3" src="http://guzik.net.pl/blog/wp-content/uploads/2011/08/linux3-300x66.png" alt="" width="300" height="66" /></a><br />
Jakoś tak wyszło (późno) przez ten urlop&#8230;</p>
<p>A <a href="http://guzik.net.pl/blog/2011/07/openbsd-5-0/">OpenBSD 5.0</a> beta nadal nie mam :/</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/08/numeromania/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Brak miejsca, by zwiększyć dostępne miejsce</title>
		<link>http://guzik.net.pl/blog/2011/07/brak-miejsca-by-zwiekszyc-dostepne-miejsce/</link>
		<comments>http://guzik.net.pl/blog/2011/07/brak-miejsca-by-zwiekszyc-dostepne-miejsce/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 20:33:54 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[LVM]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=3068</guid>
		<description><![CDATA[Pewnego razu w piwnicy&#8230; localhost ~ # df -h Filesystem            Size  Used Avail Use% Mounted on rootfs                 63G   63G     0 100% / /dev/VG1/root          63G   63G     0 100% / Auć! Brak miejsca. Na szczęście jest LVM, damy radę! localhost ~ # lvresize -L +32G VG1/root Extending logical volume root to 96.00 GiB /etc/lvm/backup/VG1.tmp: write error failed: [...]]]></description>
			<content:encoded><![CDATA[<p>Pewnego razu w piwnicy&#8230;</p>
<blockquote><p><code>localhost ~ # df -h<br />
Filesystem            Size  Used Avail Use% Mounted on<br />
rootfs                 63G   63G     0 100% /<br />
/dev/VG1/root          63G   63G     0 100% /</code></p></blockquote>
<p>Auć! Brak miejsca. Na szczęście jest LVM, damy radę! <span id="more-3068"></span></p>
<blockquote><p><code>localhost ~ # lvresize -L +32G VG1/root<br />
Extending logical volume root to 96.00 GiB<br />
/etc/lvm/backup/VG1.tmp: <strong>write error failed: No space left on device</strong><br />
Backup of volume group VG1 metadata failed.<br />
Logical volume root successfully resized<br />
/etc/lvm/cache/.cache.tmp: <strong>write error failed: No space left on device</strong></code></p></blockquote>
<p>To, że nie ma miejsca, to wiem. Właśnie próbuję rozwiązać ten problem.<br />
A co z wolumenem?</p>
<blockquote><p><code>localhost ~ # lvdisplay<br />
--- Logical volume ---<br />
LV Name                /dev/VG1/root<br />
VG Name                VG1<br />
LV UUID                lXGuyU-X31a-FFLK-wrAg-Uhm6-civD-HEqQzo<br />
LV Write Access        read/write<br />
LV Status              available<br />
# open                 1<br />
LV Size                96.00 GiB<br />
Current LE             24576<br />
Segments               1<br />
Allocation             inherit<br />
Read ahead sectors     auto<br />
- currently set to     256<br />
Block device           254:0</code></p>
<p><code> </code><code>/etc/lvm/cache/.cache.tmp: <strong>write error failed: No space left on device</strong></code></p></blockquote>
<p>Znów problem braku miejsca przy wyświetlaniu informacji? Tylko spokój może nas uratować!</p>
<p>Pod koniec zeszłego roku, na ostatnim z MLUGów mówiłem o LVM. Z racji ograniczeń czasowych i podstawowego poziomu przedstawienia tematu nie można było o wszystkim powiedzieć. A zauważyłem na forach, że problem z miejscem, który powyżej przytoczyłem zdarza się od czasu do czasu.<br />
Otóż, komunikat dotyczy <span style="text-decoration: underline;"><code>systemu plików</code>,</span> nie LVM. Ale to LVM go zgłasza, bo próbuje zapisać swoje informacje w <code>/etc/lvm/cache/.cache</code> (jest to plik tekstowy, można go przestudiować, ale nie polecam ręcznej edycji!). W gruncie rzeczy może go nie być czy jak w tym przypadku może się nie zapisać. Straty nie będzie. Wprawdzie niektóre narzędzia z niego korzystają dla przyspieszenia, ale da się go odtworzyć na podstawie istniejących wolumenów.<br />
Po zwiększeniu systemu plików (w moim przypadku <code>resize2fs</code>), przy kolejnym wywołaniu <code>vgscan</code> (ręcznie lub przy restarcie systemu), plik zostanie zapisany z aktualnymi informacjami.<br />
Zmiany w pliku są robione &#8216;z głową&#8217; &#8211; czyli pierw kopiowany jest do <code>/etc/lvm/cache/.cache.tmp</code>, a dopiero potem zmieniany. I właśnie w przypadku braku miejsca w systemie plików ta kopia nie zostanie zapisana.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/07/brak-miejsca-by-zwiekszyc-dostepne-miejsce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bweb i Gentoo</title>
		<link>http://guzik.net.pl/blog/2011/06/bweb-i-gentoo/</link>
		<comments>http://guzik.net.pl/blog/2011/06/bweb-i-gentoo/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 20:14:11 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bacula]]></category>
		<category><![CDATA[Bweb]]></category>
		<category><![CDATA[Gentoo]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2988</guid>
		<description><![CDATA[Nawiązując do artykułu &#8222;Instalacja i konfiguracja narzędzia Bacula Bweb&#8221; opublikowanego w serwisie Bacula.pl wskazówki jak to zrobić w Gentoo Linux. Moje środowisko: System operacyjny: GNU/Linux Dystrybucja: Gentoo Base System release 2.0.2 Serwer WWW: Lighttpd Bacula: 5.0.3 (bacula-gui) Perl: 5.12.3 Przygotowanie środowiska Zakładam, że coś tam w systemie już jest, więc o np. Perl nie piszę. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2011/06/Bweb-main.png"><img class="size-thumbnail wp-image-2989 alignright" title="Bweb-main" src="http://guzik.net.pl/blog/wp-content/uploads/2011/06/Bweb-main-150x150.png" alt="" width="150" height="150" /></a>Nawiązując do artykułu &#8222;<a href="http://www.bacula.pl/artykul/47/instalacja-i-konfiguracja-narzedzia-bacula-bweb/">Instalacja i konfiguracja narzędzia Bacula Bweb</a>&#8221; opublikowanego w serwisie Bacula.pl wskazówki jak to zrobić w Gentoo Linux.</p>
<p>Moje środowisko:</p>
<ul>
<li>System operacyjny: <strong>GNU/Linux</strong></li>
<li>Dystrybucja: <strong>Gentoo Base System release 2.0.2</strong></li>
<li>Serwer WWW: <strong>Lighttpd</strong></li>
<li>Bacula: <strong>5.0.3 (bacula-gui)</strong></li>
<li>Perl: <strong>5.12.3</strong></li>
</ul>
<p><span id="more-2988"></span></p>
<ol>
<li>Przygotowanie środowiska</li>
<p>Zakładam, że coś tam w systemie już jest, więc o np. Perl nie piszę. Z dodatków będzie:</p>
<p><code><a href="http://packages.gentoo.org/package/dev-perl/GD">dev-perl/GD</a> <a href="http://packages.gentoo.org/package/dev-perl/GDGraph">dev-perl/GDGraph</a> <a href="http://packages.gentoo.org/package/dev-perl/HTML-Template">dev-perl/HTML-Template</a> <a href="http://packages.gentoo.org/package/perl-core/CGI">perl-core/CGI</a> <a href="http://packages.gentoo.org/package/dev-perl/Expect">dev-perl/Expect</a> <a href="http://packages.gentoo.org/package/dev-perl/Time-modules">dev-perl/Time-modules</a> <a href="http://packages.gentoo.org/package/dev-perl/Date-Calc">dev-perl/Date-Calc</a></code></p>
<p>Do tego flagi:</p>
<p><code>dev-perl/GD gif jpeg png truetype<br />
media-libs/gd truetype</code></p>
<li>Instalacja Bweb</li>
<p>Jeśli mamy już działające środowisko Bacula (<em>director</em>, <em>storage</em> i <em>client</em>), wystarczy pobrać paczkę <a href="https://sourceforge.net/projects/bacula/files/bacula/5.0.3/bacula-gui-5.0.3.tar.gz/download">bacula-gui</a> (na chwilę obecną 5.0.3) i z niej wykonać instalację Bweb.<br />
Po rozpakowaniu (<code>tar xzvf bacula-gui-5.0.3.tar.gz -C &lt;path&gt;</code>) zalecam przejrzenie pliku <code>&lt;path&gt;/bweb/INSTALL</code>. W skrócie instalacja wygląda jak poniżej (przy czym na początku tylko testy środowiska, więc nie jest to wymagane).</p>
<p><code>cd &lt;path&gt;bweb/lib<br />
../cgi/bweb.pl<br />
../cgi/bgraph.pl</code></p>
<p>Dalej modyfikujemy bazę :</p>
<p><code>cd &lt;path&gt;bweb<br />
mysql bacula &lt; script/bweb-mysql.sql</code></p>
<li>Uruchomienie</li>
<p>Na koniec uruchamiamy lighttpd (musi być wcześniej zainstalowany) za pomocą skryptu <code>./script/starthttp</code> i łączymy się z maszyną dowolną przeglądarką na porcie 9180 lub modyfikujemy konfigurację lighttpd dodając stosowne dyrektywy z pliku <code>script/httpd.conf</code><br />
Niezależnie od tego, którą drogę wybierzemy, pozostaje jeszcze skonfigurowanie połączeń z bazą. Albo poprzez edycję pliku <code>bweb.conf</code>, albo na stronie Bweb.</ol>
<div id="attachment_2991" class="wp-caption aligncenter" style="width: 310px"><a href="http://guzik.net.pl/blog/wp-content/uploads/2011/06/Bweb-stat.png"><img src="http://guzik.net.pl/blog/wp-content/uploads/2011/06/Bweb-stat-300x138.png" alt="" title="Bweb-stat" width="300" height="138" class="size-medium wp-image-2991" /></a><p class="wp-caption-text">Statystyki do raportu tygodniowego</p></div>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/06/bweb-i-gentoo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Przeszukiwanie SCSI</title>
		<link>http://guzik.net.pl/blog/2011/05/przeszukiwanie-scsi/</link>
		<comments>http://guzik.net.pl/blog/2011/05/przeszukiwanie-scsi/#comments</comments>
		<pubDate>Wed, 11 May 2011 15:25:19 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[FC]]></category>
		<category><![CDATA[Fibre Channel]]></category>
		<category><![CDATA[SCSI]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2928</guid>
		<description><![CDATA[Czasami w rozrastających się w niekontrolowany sposób sieciach lub po wejściu w nowe środowisko gubimy się w połączeniach. Zdecydowanie dobrze w takich sytuacjach zapoznać się z dokumentacją / schematami sieci. Jeśli takowych nie ma &#8211; zacząć ją tworzyć. To naprawdę pomaga. Wystarczy ołówek i kartka papieru, ew. Dia, Visio czy jakiekolwiek inne narzędzie informatyczne usprawniające [...]]]></description>
			<content:encoded><![CDATA[<p>Czasami w rozrastających się w niekontrolowany sposób sieciach lub po wejściu w nowe środowisko gubimy się w połączeniach. Zdecydowanie dobrze w takich sytuacjach zapoznać się z dokumentacją / schematami sieci. Jeśli takowych nie ma &#8211; zacząć ją tworzyć. To naprawdę pomaga. Wystarczy ołówek i kartka papieru, ew. Dia, Visio czy jakiekolwiek inne narzędzie informatyczne usprawniające ten proces. Zbyt ładne to i kolorowe dla prawdziwego BOFH? Mimo to zachęcam &#8211; ułatwcie sobie życie i innym.</p>
<p>Poniżej dwa odnośniki z krótkimi informacjami jak znaleźć nowe urządzenia SCSI i ich WWN. Można od tego zacząć inwentaryzację.</p>
<ul>
<li><a href="http://asksysadmin.com/index.php/linux/scanning-scsi-bus-and-hba-devices-in-linux/">Scanning SCSI Bus and HBA Devices in Linux</a></li>
<li><a href="http://www.cyberciti.biz/faq/linux-find-fibre-channel-device-information/">Linux Find FC ID (WWN) of a disk/LUN</a></li>
</ul>
<p>Dla kart QLogic i Emulex WWPN można znaleźć w informacjach z <code>/proc/scsi/&lt;moduł&gt;/&lt;id&gt;</code>, np. dla Qlogic QLA2312 może być to <code>/proc/scsi/qla2xxx/2</code> i sekcja <code>SCSI Device Information</code>.<br />
A jeśli używamy sysfs, to szukać musimy w np. <code>/sys/class/scsi_host/host5/device/fc_host\:host5/port_name</code></p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/05/przeszukiwanie-scsi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux &amp; Wi-Fi &#8211; tym razem mPCIe</title>
		<link>http://guzik.net.pl/blog/2011/05/linux-wi-fi-tym-razem-mpcie/</link>
		<comments>http://guzik.net.pl/blog/2011/05/linux-wi-fi-tym-razem-mpcie/#comments</comments>
		<pubDate>Thu, 05 May 2011 21:48:35 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[3945ABG]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Realtek]]></category>
		<category><![CDATA[RTL8187SE]]></category>
		<category><![CDATA[WiFI]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2875</guid>
		<description><![CDATA[Po testach kart na USB wziąłem się za miniPCI express. Pierwsza to Intel 3945ABG: 02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02) Subsystem: Intel Corporation Device 1021 Flags: bus master, fast devsel, latency 0, IRQ 46 Memory at dfc00000 (32-bit, non-prefetchable) [size=4K] Capabilities: [c8] Power Management version 2 Capabilities: [d0] MSI: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.intel.com/products/wireless/prowireless_mobile.htm"><img class="alignright" src="http://www.intel.com/products/wireless/pix/ProWirless3945ABG.jpg" alt="" width="75" height="128" /></a><a href="http://guzik.net.pl/blog/2010/10/linux-wi-fi/">Po testach kart na USB</a> wziąłem się za miniPCI express.</p>
<p>Pierwsza to <a href="http://www.intel.com/products/wireless/prowireless_mobile.htm">Intel 3945ABG</a>:</p>
<blockquote><p><code>02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)<br />
Subsystem: Intel Corporation Device 1021<br />
Flags: bus master, fast devsel, latency 0, IRQ 46<br />
Memory at dfc00000 (32-bit, non-prefetchable) [size=4K]<br />
Capabilities: [c8] Power Management version 2<br />
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+<br />
Capabilities: [e0] Express Legacy Endpoint, MSI 00<br />
Capabilities: [100] Advanced Error Reporting<br />
Capabilities: [140] Device Serial Number 00-18-de-ff-ff-94-de-77<br />
Kernel driver in use: iwl3945<br />
Kernel modules: iwl3945</code></p></blockquote>
<p><span id="more-2875"></span><br />
Druga &#8211; Realtek RTL8187SE (chyba MSI)</p>
<blockquote><p><code>02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8187SE Wireless LAN Controller (rev 22)<br />
Subsystem: Micro-Star International Co., Ltd. Device 6894<br />
Flags: bus master, fast devsel, latency 0, IRQ 17<br />
I/O ports at d000 [size=256]<br />
Memory at dfc00000 (32-bit, non-prefetchable) [size=16K]<br />
Capabilities: [40] Power Management version 3<br />
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+<br />
Capabilities: [70] Express Legacy Endpoint, MSI 00<br />
Capabilities: [100] Advanced Error Reporting<br />
Capabilities: [140] Virtual Channel <!--?--><br />
Capabilities: [160] Device Serial Number 00-00-8e-93-c9-92-1d-00<br />
Kernel driver in use: r8180<br />
Kernel modules: r8187se</code></p></blockquote>
<p>Najświeższe jądro (gentoo-sources). Tą drugą obsługuje mocno eksperymentalny moduł (w <em>staging drivers</em> od 2.6.29).</p>
<p><em>Firmware</em> dla karty Intel&#8217;a do ściągnięcia z:</p>
<ul>
<li><a href="http://intellinuxwireless.org/?n=Downloads">Intel Wireless</a></li>
</ul>
<p>Do Realtek&#8217;a nie pamiętam czy coś pobierałem, a maszyna z tą kartą gdzieś mi się zawieruszyła pod biurkiem :&gt; Niemniej polecam odwiedzić:</p>
<ul>
<li><a href="http://wireless.kernel.org/en/users/Drivers/rtl8187">Linux Wireless: rtl8187</a></li>
<li><a href="http://rtl-wifi.sourceforge.net/wiki/Main_Page">Realtek Linux wireless driver</a></li>
</ul>
<p>W kolejce na biurku czekają jeszcze (opisy sprzedawców z Allegro):</p>
<ul>
<li>Broadcom WIFI DO HP COMPAQ MiniPCI-E WLAN 54Mbit</li>
<li>INTEL 5300 Wireless LAN Half Mini PCI-E 533AN_HMW</li>
<li>Half Mini Pci-e WLAN Card For Intel 512AN WiFi 300</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/05/linux-wi-fi-tym-razem-mpcie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gentoo: własne poprawki oprogramowania</title>
		<link>http://guzik.net.pl/blog/2011/03/gentoo-wlasne-poprawki-oprogramowania/</link>
		<comments>http://guzik.net.pl/blog/2011/03/gentoo-wlasne-poprawki-oprogramowania/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 22:18:27 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2801</guid>
		<description><![CDATA[Niniejszym wpisem chciałbym pokazać w jaki sposób samodzielnie dodać poprawki do oprogramowania (z drzewa portage) i nie nadpisać ich w czasie kolejnej synchronizacji. Wszystko na przykładzie zmian do dhcpcd &#8211; czyli niejako dwie pieczenie na jednym ogniu. Zacznę od dhcpcd, o którym pisałem wcześniej w kontekście ipv4ll (aka. zeroconf). Aktualna wersja dostępna dla Gentoo &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gentoo.org/"><img class="alignleft" src="http://www.gentoo.org/images/gentoo-logo.svg" alt="" width="214" height="224" /></a>Niniejszym wpisem chciałbym pokazać w jaki sposób samodzielnie dodać poprawki do oprogramowania (z drzewa <em>portage</em>) i nie nadpisać ich w czasie kolejnej synchronizacji. Wszystko na przykładzie zmian do dhcpcd &#8211; czyli niejako dwie pieczenie na jednym ogniu.</p>
<p>Zacznę od dhcpcd, o którym <a href="http://guzik.net.pl/blog/2010/09/siec-dhcp-vs-apipa/">pisałem wcześniej w kontekście ipv4ll</a> (aka. zeroconf). Aktualna wersja dostępna dla Gentoo &#8211; 5.2.10 nie wspiera opcji <code>timeout</code> dla interfejsu, jedynie globalnie (definiowane w <code>dhcpcd.conf</code>). Po <a href="http://roy.marples.name/archives/dhcpcd-discuss/2011/0318.html">dyskusji z Royem Marples</a> <a href="http://roy.marples.name/projects/dhcpcd/changeset/142fb0b299acdc7011347e8309c0333e43907ee4">zostało to poprawione</a>, jednakże zanim trafi do stabilnej wersji, a ta do drzewa <em>portage</em>, trochę czasu minie.<br />
<span id="more-2801"></span><br />
Poprawki mamy, możemy więc skompilować oprogramowanie ze źródeł, zainstalować na miejsce aktualnego i używać do czasu aktualizacji. Można też &#8211; bardziej elegancko, przygotować własny <em>ebuild</em> i zaktualizować program korzystając z emerge. W przypadku wspomnianego <code>net-misc/dhcpcd</code> poprawka może wyglądać tak (zmiana <code>src_unpack</code>) w pliku ebuild, który dla czytelności możemy oznaczyć kolejnym numerkiem, np. <code>dhcpcd-5.2.11-r1.ebuild</code>):</p>
<blockquote><p><code>src_unpack() {<br />
unpack ${A}<br />
cd "${S}"</code></p>
<p><code>if ! use zeroconf; then<br />
elog "Disabling zeroconf support"<br />
{<br />
echo<br />
echo "# dhcpcd ebuild requested no zeroconf"<br />
echo "noipv4ll"<br />
} &gt;&gt; dhcpcd.conf<br />
fi</code></p>
<p><code># patches go here...</code><br />
<code>epatch "${FILESDIR}"/dhcpcd-5.2.11-tmout.diff<br />
}<br />
</code></p></blockquote>
<p>A plik <code>dhcpcd-5.2.11-tmout.diff</code> może mieć taką postać:</p>
<blockquote><p><code>--- /tmp/dhcpcd-5.2.11/dhcpcd.c 2011-02-04 15:56:03.000000000 +0100<br />
+++ /tmp/dhcpcd.c       2011-03-30 09:02:44.000000000 +0200<br />
@@ -2011,17 +2011,20 @@ main(int argc, char **argv)<br />
}<br />
}<br />
}<br />
+               if (options &amp; DHCPCD_MASTER)<br />
+                       i = if_options-&gt;timeout;<br />
+               else<br />
+                       i = ifaces-&gt;state-&gt;options-&gt;timeout;<br />
if (opt == 0 &amp;&amp;<br />
options &amp; DHCPCD_LINK &amp;&amp;<br />
!(options &amp; DHCPCD_WAITIP))<br />
{<br />
syslog(LOG_WARNING, "no interfaces have a carrier");<br />
daemonise();<br />
-               } else if (if_options-&gt;timeout &gt; 0) {<br />
+               } else if (i &gt; 0) {<br />
if (options &amp; DHCPCD_IPV4LL)<br />
options |= DHCPCD_TIMEOUT_IPV4LL;<br />
-                       add_timeout_sec(if_options-&gt;timeout,<br />
-                           handle_exit_timeout, NULL);<br />
+                       add_timeout_sec(i, handle_exit_timeout, NULL);<br />
}<br />
}<br />
free_options(if_options);<br />
</code></p></blockquote>
<p>Pliki można ściągnąć z <a href="http://bugs.gentoo.org/show_bug.cgi?id=361233">mojego zgłoszenia w Gentoo&#8217;s Bugzilla</a>.</p>
<p>Jeśli zostawimy to wszystko w oryginalnych katalogach (w <code>/usr/portage</code>) podczas kolejnej synchronizacji zostanie usunięte. Jeżeli więc poprawki nie mają charakteru okazjonalnego, możemy zabezpieczyć się kopiując wybraną gałąź drzewa w osobne miejsce i konfigurując zmienna <code>PORTDIR_OVERLAY</code> w <code>/etc/make.conf</code> (musi wskazywać na nasze drzewo). Pamiętać należy, że struktura naszego własnego drzewa musi być podobna do oryginalnego.</p>
<blockquote><p><code>localhost ~ # mkdir -p /usr/local/portage/net-misc<br />
localhost ~ # cp -rp /usr/portage/net-misc/dhcpcd /usr/local/portage/net-misc/<br />
localhost ~ # echo "PORTDIR_OVERLAY=\"/root/portage\"" &gt;&gt; /etc/make.conf</code></p></blockquote>
<p>Po takim zabiegu widać będzie już nasze własne drzewo przy kompilacji pakietu:</p>
<blockquote><p><code>localhost ~ # emerge -pv net-misc/dhcpcd</code></p>
<p><code>These are the packages that would be merged, in order:</code><br />
<code>Calculating dependencies... done!<br />
[ebuild  N    ] net-misc/dhcpcd-5.2.10-r3  USE="zeroconf" 0 kB [1]</code></p>
<p><code>Total: 1 package (1 new), Size of downloads: 0 kB<br />
Portage tree and overlays:<br />
[0] /usr/portage<br />
[1] /usr/local/portage</code></p></blockquote>
<p>W przypadku aktualizacji wygląda to tak:</p>
<blockquote><p><code>localhost dhcpcd # emerge -pv net-misc/dhcpcd</code></p>
<p><code>These are the packages that would be merged, in order:</code></p>
<p><code>Calculating dependencies... done!<br />
[ebuild     U ] net-misc/dhcpcd-5.2.10-r3 [5.2.10-r2] USE="zeroconf" 0 kB [0=&gt;1]</code></p>
<p><code>Total: 1 package (1 upgrade), Size of downloads: 0 kB<br />
Portage tree and overlays:<br />
[0] /usr/portage<br />
[1] /root/portage</code></p></blockquote>
<p>Przeczytaj więcej:</p>
<ul>
<li>HOWTO: Installing 3rd Party Ebuilds [http://www.gentoo-wiki.info/HOWTO_Installing_3rd_Party_Ebuilds]</li>
<li>Ebuild HOWTO [http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&amp;chap=1]</li>
<li>HOWTO: Local Rsync Mirror http://www.gentoo-wiki.info/HOWTO_Local_Rsync_Mirror</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/03/gentoo-wlasne-poprawki-oprogramowania/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aktualizacja Gentoo (nie taka zwyczajna)</title>
		<link>http://guzik.net.pl/blog/2011/03/aktualizacja-gentoo-nie-taka-zwyczajna/</link>
		<comments>http://guzik.net.pl/blog/2011/03/aktualizacja-gentoo-nie-taka-zwyczajna/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 20:54:09 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2789</guid>
		<description><![CDATA[Q: Czy trudno zaktualizować Gentoo? A: W zasadzie to nie, wystarczy synchronizacja drzewa portage (emerge --sync), sprawdzenie co się zmieniło (emerge -pvuND world) i wybranie pakietów, które nas interesują do aktualizacji (emerge -u &#60;pakiet&#62;). Q: A co jeśli nie robimy tego na bieżąco? A: No może być różnica w EAPI (Ebuild Application Programming Interface), ale [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gentoo.org/"><img class="alignright" src="http://www.gentoo.org/images/gentoo-logo.svg" alt="" width="214" height="224" /></a>Q: <strong>Czy trudno zaktualizować Gentoo?</strong><br />
A: W zasadzie to nie, wystarczy synchronizacja drzewa <em>portage</em> (<code>emerge --sync</code>), sprawdzenie co się zmieniło (<code>emerge -pvuND world</code>) i wybranie pakietów, które nas interesują do aktualizacji (<code>emerge -u &lt;pakiet&gt;</code>).</p>
<p>Q: <strong>A co jeśli nie robimy tego na bieżąco?</strong><br />
A: No może być różnica w EAPI (<em>Ebuild Application Programming Interface</em>), ale zazwyczaj aktualizacja sys-apps/portage wcześniej rozwiąże sprawę.</p>
<p>Q: <strong>A co jeśli nie aktualizowaliśmy dość długo?</strong><br />
A: Jak wyżej. W przypadku problemów można spróbować przebudować sys-apps/portage bez zależności (<code>emerge --nodep portage</code>), to samo zrobić z dev-lang/python, a następnie przebudować &#8216;normalnie&#8217; oba te pakiety.</p>
<p>Q: <strong>A co jeśli bardzo, bardzo mocno zapuściliśmy nasz system?</strong><span id="more-2789"></span><br />
A: Huh. Czeka nas droga przez mękę. Zadajmy sobie pytanie czy w ogóle chcemy to robić. Jeśli to system wewnętrzny, może warto kierować się zasadą g&#8230; (jak działa i nie śmierdzi, to nie ruszaj)? Gorzej jak chcemy coś doinstalować, źródeł starych wersji nie ma, drzewo aktualne wymaga EAPI &gt;= 3. Wtedy wyglądać to może tak:</p>
<blockquote><p><code>dolly ~ # cat /etc/gentoo-release<br />
Gentoo Base System release 1.12.9<br />
dolly ~ # uname -a<br />
Linux dolly 2.6.20-gentoo #1 PREEMPT Thu Feb 8 10:12:04 CET 2007 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux<br />
dolly ~ # emerge --info<br />
Portage 2.1.2-r9 (default/linux/x86/10.0, gcc-4.1.2, glibc-2.5-r0, 2.6.20-gentoo i686)<br />
=================================================================<br />
System uname: 2.6.20-gentoo i686 Pentium III (Coppermine)<br />
Gentoo Base System release 1.12.9<br />
dolly ~ # python -V<br />
Python 2.4.3</code></p></blockquote>
<p>No cóż. Ja ciągle wierzę, że da się z tego wybrnąć (choć walczę już dość długo). Po pierwsze profil, który był kiedyś już dawno jest zapomniany.</p>
<blockquote><p><code>dolly ~ # eselect profile list<br />
Available profile symlink targets:<br />
[1]   default/linux/x86/10.0 *<br />
dolly ~ # emerge portage<br />
Calculating dependencies \<br />
!!! All ebuilds that could satisfy "portage" have been masked.<br />
!!! One of the following masked packages is required to complete your request:<br />
- sys-apps/portage-2.1.6.7 (masked by: profile)<br />
- sys-apps/portage-9999 (masked by: required EAPI 2, supported EAPI 0)<br />
- sys-apps/portage-2.1.8.3 (masked by: required EAPI 2, supported EAPI 0)<br />
- sys-apps/portage-2.2.0_alpha26 (masked by: required EAPI 2, supported EAPI 0)<br />
- sys-apps/portage-2.1.9.25 (masked by: required EAPI 2, supported EAPI 0)<br />
- sys-apps/portage-2.1.6.13 (masked by: required EAPI 1, supported EAPI 0)<br />
- sys-apps/portage-2.1.9.42 (masked by: required EAPI 2, supported EAPI 0)<br />
For more information, see MASKED PACKAGES section in the emerge man page or<br />
refer to the Gentoo Handbook.<br />
</code></p></blockquote>
<p>Spróbujmy zatem innego (to da się zrobić tylko ręcznie):</p>
<blockquote><p><code>dolly ~ # rm /etc/make.profile<br />
dolly ~ # ln -s /usr/portage/profiles/default/linux/x86/2008.0 /etc/make.profile<br />
dolly ~ # emerge -pv portage<br />
!!! Your current profile is deprecated and not supported anymore.<br />
!!! Please upgrade to the following profile if possible:<br />
default/linux/x86/10.0<br />
To upgrade do the following steps:<br />
# Check 'eselect profile list'.<br />
# Find the number that corresponds with the default/linux/x86/10.0 profile.<br />
# Use 'eselect profile set ' to set a new /etc/make.profile symlink.<br />
#<br />
# Reference: http://www.gentoo.org/doc/en/gentoo-upgrading.xml<br />
# See: "General instructions" in Section 3. "Profile updating instructions"<br />
These are the packages that would be merged, in order:<br />
Calculating dependencies |<br />
!!! All ebuilds that could satisfy "&gt;=app-admin/eselect-python-20091230" have been masked.<br />
!!! One of the following masked packages is required to complete your request:<br />
- app-admin/eselect-python-20100321 (masked by: required EAPI 1, supported EAPI 0)<br />
- app-admin/eselect-python-20091230 (masked by: required EAPI 1, supported EAPI 0)<br />
- app-admin/eselect-python-99999999 (masked by: required EAPI 2, supported EAPI 0)<br />
For more information, see MASKED PACKAGES section in the emerge man page or<br />
refer to the Gentoo Handbook.<br />
(dependency required by "sys-apps/portage-2.1.6.7" [ebuild])<br />
</code></p></blockquote>
<p>Jesteśmy już bliżej, ale nadal się nie udaje. To może python bez zależności?</p>
<blockquote><p><code>dolly ~ # emerge --nodep python<br />
* IMPORTANT: 5 news items need reading for repository 'gentoo'.<br />
* Use eselect news to read news items.<br />
&gt;&gt;&gt; Emerging (1 of 1) dev-lang/python-2.6.6-r2<br />
* Python-2.6.6.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                                                                                       [ ok ]<br />
* python-gentoo-patches-2.6.6-r2.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                                                                     [ ok ]<br />
/usr/portage/eclass/python.eclass: line 63: syntax error in conditional expression: unexpected token `('<br />
/usr/portage/eclass/python.eclass: line 63: syntax error near `^(('<br />
/usr/portage/eclass/python.eclass: line 63: `   if [[ "${version_components_groups}" =~ ^((\!)?[[:alnum:]_-]+\?\ )?${version_components_group_regex}(\ ${version_components_group_regex})?$ ]]; then'<br />
*<br />
* ERROR: dev-lang/python-2.6.6-r2 failed.<br />
* Call stack:<br />
*                ebuild.sh, line 1867:  Called source '/usr/portage/dev-lang/python/python-2.6.6-r2.ebuild'<br />
*   python-2.6.6-r2.ebuild, line    8:  Called inherit 'autotools' 'eutils' 'flag-o-matic' 'multilib' 'python' 'toolchain-funcs'<br />
*                ebuild.sh, line 1224:  Called die<br />
* The specific snippet of code:<br />
*              qa_source "$location" || die "died sourcing $location in inherit()"<br />
*  The die message:<br />
*   died sourcing /usr/portage/eclass/python.eclass in inherit()<br />
*<br />
* If you need support, post the topmost build error, and the call stack if relevant.<br />
* A complete build log is located at '/var/tmp/portage/dev-lang/python-2.6.6-r2/temp/build.log'.<br />
* The ebuild environment file is located at '/var/tmp/portage/dev-lang/python-2.6.6-r2/temp/die.env'.<br />
*<br />
&gt;&gt;&gt; Failed to emerge dev-lang/python-2.6.6-r2, Log file:<br />
&gt;&gt;&gt;  '/var/tmp/portage/dev-lang/python-2.6.6-r2/temp/build.log'<br />
</code></p></blockquote>
<p>E-e! To też nie zadziała. A jakby tak przenieść portage ze świeższego systemu &#8211; to nie jest trudne.</p>
<blockquote><p><code>tar cvf /tmp/portage.tar `qlist sys-apps/portage`</code></p></blockquote>
<p>Takie archiwum rozpakowujemy na docelowej maszynie i walczymy dalej.</p>
<p>Niestety w moim przypadku nie powiodło się. To może dorzucimy python&#8217;a? Przenosimy w sposób jak powyżej, dla bezpieczeństwa rozpakować możemy gdzieś na boku, w <code>$PATH</code> wstawiamy ścieżkę do katalogu z binariami, dodatkowo ustawiamy zmienną <a href="http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html#AEN80"><code>$LD_LIBRARY_PATH</code></a> na katalog <code>lib/</code> i mamy świeższe oprogramowanie do dyspozycji.<br />
No już prawie witam się z gąską&#8230; Dalej klapa. Ale broni nie złożę tak łatwo!</p>
<p>Drogi czytelniku! Jeśli miałeś podobne problemy i je rozwiązałeś, a jednocześnie chcesz mi popsuć krótki weekend, wpisz proszę swoje uwagi w komentarzu poniżej.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/03/aktualizacja-gentoo-nie-taka-zwyczajna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ile waży paczka</title>
		<link>http://guzik.net.pl/blog/2011/02/ile-wazy-paczka/</link>
		<comments>http://guzik.net.pl/blog/2011/02/ile-wazy-paczka/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 22:12:42 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[portage-utils]]></category>
		<category><![CDATA[qlist]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2669</guid>
		<description><![CDATA[Czasem mam potrzebę zrobienia małego systemu (w domyśle Gentoo Linux), albo okrojenia istniejącego. Testuję wtedy różne flagi USE (głównie dorzucam minimal jeśli to nie ogranicza zbyt funkcjonalności programu), często dodaję FEATURES="nodoc noinfo noman" do kompilacji (w /etc/make.conf). Niemniej mniewam czasem wątpliwości czy po wyrzuceniu jakiegoś pakietu zyskam żądaną ilość wolnego miejsca. Pomocne w takim przypadku [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gentoo.org/"><img class="alignright" src="http://www.gentoo.org/images/gtop-www.jpg" alt="" width="190" height="124" /></a>Czasem mam potrzebę zrobienia małego systemu (w domyśle <a title="http://www.gentoo.org/" href="http://www.gentoo.org/">Gentoo Linux</a>), albo okrojenia istniejącego. Testuję wtedy różne flagi <code>USE</code> (głównie dorzucam <code>minimal</code> jeśli to nie ogranicza zbyt funkcjonalności programu), często dodaję <code>FEATURES="nodoc noinfo noman"</code> do kompilacji (w <code>/etc/make.conf</code>). Niemniej mniewam czasem wątpliwości czy po wyrzuceniu jakiegoś pakietu zyskam żądaną ilość wolnego miejsca. Pomocne w takim przypadku może być narzędzie qsize (z <a title="http://www.gentoo.org/doc/en/portage-utils.xml" href="http://www.gentoo.org/doc/en/portage-utils.xml">portage-utils</a>), np.:</p>
<blockquote><p><code>localhost ~ # qsize -b openssh nano<br />
net-misc/openssh-5.8_p1: 21 files, 15 non-files, 2077068 bytes<br />
app-editors/nano-2.2.5: 83 files, 79 non-files, 347806 bytes</code></p></blockquote>
<p><span id="more-2669"></span><br />
To samo możemy uzyskać następującym łamańcem:</p>
<blockquote><p><code>ls -l `qlist openssh` 2&gt;/dev/null|awk '{SUM += $5} END {print SUM}'</code></p></blockquote>
<p>Co to robi? Korzystając z <code>qlist</code> (również z portage-utils) wyświetlam listę plików przynależnych do danego pakietu, a następnie ich rozmiar (piąta kolumna zwracana przez <code>ls -l</code>) sumuję za pomocą <code>awk</code>.<br />
To <code>2&gt;/dev/null</code> jest niezbędne jak ktoś ręcznie usuwa pliki. <code>qlist</code> o tym nie wie. <code>qsize</code> zwraca dokładnie ten sam wynik, ale robi to szybciej.</p>
<p>Oprócz <code>qlist</code> i <code>qsize</code> w portage-utils jest jeszcze wiele innych ciekawych i szybkich narzędzi. Np. <code>qfile</code> sprawdzi nam czy dany plik należy do jakiegoś pakietu (czyli odwrotnie do <code>qlist</code>), <code>qsearch</code> szybko poszuka nam pakietu, a <code>quse</code> pokaże który pakiet skompilowany jest z podaną flagą <code>USE</code>.</p>
<p>Po opis pozostałych programów odsyłam do dokumentacji.</p>
<blockquote><p><code>q --help<br />
qatom &lt;pkg&gt;           : split atom strings<br />
qcache &lt;action&gt; &lt;args&gt; : search the metadata cache<br />
qcheck &lt;pkgname&gt;       : verify integrity of installed packages<br />
qdepends &lt;pkgname&gt;       : show dependency info<br />
qfile &lt;filename&gt;      : list all pkgs owning files<br />
qglsa &lt;action&gt; &lt;list&gt; : check GLSAs against system<br />
qgrep &lt;misc args&gt;     : grep in ebuilds<br />
qlist &lt;pkgname&gt;       : list files owned by pkgname<br />
qlop &lt;pkgname&gt;       : emerge log analyzer<br />
qmerge &lt;pkgnames&gt;      : fetch and merge binary package<br />
qpkg &lt;misc args&gt;     : manipulate Gentoo binpkgs<br />
qsearch &lt;regex&gt;         : search pkgname/desc<br />
qsize &lt;pkgname&gt;       : calculate size usage<br />
qtbz2 &lt;misc args&gt;     : manipulate tbz2 packages<br />
quse &lt;useflag&gt;       : find pkgs using useflags<br />
qxpak &lt;misc args&gt;     : manipulate xpak archives</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2011/02/ile-wazy-paczka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

