<?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; Gentoo</title>
	<atom:link href="http://guzik.net.pl/blog/tag/gentoo/feed/" rel="self" type="application/rss+xml" />
	<link>http://guzik.net.pl/blog</link>
	<description>Mój blog</description>
	<lastBuildDate>Wed, 23 May 2012 21:15:29 +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>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>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>
		<item>
		<title>bytes-per-inode [2]</title>
		<link>http://guzik.net.pl/blog/2010/09/bytes-per-inode-2/</link>
		<comments>http://guzik.net.pl/blog/2010/09/bytes-per-inode-2/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:47:39 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bytes-per-inode]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Gentoo Linux]]></category>
		<category><![CDATA[inode]]></category>
		<category><![CDATA[mke2fs]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2203</guid>
		<description><![CDATA[Już kiedyś pisałem o dopasowaniu inode do wielkości dysków. Pisałem nie przeczytawszy wcześniej dokumentacji. Teraz wiem więcej i znam przełącznik -T do mke2fs. Za co jest odpowiedzialny? Wskazujemy w nim wykorzystanie systemu plików tak, by mke2fs mógł optymalnie dobrać parametry (nie musimy tego robić doświadczalnie jak ja wcześniej). Te typy są zdefiniowane w pliku /etc/mke2fs.conf. [...]]]></description>
			<content:encoded><![CDATA[<p>Już <a title="http://guzik.net.pl/blog/2008/10/gentoo-i-bytes-per-inode-ext3/" href="http://guzik.net.pl/blog/2008/10/gentoo-i-bytes-per-inode-ext3/">kiedyś pisałem</a> o dopasowaniu <code>inode</code> do wielkości dysków. Pisałem nie przeczytawszy wcześniej <a title="http://linux.die.net/man/8/mkfs.ext2" href="http://linux.die.net/man/8/mkfs.ext2">dokumentacji</a>. Teraz wiem więcej i znam przełącznik <code>-T</code> do <code>mke2fs</code>.</p>
<p>Za co jest odpowiedzialny? Wskazujemy w nim wykorzystanie systemu plików tak, by <code>mke2fs</code> mógł optymalnie dobrać parametry (nie musimy tego robić doświadczalnie jak ja wcześniej). Te typy są zdefiniowane w pliku <code>/etc/mke2fs.conf</code>. Jak podaje dokumentacja, system plików o rozmiarze poniżej 3 MB zostanie potraktowany jako <code>floppy</code>, powyżej 3 MB, a poniżej 512 MB &#8211; <code>small</code>, a większe dostaną domyślne wartości (można zdefiniować dla nich typ <code>default</code>).</p>
<p>Podtrzymuję, że dysk do 4 GB (a może 8 GB) to też typ <code>small</code> i w przypadku Gentoo Linux warto zmniejszyć <em>bytes/inode ratio</em> (a na pewno jeśli chcemy trzymać <em>portage</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2010/09/bytes-per-inode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some things might become overridden</title>
		<link>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/</link>
		<comments>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:22:08 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Gentoo Linux]]></category>
		<category><![CDATA[named]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=2199</guid>
		<description><![CDATA[To był kolejny leniwy dzień&#8230; Zaczęło się od aktualizacji oprogramowania, wśród którego był również BIND: [...] 1285757303: &#62;&#62;&#62; emerge (10 of 11) net-dns/bind-9.7.1_p2 to / 1285757305: === (10 of 11) Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757305: === (10 of 11) Compiling/Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757568: === (10 of 11) Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild) 1285757573: &#62;&#62;&#62; AUTOCLEAN: net-dns/bind:0 1285757573: === Unmerging... (net-dns/bind-9.4.3_p5) 1285757574: [...]]]></description>
			<content:encoded><![CDATA[<p>To był kolejny leniwy dzień&#8230;<br />
Zaczęło się od aktualizacji oprogramowania, wśród którego był również <a title="http://guzik.net.pl/blog/tag/bind/" href="http://guzik.net.pl/blog/tag/bind/">BIND</a>:</p>
<blockquote><p><code>[...]<br />
1285757303:  &gt;&gt;&gt; emerge (10 of 11) net-dns/bind-9.7.1_p2 to /<br />
1285757305:  === (10 of 11) Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757305:  === (10 of 11) Compiling/Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757568:  === (10 of 11) Merging (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757573:  &gt;&gt;&gt; AUTOCLEAN: net-dns/bind:0<br />
1285757573:  === Unmerging... (net-dns/bind-9.4.3_p5)<br />
1285757574:  &gt;&gt;&gt; unmerge success: net-dns/bind-9.4.3_p5<br />
1285757576:  === (10 of 11) Post-Build Cleaning (net-dns/bind-9.7.1_p2::/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild)<br />
1285757576:  ::: completed emerge (10 of 11) net-dns/bind-9.7.1_p2 to /<br />
[...]</code></p></blockquote>
<p><span id="more-2199"></span><br />
<code>etc-update</code> jakoś przeszło, ale restart nie udał się, bo <em>chroot dir</em> okazał się <em>inconsistent</em>.<br />
Wykonałem więc zalecane wskazówki, ale nie skupiłem się na wyniku, bo zajęty byłem rozmową o pogodzie czy kobietach. A wynik wyglądał tak:</p>
<blockquote><p><code>dns ~ # emerge --config net-dns/bind</code></p>
<p><code>Configuring pkg...</code></p>
<p><code>* NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!<br />
*<br />
* /chroot/dns already exists... some things might become overridden<br />
* <strong>press CTRL+C if you don't want to continue</strong></code></p></blockquote>
<p>Potem coś tam jeszcze, co nadpisało powyższe linijki, więc nie dotarły do mnie za pierwszym razem. Próba restartu usługi i&#8230; $!#$!%#@%! &#8211; coś nie działa. Przegląd konfiguracji i jeszcze bardziej ~^%$!%^$#! Nie ma mojej starej konfiguracji! Przecież tylko <em>might become overridden</em>!</p>
<p>Tylko spokojnie. Sytuacja do opanowania.<br />
Myślicie, że była poprawna kopia zapasowa? Ja też tak myślałem.</p>
<p>Jest ciepło, ale nie gorąco. A może jednak? Przecież jest zapasowy serwer nazw, z którego można sobie ściągnąć wszystkie strefy.<br />
Jest, ale nie pozwala na <a title="http://en.wikipedia.org/wiki/DNS_zone_transfer" href="http://en.wikipedia.org/wiki/DNS_zone_transfer">AXFR</a>. Huh. Kontaktu z administratorami nie ma (ja niestety nim nie zarządzam).</p>
<p>Dobra, sprawdźmy co robią te komendy, bo może jednak gdzieś na boku zrobiły kopię.</p>
<p>W pliku <code>/usr/portage/net-dns/bind/bind-9.7.1_p2.ebuild</code> funkcja <code>pkg_config()</code> wygląda następująco:</p>
<blockquote><p><code>294 pkg_config() {<br />
295     CHROOT=$(source /etc/conf.d/named 2&gt;/dev/null; echo ${CHROOT})<br />
[...]<br />
303     if [[ -d "${CHROOT}" ]]; then<br />
304         ewarn "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!"<br />
305         ewarn<br />
306         ewarn "${CHROOT} already exists... some things might become overridden"<br />
307         ewarn "press CTRL+C if you don't want to continue"<br />
308         <strong>sleep 10</strong><br />
309     fi<br />
[...]<br />
337 }<br />
</code></p></blockquote>
<p>O! czyli miałem 10 sekund na reakcję. Poza tym niewiele ciekawego w tym pliku (ani słowa o usuwaniu plików).<br />
Idźmy dalej, to <code>/etc/init.d/named</code> namówił mnie na <code>emerge --config</code>. Odnaleźć w nim można funkcję <code>start()</code>, a w niej taką zawartość:</p>
<blockquote><p><code> 91 start() {<br />
92     ebegin "Starting ${CHROOT:+chrooted }named"<br />
93<br />
94     if [[ -n ${CHROOT} ]];<br />
95     then<br />
96         check_chroot || {<br />
97             eerror "Your chroot dir ${CHROOT} is inconsistent, please run 'emerge --config net-dns/bind' first"<br />
98             return 1<br />
99         }<br />
100         einfo "Mounting chroot dirs"<br />
101         _mount /etc/bind ${CHROOT}/etc/bind -o bind<br />
102         _mount /var/bind ${CHROOT}/var/bind -o bind<br />
103         _mount /var/log/named ${CHROOT}/var/log/named -o bind<br />
104     fi<br />
[...]<br />
113 }</code></p></blockquote>
<p>O! Jakieś <code>mount -o bind</code> (działania funkcji <code>_mount()</code> można się domyśleć). Więc zatrzymanie usługi wywoła <code>_umount()</code> i jest nadzieja, że znajdą się pliki!</p>
<p>Ufff! Udało się. Od teraz będę wykonywał kopie ważnych plików konfiguracyjnych, jeśli nie całego serwera. Przynajmniej do końca miesiąca.</p>
<p>Czemu przytrafiło mi się to teraz? Jak było wcześniej?<br />
W <code>/usr/portage/net-dns/bind/bind-9.4.3_p5.ebuild</code> mamy:</p>
<blockquote><p><code>243 pkg_config() {<br />
244     CHROOT=`sed -n 's/^[[:blank:]]\?CHROOT="\([^"]\+\)"/\1/p' /etc/conf.d/named 2&gt;/dev/null`<br />
245     EXISTS="no"<br />
246<br />
247     if [ -z "${CHROOT}" -a ! -d "/chroot/dns" ]; then<br />
248         CHROOT="/chroot/dns"<br />
249     elif [ -d ${CHROOT} ]; then<br />
250         eerror; eerror "${CHROOT:-/chroot/dns} already exists. Quitting."; eerror; EXISTS="yes"<br />
251     fi<br />
252<br />
253     if [ ! "$EXISTS" = yes ]; then<br />
254         einfo ; einfon "Setting up the chroot directory..."<br />
255         mkdir -m 700 -p ${CHROOT}<br />
256         mkdir -p ${CHROOT}/{dev,etc,var/run/named}<br />
257         chown -R named:named ${CHROOT}/var/run/named<br />
258         cp -R /etc/bind ${CHROOT}/etc/<br />
259         cp /etc/localtime ${CHROOT}/etc/localtime<br />
260         chown named:named ${CHROOT}/etc/bind/rndc.key<br />
261         cp -R /var/bind ${CHROOT}/var/<br />
262         chown -R named:named ${CHROOT}/var/</code></p></blockquote>
<p>Czyli oprócz <code>mkdir -p</code> było również <code>cp -R</code>. Zmieniło się począwszy od wersji 9.4.3_p5-r1, ale wcześniej był jeszcze rozszerzony komunikat:</p>
<blockquote><p><code>291         ewarn "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!"<br />
292         ewarn "To enable the old behaviour (without using mount) uncomment the"<br />
293         ewarn "CHROOT_NOMOUNT option in your /etc/conf.d/named config."<br />
</code></p></blockquote>
<p>Uczcie się na moich błędach i pokażcie mi swoje. Dojdziemy do doskonałości.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2010/09/some-things-might-become-overridden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Licencje na oprogramowanie w Gentoo</title>
		<link>http://guzik.net.pl/blog/2010/02/licencje-na-oprogramowanie-w-gentoo/</link>
		<comments>http://guzik.net.pl/blog/2010/02/licencje-na-oprogramowanie-w-gentoo/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 10:53:50 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[licencje]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=1557</guid>
		<description><![CDATA[Zgodnie z tym, co można wyczytać w Gentoo wiki, począwszy od wersji 2.1.7 portage (10 października 2009 r.) jest możliwość zarządzania licencjami na oprogramowanie. Tzn. blokować paczki na podstawie licencji, np. instalować tylko te zupełnie wolne (czyli zaakceptowane przez Free Software Foundation). Po szczegóły odsyłam do wspomnianej dokumentacji. Pokrótce &#8211; zarządzanie odbywa się za pomocą [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gentoo.org/"><img class="alignright" title="Gentoo logo" src="http://www.gentoo.org/images/gtop-www.jpg" alt="" width="190" height="124" /></a>Zgodnie z tym, co można <a title="http://en.gentoo-wiki.com/wiki/Licenses" href="http://en.gentoo-wiki.com/wiki/Licenses">wyczytać w Gentoo wiki</a>, począwszy od wersji 2.1.7 portage (<a title="http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-apps/portage/ChangeLog?view=markup" href="http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-apps/portage/ChangeLog?view=markup">10 października 2009 r.</a>) jest możliwość zarządzania licencjami na oprogramowanie. Tzn. blokować paczki na podstawie licencji, np. instalować tylko te zupełnie wolne (czyli zaakceptowane przez <a title="http://www.fsf.org/" href="http://www.fsf.org/">Free Software Foundation</a>).<br />
<span id="more-1557"></span><br />
Po szczegóły odsyłam do wspomnianej dokumentacji. Pokrótce &#8211; zarządzanie odbywa się za pomocą zmiennej <code>ACCEPT_LICENSE</code> w <code>/etc/make.conf</code>. Domyślnie importowane jest <code>* -@EULA</code> z <code>/etc/make.globals</code> (<code>/usr/share/portage/config/make.globals</code>). Wyjątki na poziomie paczki możemy stosować odpowiednio modyfikując plik <code>/etc/portage/package.license</code>.</p>
<p>Bez bicia się przyznam, że nie zauważyłem tego wcześniej, a dowiedziałem się przy okazji próby aktualizacji <a title="http://packages.gentoo.org/package/dev-java/sun-jdk" href="http://packages.gentoo.org/package/dev-java/sun-jdk">dev-java/sun-jdk</a>. Paczki, która nawet jest wymieniona w wiki od początku istnienia artykułu. Wymaga zaakceptowania licencji <a title="http://download.java.net/dlj/DLJ-FAQ-v1.1.txt" href="http://download.java.net/dlj/DLJ-FAQ-v1.1.txt">dlj</a> (<em>Operating System Distributor License for Java</em>). W przeciwnym wypadku spotkamy się z komunikatem:</p>
<blockquote><p><code>!!! All ebuilds that could satisfy "dev-java/sun-jdk" have been masked.<br />
!!! One of the following masked packages is required to complete your request:<br />
- dev-java/sun-jdk-1.6.0.18-r1 (masked by: dlj-1.1 license(s))<br />
A copy of the 'dlj-1.1' license is located at '/usr/portage/licenses/dlj-1.1'.<br />
</code></p></blockquote>
<p>No to czytamy, akceptujemy i instalujemy!</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2010/02/licencje-na-oprogramowanie-w-gentoo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gentoo i bytes-per-inode (ext3)</title>
		<link>http://guzik.net.pl/blog/2008/10/gentoo-i-bytes-per-inode-ext3/</link>
		<comments>http://guzik.net.pl/blog/2008/10/gentoo-i-bytes-per-inode-ext3/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 07:49:37 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ext3]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[inode]]></category>
		<category><![CDATA[mke2fs]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=327</guid>
		<description><![CDATA[Zakładając małą partycję ext3 w Gentoo (do 4 GB) przy pobraniu drzewa portage szybko skończy nam się miejsce na dysku, a w zasadzie ilość i-węzłów. Doświadczalnie wiem, że warto przestawić bytes-per-inode na jakieś 8&#8217;192 (mniejsze niepotrzebne). Domyślna wartość to 16&#8217;384. Odpowiedni parametr do mke2fs to -i &#60;bytes-per-inode&#62;.]]></description>
			<content:encoded><![CDATA[<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2008/10/100px-gentoo_linux_logo_mattesvg.png"><img class="alignleft size-medium wp-image-312" title="100px-gentoo_linux_logo_mattesvg" src="http://guzik.net.pl/blog/wp-content/uploads/2008/10/100px-gentoo_linux_logo_mattesvg.png" alt="" width="100" height="105" /></a>Zakładając małą partycję ext3 w Gentoo (do 4 GB) przy pobraniu drzewa portage szybko skończy nam się miejsce na dysku, a w zasadzie ilość <a title="http://pl.wikipedia.org/wiki/Inode" href="http://pl.wikipedia.org/wiki/Inode">i-węzłów</a>. Doświadczalnie wiem, że warto przestawić bytes-per-inode na jakieś 8&#8217;192 (mniejsze niepotrzebne). Domyślna wartość to 16&#8217;384.</p>
<p>Odpowiedni parametr do <a title="http://linux.die.net/man/8/mke2fs" href="http://linux.die.net/man/8/mke2fs">mke2fs</a> to <code>-i &lt;bytes-per-inode&gt;</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/10/gentoo-i-bytes-per-inode-ext3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Media Server</title>
		<link>http://guzik.net.pl/blog/2008/10/media-server/</link>
		<comments>http://guzik.net.pl/blog/2008/10/media-server/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 06:20:15 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Media Server]]></category>
		<category><![CDATA[Via Epia]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=309</guid>
		<description><![CDATA[Swego czasu (blisko rok temu) zostałem poproszony o projekt oprogramowania / urządzenia, którego zadaniem byłoby wyświetlanie na dużym ekranie dynamicznych informacji uaktualnianych z programu operatora. Jako, że programowanie pod Windows zostawiłem daleko w tyle i obsługa dwóch kart w tym systemie do wyświetlania informacji na niezależnym monitorze wykracza poza moje możliwości, postanowiłem zaprojektować osobne urządzenie, [...]]]></description>
			<content:encoded><![CDATA[<p>Swego czasu (blisko rok temu) zostałem poproszony o projekt oprogramowania / urządzenia, którego zadaniem byłoby wyświetlanie na dużym ekranie dynamicznych informacji uaktualnianych z programu operatora. Jako, że programowanie pod Windows zostawiłem daleko w tyle i obsługa dwóch kart w tym systemie do wyświetlania informacji na niezależnym monitorze wykracza poza moje możliwości, postanowiłem zaprojektować osobne urządzenie, które będzie bardziej &#8216;idiotoodporne&#8217;.</p>
<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2008/10/em-151_inside.jpg"><img class="alignleft size-thumbnail wp-image-311" title="Emko EM-151" src="http://guzik.net.pl/blog/wp-content/uploads/2008/10/em-151_inside-150x150.jpg" alt="" width="150" height="150" /></a>Wybór sprzętu &#8211; coś małego, prostego do zainstalowania, z wyjściem VGA (początkowo wymogiem było TV-Out, ale po porównaniu z VGA w 1024 x 768, które większość telewizorów LCD obsługują, odpadło).<a href="http://guzik.net.pl/blog/wp-content/uploads/2008/10/ss51g.jpg"><img class="alignright size-thumbnail wp-image-310" title="Shuttle SS51G" src="http://guzik.net.pl/blog/wp-content/uploads/2008/10/ss51g-150x150.jpg" alt="" width="150" height="150" /></a> Pierwszą testowaną płytą była <a title="http://www.via.com.tw/en/products/mainboards/" href="http://www.via.com.tw/en/products/mainboards/">Via Epia</a> (nie pamiętam dokładnego modelu, prawdopodobnie <a title="http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473" href="http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473">seria LN</a>, prywatnie mam słabszy model z <a title="http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=81" href="http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=81">serii M</a>) z obudową <a title="http://emko.cz/emko_en/produkty/skrine/miniitx/em-151.html" href="http://emko.cz/emko_en/produkty/skrine/miniitx/em-151.html">Emko EM-151</a>. Okazało się jednakże, że dopuszczalnym rozmiarem jest również obudowa <a title="http://eu.shuttle.com/archive/en/ss51g.htm#ss51g" href="http://eu.shuttle.com/archive/en/ss51g.htm#ss51g">Shuttle SS51G</a> z płytą <a title="http://eu.shuttle.com/archive/en/fs51.htm#mainboardfs5" href="http://eu.shuttle.com/archive/en/fs51.htm#mainboardfs5">FS51</a>, sprowadzane jako sprzęt z odzysku za niższą kwotę niż pierwszy zestaw.</p>
<p>Pierwsze zestawy miały dyski <a title="http://pl.wikipedia.org/wiki/ATA_(technologia)" href="http://pl.wikipedia.org/wiki/ATA_(technologia)">PATA</a> i <a title="http://pl.wikipedia.org/wiki/SATA" href="http://pl.wikipedia.org/wiki/SATA">SATA</a>, kolejne &#8211; <a title="http://pl.wikipedia.org/wiki/Compact_Flash" href="http://pl.wikipedia.org/wiki/Compact_Flash">karty CF</a> z odpowiednimi adapterami PATA (lub SATA). Był też pomysł wstawiania <a title="http://pl.wikipedia.org/wiki/Pendrive" href="http://pl.wikipedia.org/wiki/Pendrive">pamięci flash na USB</a>.</p>
<p><a href="http://guzik.net.pl/blog/wp-content/uploads/2008/10/100px-gentoo_linux_logo_mattesvg.png"><img class="alignleft size-medium wp-image-312" title="100px-gentoo_linux_logo_mattesvg" src="http://guzik.net.pl/blog/wp-content/uploads/2008/10/100px-gentoo_linux_logo_mattesvg.png" alt="" width="100" height="105" /></a>Wybór systemu prosty &#8211; <a title="http://www.linux.org/" href="http://www.linux.org/">GNU/Linux</a>, a dokładnie <a title="http://www.gentoo.org/" href="http://www.gentoo.org/">Gentoo Linux</a>. Konfiguracja sieci typowo jak w Gentoo + sekcja <a title="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&amp;chap=2" href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4&amp;chap=2">fallback</a>, gdyby serwer DHCP nie był dostępny.</p>
<p>Uznałem, że najprościej (i najtaniej) efekt końcowy uzyskam wykorzystując przeglądarkę, można wsadzić dowolny format pliku i zawsze się jakoś wyświetli. Nie jestem grafikiem, więc samą animację robiła osoba trzecia.<a href="http://guzik.net.pl/blog/wp-content/uploads/2008/10/firefox-logo_small.png"><img class="alignright size-medium wp-image-313" title="Mozilla Firefox" src="http://guzik.net.pl/blog/wp-content/uploads/2008/10/firefox-logo_small.png" alt="" width="96" height="96" /></a> Ponieważ projekt miał &#8216;cieszyć oko&#8217;, więc został zrobiony we flash&#8217;u, a wyświetlany na <a title="http://www.mozilla-europe.org/pl/firefox/" href="http://www.mozilla-europe.org/pl/firefox/">Mozilla Firefox</a> (Opera nie radziła sobie z tą animacją &#8211; zbyt &#8216;świeży&#8217; flash).<br />
Żeby przeglądarka mogła pracować, wymagała odpowiedniego środowiska. Wybrałem <a title="http://www.xfce.org/" href="http://www.xfce.org/">Xfce</a> (na X.Org), bo samo <a title="http://www.x.org/" href="http://www.x.org/">X.Org</a> nie dawało mi tylu możliwości (uruchamianie programów po starcie, zarządzanie zasilaniem). Urządzenie jest bezobsługowe, tzn. włącza się i wyłącza jednym przyciskiem. Automatyczne logowanie daje nam <a title="http://sourceforge.net/projects/mingetty" href="http://sourceforge.net/projects/mingetty">mingetty</a>, a wyłączanie za pomocą <a title="http://acpid.sourceforge.net" href="http://acpid.sourceforge.net">acpid</a>. Tutaj można znaleźć więcej informacji:</p>
<ul>
<li> <a title="http://my.opera.com/mziab/blog/index.dml/tag/xfce" href="http://my.opera.com/mziab/blog/index.dml/tag/xfce">Kilka sztuczek pod XFCE4.4 </a></li>
</ul>
<ul>
<li><a title="http://hadret.com/2007/07/19/autologin/" href="http://hadret.com/2007/07/19/autologin/">Autologin &#8211; Hadret&#8217;s Blog</a></li>
</ul>
<p>Zaskakujący dla mnie był fakt, że X.Org <span style="text-decoration: underline;">musi</span> pracować z myszką (tzn. z widocznym wskaźnikiem). Nie da się go ukryć, wyłączyć, itp. Na szczęście jest <a title="http://www.ibiblio.org/pub/X11/contrib/utilities/unclutter-8.README" href="http://www.ibiblio.org/pub/X11/contrib/utilities/unclutter-8.README">unclutter</a>, który wyłącza nieaktywny kursor (<em>idle</em> ustawiony na jedną sekundę).</p>
<p>Założenia wstępne były takie, by obraz wyświetlany był w pionie (czyli de facto 768 x 1024), za co odpowiada opcja:</p>
<blockquote><p>Rotate &#8222;CCW&#8221;</p></blockquote>
<p>w <code>xorg.conf</code> w sekcji <em>Device</em> dla karty graficznej. Sterowniku dla obu wspomnianych płyt obsługują to (odpowiednio <a title="http://www.x.org/archive/X11R6.8.0/doc/via.4.html" href="http://www.x.org/archive/X11R6.8.0/doc/via.4.html">via</a> i <a title="http://www.x.org/archive/X11R6.8.0/doc/sis.4.html" href="http://www.x.org/archive/X11R6.8.0/doc/sis.4.html">sis</a>).</p>
<p>Wspomniany Firefox pracuje z dodatkiem <a title="https://addons.mozilla.org/pl/firefox/addon/1659" href="https://addons.mozilla.org/pl/firefox/addon/1659">R-Kiosk</a> (przy okazji: <a title="http://www.opera.com/support/mastering/kiosk/" href="http://www.opera.com/support/mastering/kiosk/">Opera</a> i <a title="http://support.microsoft.com/kb/154780" href="http://support.microsoft.com/kb/154780">MS IE</a> <em><code>kiosk mode</code></em> ma w standardzie), a w ustawieniach wyłączone zostało zapisywanie i pytanie o przywracanie sesji (odpowiednio browser.sessionstore.enabled i browser.sessionstore.resume_from_crash). Stosowny opis na stronach Mozilla:</p>
<ul>
<li> <a title="http://kb.mozillazine.org/Session_Restore" href="http://kb.mozillazine.org/Session_Restore">Session Restore &#8211; MozillaZine Knowledge Base</a></li>
</ul>
<p>Treść do wyświetlania serwuje <a title="http://nginx.net/" href="http://nginx.net/">nginx</a> (wraz z <a title="http://php.net/" href="http://php.net/">PHP</a> jako <a title="http://wiki.codemongers.com/NginxHttpFcgiModule" href="http://wiki.codemongers.com/NginxHttpFcgiModule">FastCGI</a>, dane z <a title="http://mysql.com/" href="http://mysql.com/">MySQL</a>).</p>
<p>Działające zestawy można pooglądać w kantorach spółki <a title="http://exg.pl/" href="http://exg.pl/">Exchange Group</a> (na pewno w <a title="http://maps.google.com/maps?f=q&amp;hl=pl&amp;geocode=&amp;q=Katowice,+stawowa+3&amp;sll=37.0625,-95.677068&amp;sspn=47.483365,79.101563&amp;ie=UTF8&amp;ei=zkVwSYyXOYH62wKG05nIBQ&amp;cd=17&amp;cid=50260757,19017987,7793852265467063361&amp;li=lmd&amp;ll=50.262571,19.018021&amp;spn=0.026941,0.077248&amp;z=14&amp;iwloc=A" href="http://maps.google.com/maps?f=q&amp;hl=pl&amp;geocode=&amp;q=Katowice,+stawowa+3&amp;sll=37.0625,-95.677068&amp;sspn=47.483365,79.101563&amp;ie=UTF8&amp;ei=zkVwSYyXOYH62wKG05nIBQ&amp;cd=17&amp;cid=50260757,19017987,7793852265467063361&amp;li=lmd&amp;ll=50.262571,19.018021&amp;spn=0.026941,0.077248&amp;z=14&amp;iwloc=A">Katowicach na ulicy Stawowej</a>), a w przyszłości może też w <a title="http://mbs.mikolow.pl/" href="http://mbs.mikolow.pl/">miejscu, gdzie obecnie pracuję</a>.</p>
<p>TODO:</p>
<ul>
<li><em>splashscreen</em> przy uruchamianiu systemu,</li>
<li>optymalizacja systemu (odchudzanie),</li>
<li>być może w przyszłości coś, co pozwoli na rozstanie się ze środowiskiem X.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/10/media-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen na Gentoo Linux i problem z wieloma adresami IP na interfejsie dla bridge</title>
		<link>http://guzik.net.pl/blog/2008/09/xen-na-gentoo-linux-i-problem-z-wieloma-adresami-ip-na-interfejsie-dla-bridge/</link>
		<comments>http://guzik.net.pl/blog/2008/09/xen-na-gentoo-linux-i-problem-z-wieloma-adresami-ip-na-interfejsie-dla-bridge/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 11:55:29 +0000</pubDate>
		<dc:creator>guzik</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[network-bridge]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://guzik.net.pl/blog/?p=262</guid>
		<description><![CDATA[Problem: Przy wielu adresach IP przypisanych do jednego interfejsu występuje problem przy starcie Xen. Środowisko: sys-kernel/xen-sources-2.6.18-r12 app-emulation/xen-3.3.0 app-emulation/xen-tools-3.3.0 Dzieje się tak prawdopodobnie dlatego, że skrypt network-bridge (z /etc/xen/scripts; #!/bin/bash) w funkcji get_ip_info() pobiera adres do zmiennej addr_pfx za pomocą następującego zestawu poleceń (linia 104): ip addr show dev $1 &#124; egrep '^ *inet' &#124; sed [...]]]></description>
			<content:encoded><![CDATA[<p>Problem:</p>
<ul>
<li>Przy wielu adresach IP przypisanych do jednego interfejsu występuje problem przy starcie <a title="http://xen.org/" href="http://xen.org/">Xen</a>.</li>
</ul>
<p>Środowisko:</p>
<ul>
<li><a title="http://packages.gentoo.org/package/sys-kernel/xen-sources" href="http://packages.gentoo.org/package/sys-kernel/xen-sources">sys-kernel/xen-sources</a>-2.6.18-r12</li>
<li><a title="http://packages.gentoo.org/package/app-emulation/xen" href="http://packages.gentoo.org/package/app-emulation/xen">app-emulation/xen</a>-3.3.0</li>
<li><a title="http://packages.gentoo.org/package/app-emulation/xen-tools" href="http://packages.gentoo.org/package/app-emulation/xen-tools">app-emulation/xen-tools</a>-3.3.0</li>
</ul>
<p>Dzieje się tak <span style="text-decoration: underline;">prawdopodobnie</span> dlatego, że skrypt <em>network-bridge</em> (z <em>/etc/xen/scripts</em>; <code>#!/bin/bash</code>) w funkcji <code>get_ip_info()</code> pobiera adres do zmiennej <code>addr_pfx</code> za pomocą następującego zestawu poleceń (linia 104):</p>
<blockquote><p><code>ip addr show dev $1 | egrep '^ *inet' | sed -e 's/ *inet //' -e "s/$1//"</code></p></blockquote>
<p>co z kolei jest wykorzystywane w funkcji <code>do_ifup()</code> (linia 113):</p>
<blockquote><p><code>ip addr add ${addr_pfx} dev $1</code></p></blockquote>
<p>Na systemie z wieloma adresami (&gt; 1) <code>addr_pfx</code> może wyglądać np. tak:</p>
<blockquote><p><code>192.168.1.152/24 brd 192.168.1.255 scope global<br />
192.168.160.153/24 brd 192.168.160.255 scope global</code></p></blockquote>
<p>Przy <code>do_ifup()</code> pojawi się błąd:</p>
<blockquote><p>Error: either &#8222;local&#8221; is duplicate, or &#8222;192.168.160.153/24&#8243; is a garbage.</p></blockquote>
<p>Podobny <a title="http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1142" href="http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1142">błąd był zgłoszony</a> przez <a href="mailto:shadow@overdrawn.net">shadow(at)overdrawn(dot)net</a> 16 stycznia 2008 r., ale dotychczas oficjalnie nic nie zostało z tym zrobione (<span class="bz_comment"><a href="mailto:gentoo@friiks.de">Peter Große</a><em> </em>wyraźnie wskazuje na błąd skryptu i proponuje własną łatę na to)<em>.<br />
</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://guzik.net.pl/blog/2008/09/xen-na-gentoo-linux-i-problem-z-wieloma-adresami-ip-na-interfejsie-dla-bridge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

