Po chvilce zdržení zde máme další kus Gentoo skládačky, tentokrát úžasný soubor /etc/make.conf a pár věcí, které v něm jdou nastavit. Společně s tím i několik slov o USE flagách, bez kterých by to nebylo zdaleka kompletní.

Soubor /etc/make.conf popisuje především parametry kompilace + několik dalších věcí. Jelikož je Gentoo zdrojová distribuce, tak vhodným nastavením kompilátoru můžete svůj systém trochu popohnat a nevhodným úplně zbořit.

CFLAGS, CXXFLAGS, LDFLAGS

Všechny tyto proměnné určují parametry, předávané kompilátoru, resp. linkeru při kompilaci zdrojových souborů. Obsahují především typ procesoru, pro který má být výsledný binární soubor optimalizován, parametry optimalizace atd. Pro jejich velice dobrý popis doporučuji článek na ABCLinuxu. Dalším skvělým zdrojem jsou oficiální Gentoo fóra.

Pro inspiraci přidám moje funkční nastavení na Pentiu4:

CFLAGS=“-O3 -march=pentium4 -fomit-frame-pointer -pipe -mfpmath=sse -msse2″
CHOST=“i686-pc-linux-gnu“
CXXFLAGS=“${CFLAGS}“
LDFLAGS=“-Wl,-O1 -Wl,–sort-common“

USE FLAGS

Původně jsem myslel, že si vystačím opět s nějakým linkem, ale není tomu tak, na Rootu i ABCLinuxu mlčí. Takže se pustím na tenký led autorské tvorby:

Krátké seznámení

USE flagy představují hlavní možnost, jak ovlivnit chování systému při instalaci nových balíčků. Vím, že tohle tvrzení není na začátek nic světoborného, takže nejlépe bude si to předvést na příkladu (předpokládám, že o správci balíčků Portage a ebuildech už jste něco četli třeba na Rootu). Přestože to není zrovna typický příklad, tak vyberu PHP, protože jsem se v daném ebuildu už párkrát prohrabával a navíc můžete vidět výsledky přímo v phpinfo().

phpinfo()

Pokud se podíváte na začátek phpinfo(), tak v sekci Configure Command uvidíte něco na způsob:
‘./configure’ ‘–prefix=/usr/lib/php5′ ‘–sysconfdir=/etc’ ‘–cache-file=./config.cache’ ‘–disable-cli’ ‘–with-apxs2=/usr/sbin/apxs2′ ‘–with-config-file-path=/etc/php/apache2-php5′ ‘–with-config-file-scan-dir=/etc/php/apache2-php5/ext-active’ ‘–without-pear’ ‘–disable-bcmath’ ‘–with-bz2′ ‘–disable-calendar’ ‘–disable-ctype’ ‘–with-curl’ ‘–without-curlwrappers’ ‘–disable-dbase’ ‘–enable-exif’ ‘–without-fbsql’ ‘–without-fdftk’ ‘–disable-filepro’ ‘–enable-ftp’ ‘–with-gettext’ ‘–without-gmp’ ‘–without-hwapi’ ‘–without-informix’ ‘–disable-ipv6′ ‘–without-kerberos’ ‘–enable-mbstring’ ‘–without-mcrypt’ ‘–disable-memory-limit’ ‘–without-mhash’ ‘–without-ming’ ‘–without-mnogosearch’ ‘–without-msql’ ‘–without-mssql’ ‘–without-ncurses’ ‘–without-oci8′ ‘–without-oci8-instant-client’ ‘–without-oracle’ ‘–with-openssl’ ‘–with-openssl-dir=/usr’ ‘–without-ovrimos’ ‘–disable-pcntl’ ‘–without-pfpro’ ‘–with-pgsql’ ‘–disable-posix’ ‘–without-pspell’ ‘–without-recode’ ‘–disable-simplexml’ ‘–disable-shmop’ ‘–without-snmp’ ‘–enable-soap’ ‘–enable-sockets’ ‘–disable-spl’ ‘–without-sybase’ ‘–without-sybase-ct’ ‘–disable-sysvmsg’ ‘–disable-sysvsem’ ‘–disable-sysvshm’ ‘–without-tidy’ ‘–disable-tokenizer’ ‘–disable-wddx’ ‘–without-xmlrpc’ ‘–with-xsl’ ‘–with-zlib’ ‘–disable-debug’ ‘–disable-dba’ ‘–with-freetype-dir=/usr’ ‘–with-t1lib=/usr’ ‘–disable-gd-jis-conv’ ‘–enable-gd-native-ttf’ ‘–with-jpeg-dir=/usr’ ‘–with-png-dir=/usr’ ‘–without-tiff-dir’ ‘–without-xpm-dir’ ‘–with-gd’ ‘–with-imap’ ‘–with-imap-ssl’ ‘–with-mysql=/usr/lib/mysql’ ‘–with-mysql-sock=/var/run/mysqld/mysqld.sock’ ‘–with-mysqli=/usr/bin/mysql_config’ ‘–with-unixODBC=/usr’ ‘–without-adabas’ ‘–without-birdstep’ ‘–without-dbmaker’ ‘–without-empress’ ‘–without-esoob’ ‘–without-ibm-db2′ ‘–without-iodbc’ ‘–without-sapdb’ ‘–without-solid’ ‘–without-readline’ ‘–without-libedit’ ‘–without-mm’ ‘–without-sqlite’

