Gentoo (3) - USE flags a ebuildy z internetu

15.09.2005 14:33 | Distribúcie | Tomáš Srnka
V dnešnej, už poslednej, časti o inštalácii Gentoo sa pozrieme na možnosti ovplyvňovania inštalácie softvéru, ukážeme si, ako inštalovať blokovaný softvér a nakoniec sa pozrieme, čo robiť s ebuildmi z internetu. Keďže náš miniseriál je už kompletný, pripravili sme všetky tri časti v PDF verzii.

USE flags (USE premenné)

Ide o spôsob ovplyvnenia kompilácie softvéru (závislostí, čiže aj možností programu). Uvediem malý príklad: pokiaľ by ste chceli mať v PHP podporu knižnice GD, ktorú štandardne nedostanete, tak pomocou USE flags to je možné. Stačí "povedať" portage, aby zahrnul aj knižnice GD. USE flags by sme mohli rozdeliť do dvoch skupín:

  • Globálne - USE premenné používa viacero programov
  • Lokálne - USE premenné sú použité len pre jeden balíček

Zoznam všetkých USE premenných nájdete na internete.

Deklarácia USE premenných

Globálne USE premenné nadefinujeme v súbore /etc/make.conf pridaním riadku:

USE="hodnota1 hodnota2 hodnota3..."

Ak pred hodnotu pridáme znak "-", môžeme funkciu odstrániť. U mňa to vyzerá takto:

USE="mmx nvidia kde qt mng gd svg scanner xine -gstreamer -xmms"

Pokiaľ by ste chceli nastaviť lokálne USE premenné, spustite ako root príkaz:

# USE="hodnota1 hodnota2 hodnota3..." emerge program

V tomto prípade bude iba tento jediný program ovplyvnený hodnotami premennej USE. Zapamätajte si však, že keď budete program znovu inštalovať cez emerge, o svoje nastavenia prídete!

Individuálne nastavenie USE premenných

Najprv vytvoríme adresár /etc/portage/ a v ňom súbor package.use:

# mkdir -p /etc/portage
# touch /etc/portage/package.use

Toto je vhodné napríklad vtedy, ak chceme, aby PHP malo podporu MySQL, ale zároveň nechceme, aby sa s jeho podporou kompiloval celý systém. V takom prípade pridáme:

dev-php/mod_php mysql

Samozrejme, je to možné aj opačne. Pokiaľ by ste chceli, aby celý váš systém bol skompilovaný s MySQL, ale PHP už nie, pridajte:

dev-php/mod_php -mysql

Všetky nadefinované USE premenné zobrazíme príkazom:

# emerge --info

Ide tu o zlúčenie súborov /etc/make.conf a /usr/portage/profiles/base/use.defaults (tento súbor nikdy needitujte!). Ak ste pridali nejakú hodnotu do globálnej premennej USE a chcete, aby sa to prejavilo v systéme, použite príkaz:

# emerge --update --deep --newuse world

Ak by ste chceli vedieť, s akými USE flagmi sa skompiluje trebárs balík mozilla, skúste:

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild N ] www-client/mozilla-1.7.11 +crypt -debug +gnome +ipv6 +java -ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznoxft -mozsvg -postgres +ssl +truetype -xinerama -xprint 29,587 kB

Total size of downloads: 29,587 kB

Blokovaný/maskovaný softvér

Možno sa vám už niekedy stalo, že vám emerge vyhodil podobnú hlášku:

!!! All ebuilds that could satisfy "=PEAR-File_Find-0.2.0-r1" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-php/PEAR-File_Find-0.2.0-r1 (masked by: ~x86 keyword)

For more information, see MASKED PACKAGES section in the emerge man page or section 2.2 "Software Availability" in the Gentoo Handbook.

Určite ste zostali zaskočený. Tento program je totiž označený ako "~", čiže "testing". Pokiaľ by ste si ho chceli nainštalovať, musíte zadať:

# ACCEPT_KEYWORS="~x86" emerge program

Potom prebehne všetko bez problémov, lenže práve ste si nainštalovali softvér, ktorý nemusí byť stabilný alebo môže mať nejaké chyby. Z vlastnej skúsenosti môžem povedať, že sa mi raz podarilo nainštalovať program, ktorý po spustení zhodil KDE. Išlo o program Kuroo - grafická nadstavba nad portage. Ak by ste sa niekedy rozhodli upgradovať všetky programy cez príkaz emerge -avuD world, narazili by ste na problém spojený s nainštalovaným maskovaným softvérom. Ak doteraz nevyšla novšia verzia, ako tá, ktorú máme nainštalovanú, tak sa portage bude snažiť dať stabilnú verziu:

