Portál AbcLinuxu, 30. dubna 2025 12:55
xenon ~ # emerge -pv mc [ebuild N ] app-misc/mc-4.7.0.3 USE="X edit nls samba -gpm -slang" 2,729 kBPříkaz emerge je rozhraní k portage, USE je seznam useflagů balíku, minus na začátku znamená "vypnout". V tomto případě tedy bude midnight zkompilován včetně editoru, s podporou X serveru a samby, bez podpory myši a s ncurses grafikou. Binární distribuce takovou flexibilitu nabídnout nemůže. Přitom (a teď teprve apt a rpm padá na zadek) USE flagy ovlivňují i závislosti, takže když přidám dejme tomu podporu konzolové myši…
xenon ~ # USE="gpm" emerge -pv mc [ebuild N ] sys-libs/gpm-1.20.5 1,269 kB [ebuild N ] app-misc/mc-4.7.0.3 USE="X edit gpm nls samba -slang" 2,729 kB…přidá se správně do závislostí gpm démon. Xorg a samba v závislostech nejsou, protože už jsou zkompilovány. Poznámka na okraj: ano, midnight má opravdu zabudovanou podporu Xorg. Slouží to ke zjištění stavu shiftových kláves, aby správně fungovaly klávesové zkratky v X terminálu. Taky jsem se tomu poprvé divil. Schválně se negentooisti podívejte na kolika serverech (!) máte balíčky s částmi X windows. (Sázím koláč proti psímu sucharu, že debianisti na všech.) Chcete staticky linkovanou binárku? Hledáte flag "static". Celá řada ebuildů pomocí flagu "gnutls" umožňuje vybrat jinou implemetnaci šifrování než OpenSSL. "java", "python", "perl", "ruby" a další řídí podporu vašich (ne)oblíbených programovacích jazyků. "ipv6" mluví samo za sebe. A můj oblíbený flag "X" je efektní způsob jak zavřít pusu lidem, kteří tvrdí že se gentoo nehodí na servery. I když se nejčastěji týkají kompilace, mají USE mnohem širší využití. Například ebuild opery (tedy binárního balíku) pomocí USE řídí zda má opera použít přibalenou nebo systémovou verzi Qt. Ve firefoxu lze zapnout "oficiální" branding (jste varováni, že takový balík nesmíte dále distribuovat, sic se dostanete do sporu s mozillou jako debian). Pokud se potřebujete obejít bez dokumentace a manstránek, vypněte "doc". Představte si jak asi vypadá můj systém, když jako zarytý KDEčkař používám
"kde qt -gnome -gtk -cups -scanner"
- kolik zbytečných závislostí a nepotřebných balíků vypadne ze hry. Za tři roky s redhatem, mandrakem a suse se mi nepovedlo mít systém bez tiskárny, scanneru a gnome. "Chytrá" binární distra třeba vždy potřebují cups a sane, přinejmenším aby jim jejich chytré gnomácké konfigurační nástroje řekly, že žádnou tiskárnu ani scanner nenašly. Samotné sane, cups nebo gnome plocha by mi nevadily, ale jejich závislosti a závislosti závislostí... to už je jiná pohádka. Nebo spíš horror.
USE flagů jsou stovky což představuje nepředstavitelně mocný aparát, ale taky nemalou porci chaosu. Jejich význam záleží čistě na každém ebuildu, a i když se správci portage snaží o koherenci a přehlednost, není vždy jednoduché se v nich vyznat. Třeba flagy "qt" a "gtk" nejčastěji zapnou podporu daného toolkitu místo klasické xlib (licq), někdy ale reprezentují volitelná klikací GUI k textovým programům (wpa_supplicant).
Teď už by vám mělo být jasné, proč není gentoo vhodné zdaleka pro každého - jakýkoliv netriviální balíček má svoje USE flagy a všem je nutně věnovat přiměřenou pozornost. Portage má svoje způsoby jak minimalizovat jejich opisování, ale duševní práci v jejich průzkumu a rozhodnutí co nastavit, tu zastat nelze. Flexibilita je jak mocnou zbraní, tak břemenem. Pro zkušené uživatele je břemeno vyrovnáno váhou zbytečností, se kterými se nemusí tahat (tak dlouhý klacek, abych se s ním neštítil sáhnout na Pulse Audio ještě nevyrostl) ale pro začátečníka to znamená nemalé množství času a námahy, než se dopracuje ke "své" sadě USE flagů. A to je právě ta bariéra o které jsem se zmiňoval na začátku. Z větší části.
USE flagy jsou skutečným srdcem gentoo. (Nikoliv CFLAGS, jak si někdy myslí naivkové - překompilovat balíček umí i binární distribuce.) Nutno poznamenat že v binárním distru lze někdy podobného efektu docílit rozdělením na více balíků. Kromě zbytečného svinění balíčkovacího systému má tato metoda zásadní omezení - jde použít pouze na dynamicky loadované pluginy. Pro modulární balíčky jako je php je to dostačující řešení, pro většinu ostatního ne. Vizte ukázku
xenon ~ # emerge -pv amarok [ebuild R ] media-sound/amarok-2.3.2-r1 USE="cdda embedded lastfm opengl player semantic-desktop utils -daap -debug -ipod (-kdeenablefinal) -mp3tunes -mtp" LINGUAS="cs -af -bg -ca -ca@valencia -da -de -el -en_GB -es -et -fr -it -ja -lt -lv -nb -nds -pa -pl -pt -pt_BR -ru -sk -sl -sr -sr@ijekavian -sr@ijekavianlatin -sr@latin -sv -th -tr -uk -zh_CN -zh_TW" 0 kBNěkteré volby jsou opravdu samostatně zabalitelné pluginy (lastfm, ipod) zatímco třeba
embedded
je ukázkový příklad síly portage. Řídí totiž linkování zabudovaného mysql serveru do amaroku, což je na jednu stranu velmi pohodlné (nemusíte řešit konfiguraci externí databáze) na druhou stranu je to taky velmi křehké (mysql se s kompatibilitou knihoven moc nezatěžuje).
Podotýkám, že tenhle stav není „chyba“ binárních distribucí, ale programů které distribuují, v tomto případě libmysld. A často to není chyba ale prostě rozdílné požadavky. Co si budem povídat, adminům databázových serverů je putna kolik amaroků s jejich verzí mysql nefunguje, a na desktopu zase jemné nuance rozdílů mezi mysql 5.1.50
a 5.1.52
nikoho nevzrušují. Gentoo to vyřešit nemůže, takže nechá na uživateli vybrat si co je jeho případ. Binární distro to taky vyřešit nemůže, takže zvolí buď otravovat všechny desktopové uživatele nastavováním externí databáze, nebo bude lidem na serverech bránit upgradovat mysql. Nebo, což je nejhorší způsob, začne se upravovat a patchovat upstream (ano ubuntu, na tebe koukám).
Také si všimněte, že jazyky lze ovládat stejným způsobem, ale aby se to nepletlo jsou odsunty do proměnné LINGUAS. Podobných speciálních proměnných je více (apač má APACHE2_MODULES, xorg zase INPUT_DEVICES a VIDEO_CARDS) ale to je spíš kosmetická změna, fungují stejně.
Kromě USE má gentoo i poměrně specifický způsob verzování založený na rolling updates, vlastní systém init skriptů a jiné radosti, ale o tom zase jindy.
Tiskni
Sdílej:
Proč instalovat GentooLebo mame radi CEZ/RWE...
Čekal jsem, kdy se tento zcela inovativní a neotřelý vtípek objeví ... že to bude hnedka první příspěvek mě teda nenapadlo.
Nimcéně pravda to není ... kompilace běží v xtermu a já můžu klidne serfovat netem, koukat na filmy, nebo co.
Jinak já jsem na Gentoo přešel před lety z Debianu, kde jsem systém vždycky po čase dostal do "dependency hell". U Gentoo se mi to nepovedlo a to ho mám na dvou laptopech a desktopu - přemýšlím, že ho nacpu i na FreeRunner, který jsem tu před časem koupil
Nimcéně pravda to není ... kompilace běží v xtermu a já můžu klidne serfovat netem, koukat na filmy, nebo co.Většina počítačů má při zátěži vyšší spotřebu než v idle. Rovněž v idle se např. automaticky podtaktovává.
Většina počítačů má při zátěži vyšší spotřebu než v idle.Možná proto jsou zmínky o ccache a ditcc i v naprosto základním manuálu.
Warning: ccache is known to cause numerous compilation failures. Sometimes ccache will retain stale code objects or corrupted files, which can lead to packages that cannot be emerged. If this happens (if you receive errors like "File not recognized: File truncated"), try recompiling the application with ccache disabled (FEATURES="-ccache" in /etc/make.conf) before reporting a bug. Unless you are doing development work, do not enable ccache.Jednoduse receno, nepouzivejte to.
FEATURES="-ccache" emerge -pv ...
nebo tak nějak). Ale je to jen moje subjektivní zkušenost, ostatní možná mají jiné.
Jednou jsem na něco narazil, google mne pak navedl v hledání do bugzily (nebo kam), kde něco o ccache bylo.
apt-get update apt-get build-dep balik apt-get -b source balikV případě problémů se závislostmi je dobré vědět, že se nastavují v souboru
debian/control
, a autor zdrojového balíku může při kompilaci binárky používat jinou verzi knihovny než máte u sebe. Aby pak automatická aktualizace vámi upravený balík nechtěla převalit binárním balíkem distribučním, je dobré navýšit číslo verze. Je to opět záležitost několika příkazů
cd balik-0.1 dch -i dpkg-buildpackage -rfakeroot cd .. dpkg -i *.debPro aktualizaci jednoho balíku tak není nutné překompilovávat polovinu systému. A výhoda? Že pak lze několika příkazy hotové balíčky rozdistribuovat během okamžiku na všechny stroje na kterých jej chcete mít a apt si po instalaci již sám dotáhne chybějící balíky z repozitáře distribuce.
A zkompilovat si sem něco na Debianu ze zdrojáku zase taková pruda není…Ano, kompilovat zdrojové balíky je to jednoduché, rychlé a k ničemu.
…autor zdrojového balíku může při kompilaci binárky používat jinou verzi knihovny…Tohle zneužívání dpkg-shlibdeps je jedna z věcí který mě na debianu neskutečne serou. Což vede k následujícímu:
…Pro aktualizaci jednoho balíku tak není nutné překompilovávat polovinu systému.…Výhoda gentoo: pro rekompilaci jednoho balíku není nutné aktualizovat polovinu systému.
Ano, kompilovat zdrojové balíky je to jednoduché, rychlé a k ničemu.Tak to si poněkud ve svém zápalu pro gentoo ustřelil, ne? Jasně jsem tím sdělil že pokud někdo chce, tak si ty balíky překompilovat může, ne že musí. Pokud už je balík jednou hotový, tak už se nikde nic nekompiluje.
Pokud už si dám tu práci a takový zdrojový balík udělám...V gentoo se ale nejdná o práci, ale o součást instalace, konkrétně správné nastavení USE proměnných atd. což dodatečně umí vyřešit
echo "kategorie/aplikace gtk" >> /etc/portage/package.use
Co originál proč? Onen konfigurák package.use můžu mít/mám na všech strojích stejný.
+1
Jj a taky nezapomínat, že funguje něco jako "emerge --resume" ... čili se dá přerušit, pracovat na něčem, pokračovat.
eh, nezabudol si na "namesačnych" ktory po nociach kompiluju svoj linux za splnu mesiaca ? www.lunar-linux.org ..... :)
Gentoo má poměrně vysokou vstupní bariéru danou tím, že vyžaduje větší množství ruční práce než je obvykléJo, jo. Udělat souborový systém, rozbalit tarball druhého stage a donastavovat konfiguráky pomocí Handbooku, to už vyžaduje raketového inženýra s diplomem z Harvardu. Nehledě na fakt, že existuje LiveCD.
Vydáte se do divočiny, kde neplatí instalační příručky, mapy závislostí jsou staré a nečitelné a segmentation fault loví po nocích.Jinak tohle také není pravda. Gentoo má jako jedno z mála široko daleko jednu z nejlepších dokumentací a Gentoo Wiki (akorát to není tak pohodlné) používám dodnes i na binárních distrech.
To bychom měli nainstalovaný systém. Máš bragtoo – můžeš dělat ramena že máš všechno zkompilovaný a o úžasný 2% rychlejšíGentoo má poměrně vysokou vstupní bariéru danou tím, že vyžaduje větší množství ruční práce než je obvykléJo, jo. Udělat souborový systém, rozbalit tarball druhého stage a donastavovat konfiguráky pomocí Handbooku, to už vyžaduje raketového inženýra s diplomem z Harvardu. Nehledě na fakt, že existuje LiveCD.
Dokumentace gentoo patří rozhodně mezi nejlepší. Viz třeba návod na proplutí ABI rozbíjejícím upgradem gcc – cca dvě strany textu s přesným postupem jsou rozhodně mnohem lepší dokumentace než debianí „napišteVydáte se do divočiny, kde neplatí instalační příručky, mapy závislostí jsou staré a nečitelné a segmentation fault loví po nocích.Jinak tohle také není pravda. Gentoo má jako jedno z mála široko daleko jednu z nejlepších dokumentací a Gentoo Wiki (akorát to není tak pohodlné) používám dodnes i na binárních distrech.
apt-get dist-upgrade
a zmáčkněte enter“. Jeden se až diví jak chudáci debianisti podle tak vágního popisu dokážou ten enter najít emerge --deep není výchozí. Bez něj se aktualizují jen věci ve @world (a možná v @system), jejich závislosti jen pokud jsou potřeba. Nic vám nebrání emerge --update volat jen na konkrétní vámi zvolený balík.
Vyhody:
Nevyhody:
OOO je i v binarni podobe (kompiloval jsem asi jen 2x) a vsechno ostatni se skompiluje do pul hodky (moc casto stejne nekompiluji, system je nainstalovan a drzi).
scarab@ugly-elf: ~ $ cat /etc/portage/package.mask/python >=dev-lang/python-2.7 >=dev-python/beautifulsoup-3.1.0
Python…To ale neni problem gentoo ale pythonu. A ebuild pythonu te upozorni co se stalo a jak to spravit. Porad lepsi nez ten odpornej bordel v debianu.
Tak jako první bych možná zkusil v qemu pustit něco virtuálního a vidělo by se ... Kvůli jednomu dopisu
scarab@ugly-elf: ~ $ equery hasuse cups * Searching for USE flag cups ... [IP-] [ ] app-emulation/wine-1.3.8:0 [IP-] [ ] app-text/ghostscript-gpl-9.00:0 [IP-] [ ] mail-client/thunderbird-3.1.3:0 [IP-] [ ] net-fs/samba-3.5.6:0 [IP-] [ ] net-wireless/bluez-4.81:0 [IP-] [ ] www-client/chromium-8.0.552.215:0 [IP-] [ ] x11-libs/gtk+-2.22.1:2 [IP-] [ ] x11-libs/qt-gui-4.7.1-r1:4A nyni jednotlive casy komplikaci :P (nebo kompilaci):
Mon Dec 13 18:59:57 2010 >>> app-emulation/wine-1.3.8 merge time: 13 minutes and 1 second. Wed Nov 10 11:40:22 2010 >>> app-text/ghostscript-gpl-9.00 merge time: 5 minutes and 56 seconds. Thu Sep 9 16:54:08 2010 >>> mail-client/thunderbird-3.1.3 merge time: 21 minutes and 7 seconds. Wed Nov 10 18:26:39 2010 >>> net-fs/samba-3.5.6 merge time: 9 minutes and 26 seconds. Mon Dec 13 17:02:44 2010 >>> net-wireless/bluez-4.81 merge time: 53 seconds. Mon Dec 13 22:23:51 2010 >>> www-client/chromium-8.0.552.215 merge time: 29 minutes and 58 seconds. Mon Dec 13 17:32:10 2010 >>> x11-libs/gtk+-2.22.1 merge time: 5 minutes and 31 seconds. Mon Dec 13 16:55:01 2010 >>> x11-libs/qt-gui-4.7.1-r1 merge time: 14 minutes and 4 seconds.Takze dejme tomu ze jsem sexy a chci tisknout ze sveho kde, tak jedine co potrebuju je ten cups zapnout na qt-gui a ghostcript-gpl, teoreticky mozna jeste na bluez jestli pouzivam modrej zub k tomu, zbytek sou jen takove tresnicky na dortu.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.