Goed, ik zal concise antwoorden proberen geven, al zijn je vragen nogal vaag, maar dat is waarschijnlijk omdat je nog geen hands-on ervaring hebt met gentoo. Tegenwoordig is zo'n install maken in een VM niet zo moeilijk. Al is als je het nog nooit gedaan hebt een kernel compile/config misschien wat moeilijk en tijdvergend, maar je hebt wel wat scriptjes die je initieel wat snel erdoor helpen, zodat je erna eens je een volledig systeem hebt je daarmee deftig kan bezighouden, terwijl je materiaal kan opzoeken op de PC zelf.
Een groot deel kan je trouwens ook gewoon vanaf de LiveCD doen in die chroot, je kan zo ook leren omgaan met portage zelf.
• E Builds: ik begrijp dat dit bash scripts zijn, een soort build files. Een verwijzing naar de broncode zit er ook in, toch? Zit er een soort check in dat je een waarschuwing krijgt dat er een nieuwe versie is (dus aangepaste broncode, bijvoorbeeld op basis van één of andere diff functie ? En hoe zit dat dan bij grote wijzigingen, waarbij bijvoorbeeld depencies zijn toegevoegd of weggehaald ?
Het zijn niet echt bash scripts. Ebuilds, en eigenlijk portage, als je de default package manager (emerge) gebruikt is volledig in python geschreven. De syntax lijkt eerder op een bash script, daar heb je gelijk in, maar het zijn geen bash scripts.
Je krijgt geen "waarschuwing" dat er een nieuwe versie is, de ebuilds wijzen specifiek naar een versie. In de Manifest file staan dan de hashes van die files (en de ebuilds), zodat portage kan zien of er corruption op de files is geraakt tussendoor.
Ik snap je vraag niet echt qua dependancies weggehaald/toegevoegd. Daar hoef je je enkel echt druk om te maken als je zelf ebuilds gaat schrijven/maintainen. Als "gewone user" hoef je je daar niet echt druk om te maken.
De standaard procedure om een Gentoo systeem volledig te updaten is een "emerge --deep --update --newuse @world", met daarna een "emerge --depclean". (Al lees je best héél goed de output van de depclean na voor je het laat doorgaan!).
• Klopt het dat je als package builder (of moet je maintainer zeggen ? ) in elk geval, E Build bouwer, eigenlijk "hooks" moet maken waarmee anderen dan bepaalde use of compile flags kunnen aan/uit zetten? \
Je bent wat in de war met het hele flags gebeuren heb ik de indruk, dus zal misschien wat verduidelijking geven.
USE flags zijn flags wat je "globally" (in make.conf) of per package (in packages.use) kan aan/afzetten.
Je gebruikte profile zorgt er ook voor dat bepaalde USE flags aan/af gezet worden.
USE flags kan je echter gewoon het makkelijkste zien als "checks" voor functionality in een bepaalde programma of library.
Als je bijvoorbeeld geen X wil op je server, kan je het makkelijkste dan de X flag disablen in make.conf door "-X" toe te voegen aan de lijst.
Hierdoor zal dan elke package die de X use flag heeft weten dat je geen X bindings/tools/... wil. Zo krijg je dus ook minder dependancies en een kleinere build in total.
Het omgekeerde kan je natuurlijk ook doen. Als je bijvoorbeeld liever libressl dan openssl gebruikt, of pulseaudio, kan je dat weer ofwel per package instellen, of globaal in make.conf.
"hooks", ik geloof dat je de hele src_compile(), src_prepare() e.d. bedoelt in de ebuild files?
Ik zou het geen hooks noemen, maargoed. USE flags hebben hier eigenlijk weinig mee te zien. USE flags worden gewoon gebruikt om bepaalde functionality aan jouw bepaalde wensen te laten voldoen.
Het nadeel echter bij Gentoo is dat je veel package maintainers hebt, die dan elks hun eigen manier hebben van werken. Echter zijn de grote lijnen hetzelfde overall. Met name dan zoals ik aanhaalde "X" of "pulseaudio".
[i]Hoeveel Ebuilds moet je zelf schrijven in de praktijk? Hoeveel is er al? [/li]
Vrij weinig, tot eigenlijk geen. In portage zelf zit al héél veel, en dan voor bepaalde andere software is er software als "layman", welke het makkelijk maakt van populaire overlays toe te voegen aan je portage tree.
In de recente portage versies is het hele layman verhaal zelfs nog makkelijker gemaakt. Een "emerge --sync" update ook ineens al je remote layman repo's. Bespaart je wat tijd van elke keer ook je layman overlays te sync'en.
https://wiki.gentoo.org/wiki/Layman
Echter moet je altijd in het achterhoofd houden dat overlays die je gebruikt unsupported zijn. Je zal als je problemen hebt met een bepaalde ebuild wel nog op het Gentoo forum terecht kunnen, maar enige bugs die komen door die bepaalde overlay hoeven de main developers zich niet echt aan te trekken. Je zal je dus moeten wenden tot de overlay maintainer. Echter komen die dingen vrij weinig voor, als je maar weet waar je moet kijken.
Als het niet in portage & de overlays zit zal je het inderdaad wel zelf moeten gaan schrijven. Echter zijn er genoeg guides hierover online te vinden, en hoef je echt bar weinig maar in een ebuild te zetten voor het te laten werken. Veel dingen die je in de ebuilds ziet van de "grote" package maintainers zijn optioneel.
• Kun je puur "unstable" werken? Is dat "stabiel" genoeg ?
"~arch", dus unstable is de voorbije jaren veel stabieler geworden dan in 2005, maar het blijft echter "unstable". Je gaat dus vaker problemen krijgen dan iemand die stable draait, omdat die software dan weer meer getest door mensen die "~arch" draaiden.
Als je het niet erg vindt van wat opzoekwerk nu en dan te doen en bugs.gentoo.org (en eigenlijk dus google) te gebruiken, is ~arch zeker goed te gebruiken.
Echter moet je in het achterhoofd houden dat ze breaking changes kunnen pushen in "~arch", waar dat veel minder vaak gebeurt in "arch".
Een mooi heel recent voorbeeld is de glibc debacle door een dev die "iets" te enthousiast was...
https://forums.gentoo.org...highlight-mesa+glibc.html
Dit toont wel aan dat er ook in Gentoo veel drama te zien valt, maargoed

.
• Ik snap weinig van de repo structuur. Is er nou één centrale repo (zoals bij arch) of ook vele locale (zoals bij debian)? Hoe krijg je een Ebuild in de repo ?
Portage an sich, at least volgens de package managers is 1 grote hoop. Een beetje zoals debian dus.
Overlays die je toevoegd door middel van tools als layman, of je eigen local overlay maken "een groot geheel".
Je kan het best vergelijken met de debian structuur. Je hebt 1 grote "main" repo, waar iedereen aan kan toevoegen met z'n eigen kleinere repo's.
https://wiki.gentoo.org/wiki/Overlay
Het maakt dus niet uit in welke overlay het zit als je een bepaalde package installeert.
Stel dat je van programma X in de main repo "1.0" ziet staan, maar jij wil bijvoorbeeld nu al, voordat het in de repo's zit "1.1" gebruiken.
Als je dan je eigen ebuild in je eigen overlay zet, die digest en "emerge x" typt, zal je zien dat hij mooi de ebuild uit je overlay neemt. (tenzij natuurlijk dingen als blockers en andere soort grappen)
Als je een bepaalde ebuild "upstream" wil krijgen, dus in portage kan je best een report aanmaken in bugs.gentoo.org, afgekort bgo. Echter heb je weinig kans dat iemand zomaar je ebuilds aanpakt, ziende dat veel maintainers al hun handen vol hebben.
Als er echter een nieuwe versie van een bepaald programma is dat nog niet in portage zit, kan je de ebuild aanpassen, en voor dit een report aanmaken. Deze zal wel iets sneller aangepakt worden.
• Compileer je op een laptop, of kun je beter op een vaste computer compileren en dan die binaries installeren - in verband met niet te heet opstoken van je laptop ?
Er zijn veel opties met betrekking tot builden. Gentoo is heel versatile in dat aspect.
In de embedded wereld wordt vooral vaak iets gebruikt wat in de volksmond een "stage4" noemt.
Hierbij compilen ze dan alles op hun vrij krachtige desktop, waarna ze dan een image maken van die directory, en gewoon op hun embedded device zetten.
Er zit echter ook native support voor Distcc in portage. Hierbij kan je dan als je wil meerdere hosts inzetten voor het simultaan mee helpen compilen van je packages over het netwerk.
https://wiki.gentoo.org/wiki/Distcc
Je kan het ook zo instellen dat elke keer je compilet je alles door je andere machines laat doen via Distcc, Het is allemaal mogelijk.
Ik persoonlijk liet het gewoon allemaal op de laptop zelf compileren, omdat ik die vaak enkel gebruikte als ik school zat. Thuis stond die laptop amper aan. Echter kan je voor jezelf als je de resources hebt je hele netwerk mee laten compiler met behulp van die distcc. Hierover staan wel een hoopje guides op het forum of de wiki waarschijnlijk.
-----
Je hebt echter wel veel vraag naar "eigen ebuilds schrijven". Ik zou persoonlijk toch aanraden van eerst je weg te vinden in Gentoo, voor je daar aan gaat denken. Ik ken genoeg mensen die jarenlang Gentoo gedraaid hebben zonder ook maar 1 ebuild te hebben moeten schrijven.
Het is voor mij persoonlijk ook lang geleden dat ik echt specifiek m'n eigen ebuilds moest schrijven.
Als het je echter gaat om "user provided patches" bijvoorbeeld, dan kan je dat tegenwoordig ook doen zonder je eigen ebuilds te hoeven shrijven.
https://wiki.gentoo.org/wiki//etc/portage/patches
Long story short, als je een bepaalde patch vind op bgo, is het vrij simpel om die toe te voegen.
https://bugs.gentoo.org/show_bug.cgi?id=574044#c3
Als je die file dan in "/etc/portage/patches/sys-devel/gcc-5.3.0/" gooit, zal ze meegenomen worden als je die specifiek versie van GCC compileert.
Ik heb je ook een paar keer de Gentoo wiki links gegeven, ik raad je aan van die ook eens wat door te bladeren. Er zit echt een schat van informatie in de wiki.
Echter ben ik zoals je waarschijnlijk wel kon lezen vrij slecht in het schrijven van grote lappen tekst, dus als iets niet duidelijk genoeg is hoor ik het wel

.
Ach, het heeft beide z'n voordelen en nadelen. In Gentoo zijn er voor veel packages patches en added functionality die het geheel beter laat samenwerken. initscripts zijn het beste voorbeeld, maar het kan ook gewoon iets futile zijn als een patch voor een bepaalde directory structuur aan te passen dat het programma verwacht.
De ietofwat grotere packages als wine, GCC, Glibc e.d. hebben echt een hele resem aan patches, wat geloof ik niet veel anders is bij andere distro's als Debian.
Het is inderdaad veel tijdverspilling om hetzelfde werk te blijven doen voor 200 verschillende distro's, dat heb je wel.
Als je zulke discussies leuk vindt raad ik je de "Linux sucks" talks aan van Bryan Lunduke. Die geeft altijd een mooi opiniestuk en laat beide kanten hun verhaal doen.
YouTube: "Linux Sucks" - 2016 is de talk van dit jaar.
[Voor 11% gewijzigd door GuntherDW op 21-04-2016 14:19]