[ebuild UD] media-video/nvidia-kernel-1.0.6629-r4 [1.0.7676] 0 kB

Písmenko D značí Downgrade, čiže prechod na nižšiu verziu. V mojom prípade ide o zníženie verzie ovládača na grafickú kartu nvidia z 1.0.7676 na 1.0.6629-r4. Toto sa dá ale veľmi pekne obísť, ak do /etc/portage/package.keywords pridáme riadok:

media-video/nvidia-kernel ~x86

Teraz sa bude portage vždy snažiť inštalovať media-video/nvidia-kernel z maskovaných balíkov. Ďalší spôsob maskovania je "M~", čiže "testing/hard masked". Najprv je potrebné zakomentovať (na začiatok riadku napísať znak "#") názov balíku v /usr/portage/profiles/package.mask, ďalej ako root spustiť:

# ACCEPT_KEYWORDS="~x86" =nazov_programu-presna-verzia

Príklad:
Zakomentoval som riadok s textom: app-office/openoffice-bin-1.9.87, teraz ako root spustím nasledujúci príkaz a už sa mi pekne inštaluje OpenOffice.Org 1.9.128 :):

# ACCEPT_KEYWORDS="~x86" emerge =openoffice-bin-1.9.128

OpenOffice.org 1.9.128 na Gentoo
Čerstvo nainštalovaný OpenOffice.org 2.0 :)

Pokiaľ by som v /usr/portage/profiles/package.mask nezakomentoval riadok s názvom programu, dostal by som hlásenie podobné nasledujúcemu (žeby sme ho už niekedy videli? ;-):

Calculating dependencies
!!! All ebuilds that could satisfy "=openoffice-bin-1.9.128" have been masked.
!!! One of the following masked packages is required to complete your request:
- app-office/openoffice-bin-1.9.128 (masked by: package.mask)
# Andreas Proschofsky (30 Mar 2005)
# Pre-Release, use on your own risk

For more information, see MASKED PACKAGES section in the emerge man page or section 2.2 "Software Availability" in the Gentoo Handbook.

To, či je daný program dostupný a v akej verzii, sa dozviete na stránke packages.gentoo.org.

Ebuildy z internetu

Ak by ste našli na internete ebuild, určite by vás ako prvé napadlo skúsiť niečo ako "ebuild nazov.ebuild", ale skončilo by sa to neúspechom. Môj prvý ebuild, ktorý som si našiel na internete (nebol v portage), bol na nitro-sources (ide o experimentálny patch do jadra, budeme ho používať v príklade). Ako prvý krok musíme vytvoriť adresár: /usr/local/portage:

# mkdir -p /usr/local/portage

Ďalej treba povedať portage, aby hľadal ebuildy aj v /usr/local/portage a nielen v /usr/portage, takže do súboru /etc/make.conf pridáme riadok:

PORTDIR_OVERLAY=/usr/local/portage

Nový adresár pre portage by sme mali, teraz vytvoríme štruktúru:

# cd /usr/local/portage
# mkdir -p sys-kernel/nitro-sources
# cd sys-kernel/nitro-sources

Stiahneme ebuild:

# wget http://www.stud.uni-karlsruhe.de/~uyavl/public/nitro-sources/2.6.12-nitro5/nitro-sources-2.6.12-r5.ebuild

Vytvoríme štruktúru súborov potrebných pre ebuild. Nasledujúci príkaz stiahne a nainštaluje všetko potrebné :):

# ebuild nitro-sources-2.6.12-r5.ebuild digest

A nakoniec môžeme nitro-sources inštalovať:

# ACCEPT_KEYWORDS="~x86" emerge nitro-sources

Pokiaľ by ste si chceli nitro-sources aj skompilovať, musíte najprv zmazať link /usr/src/linux a vytvoriť nový, ktorý bude odkazovať na nitro-sources:

# cd /usr/src
# rm linux
# ln -sf linux-2.6.12-nitro5 linux

A nakoniec sa pustíme do samotnej kompilácie:

# genkernel --menuconfig all