Balíčky v portage

Zajímavá otázka je, jak se to tam vše dostalo. Takže se podíváme do souboru /usr/portage/eclass/php5-sapi.eclass, který je základem pro všechny PHP5 balíčky, kde například pro PostgreSQL (–with-pgsql) můžete najít:

postgres? ( >=dev-db/postgresql-7.1 ) v DEPEND

a

enable_extension_with „pgsql“ „postgres“ 1 v php5-sapi_src_compile()

První řádek říká, že pokud je nastaven USE flag postgres, tak bude PHP5 záviset na balíčku postgresql ve verzi 7.1 nebo vyšší. A druhý, že se má do configure parametrů přidat pgsql jako with, čímž vznikne výsledné –with-pgsql.

Bleskový úvod by byl, ještě doplním, že ideální místo pro zjišťování závislostí podle USE flagů a dalších věcí spojených s balíčky je Gentoo Portage.

USE flagy pro server

Ideální je jako první dát USE=“-* pam“. Tím zajistíte, že začínáte s čistým stolem a zároveň, že systém bude po rebootu použitelný. Potom už můžete přidávat USE flagy dle libosti, ale určitě byste sem měli přidávat pouze USE flagy globální, například přidat mysql pokud budete chtít mysql pro všechny (většinu) svých balíčků. USE flagy pouze pro jeden balíček je mnohem efektivnější zadávat do /etc/portage/package.use ve tvaru „kategorie/název balíčku USE flagy„, tzn. například:

dev-libs/cyrus-sasl crypt pam

Samozřejmě je možné dávat i mínus, čímž pro daný balíček zrušíte nějaký svůj globální USE flag:

net-ftp/proftpd -pam

Nakonec jsem skončil s

USE=“-* apache2 hardened mmx mysql ncurses nptl nptlonly pam php sse ssl tcpd unicode“

a cokoliv dalšího už dávám do v /etc/portage/package.use.

CONFIG_PROTECT

Nastavuje adresáře, pro které budou chráněny konfigurační soubory při instalaci nových verzí balíčků. Výchozí nastavení je /etc, takže pozor, že když budete chtít něco přidat, tak je potřeba jako první vždy uvést /etc. K výbornému nástroji dispatch-conf pro updatování chráněných souborů se snad také někdy dostanu.

Závěr

Bohužel jsem zvládnul pouze krátký přehled možností, které Gentoo nabízí. Hračičkové ale mají nekonečně možností si vyhrát a ždímat milisekundy dalšími a dalšími konfiguračními parametry. Osobně doporučuji věnovat pozornost především USE flagům, protože různá rozšíření bývají v balíčcích většinou vypnuté a mohli byste se divit, že něco chybí.

Zanechej komentář

K zanechání komentáře ke článku musíte být přihlášen. Přihlásit »