Tak toto bola posledná časť seriálu o Gentoo. Ďakujem všetkým, ktorí mi pomohli pri jeho tvorbe (jojko, mika, Legion a chembro). Celý návod je dostupný aj v PDF formáte (0.8 MB).

Linky:

Webstránky

  • www.gentoo.org/doc/ - oficiálna dokumentácia
  • forums.gentoo.org - najväčšie fórum zaoberajúce sa Gentoo. Nájdete tam veľké množstvo informácií a určite aj pomoc pri hľadaní problémov
  • www.gentoo.sk - slovenská stránka o Gentoo + slovenský mirror
  • www.root.cz - skvelý seriál o Gentoo na ROOT.cz - Poznejte své gentoo
  • www.abclinuxu.cz - pokiaľ by ste sa chceli dozvedieť viac o balíčkovom systéme Gentoo, pozrite sa na tento miniseriál

IRC

Zoznam oficiálnych Gentoo-IRC kanálov - http://www.gentoo.org/main/en/irc.xml
nextra.irc.sk #gentoo, #gentoo.cz, #gentoo.sk

Seriál

    • usb mouse 16.09.2005 | 03:44
      Milan   Návštevník
      zdravim, co mam robit ked mam usb mysku microsoft a nemozem ju nahodit..... totizto po konfiguracii x-ov dam startx a napise mi ze nemoze otvorit mouse alebo tk nejak... nie som pri tom..... niekde som sa docital, ze treba skompilovat kernel s usb podporov..... dalo by sa podrobne poradit ako? vdaka za kazdy podnet
      • Re: usb mouse 16.09.2005 | 16:08
        Avatar Tomáš Srnka Barz čo, už asi všetko  Administrátor
        Ja som inštaloval Gentoo 2005.1 na AMD64 notebook, ku ktorému bola pripojená myška externá USB myška(Genius) a všetko fungovalo OK. Dokonca ked som ju odpojil a pripojil napr. po reštarte fungovala spolus Touchpadom.
        Dlho som robil linuxos.sk, neskôr založil vpsFree.cz, posledných pár rokov ako tech. riaditeľ vo Websupporte
        • Re: usb mouse 20.09.2005 | 00:42
          Letko   Návštevník
          skus pri konfiguracii X-ov pouzit zariadenie /dev/input/mice, miesto standartneho /dev/mouse. Ak chces aj Touchpad, treba doinstalovat balik, tusim synaptics
          • Re: usb mouse 22.09.2005 | 16:43
            grg   Návštevník
            treba mat na to podporu usb ohci hid zariadeni, zakompiluj do jadra, alebo loadni prislusne moduly
    • myska vyriesena ale nefunguje 23.09.2005 | 02:58
      milan   Návštevník
      Dakujem Vam za velmi cenne rady.... Mysku som uz rozchodil, zadal som startx, na displayi som mal stale len ciernu plochu a nic. ani neskoncil chybnou hlaskou. Konkretne mam Notebook Acer Aspire 1300 series, GK S3 Graphics Twister K.
      • Re: myska vyriesena ale nefunguje 06.10.2005 | 19:30
        mosi   Návštevník
        co znamena rozchodenie? Ked si kompiloval jadro sam, tak je velka sanca ze nebude fungovat. Ak mas standard jadro tak by to bolo OK. U mna jadro 2.6.12-ck6: Nielen ze treba v make --menuconfig zaskrtnut podporu USB, ale v Input polozke aj HID USB -> zakompilovat nie ako modul ,ale natvrdo do jadra, potom pojde aj USB klavesnica a mys od startu. Xorg.conf ::: Section "InputDevice" # Identifier and driver Identifier "Mouse1" Driver "mouse" Option "Protocol" "Auto" Option "Device" "/dev/input/mice" Option "Buttons" "5" Option "ZAxisMapping" "4 5" kde /dev/input/mice je USB zariadenie pre mys (vsetky USB HID su v /dev/input/ a dalsie Buttony a ZAxisMappingy zabezpecia fungovanie scrollwheelu pod X. Napis viacej o konfiguracii systemu a pod. a mozno ti mozeme pomoct lepsie, zatial cau, mosi
    • chybycka 20.05.2006 | 02:41
      matko   Návštevník
      ahojte. je tam tlaciarensky skriatok v riadku ACCEPT_KEYWORdS. mi dost dlho trvalo kym som si to vsimol. hh