[gentoo-user] Profile listings
Hello Background: As a minimalist I'm trying to ferret out the differences in some of the more minimal profiles versus potential embedded profiles, across several different architectures: (arm32, arm64 x63_32 x86_64 ppc etc). I am also quite curious to find a tool that will clearly list the complete set of packages a given (eselected) profile will yield and the best ways to customize that list of minimal (critical) packages. So in /etc/portage/profiles, we have lots of good information. For example the 'base' dir currently lists 77 packages found in most profiles (?). The '/usr/portage/profiles/arch.list' dir lists not only the recognized arches but also Prefix Keywords. I'm not exactly sure how all of this profile stuff works; who decides what's (packages) in and out, package_masks etc etc. So my questions related to how does gentoo actually determines the exact list of programs that are minimally installed, with the specific arch and the profile selected? In previous times, I just put USE='-*' in the make.conf file and built upwards from there. Still there were baseline packages in the most minimal of stage based gentoo builds. I'm looking for a current approach to bridging between a baseline default profile (for amd64 that would be: [1] default/linux/amd64/13.0 *) and an embedded amd64 profile (if one currently exist? How do I find the potential profiles for say another arch (ppc for example), from an amd64 based gentoo system? Tools? Recommended scripts to review? 'eselect profile list' currently shows 21 amd64 choices: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/selinux [3] default/linux/amd64/13.0/desktop [4] default/linux/amd64/13.0/desktop/gnome [5] default/linux/amd64/13.0/desktop/gnome/systemd [6] default/linux/amd64/13.0/desktop/kde [7] default/linux/amd64/13.0/desktop/kde/systemd [8] default/linux/amd64/13.0/desktop/plasma [9] default/linux/amd64/13.0/desktop/plasma/systemd [10] default/linux/amd64/13.0/developer [11] default/linux/amd64/13.0/no-multilib [12] default/linux/amd64/13.0/systemd [13] default/linux/amd64/13.0/x32 [14] hardened/linux/amd64 [15] hardened/linux/amd64/selinux [16] hardened/linux/amd64/no-multilib [17] hardened/linux/amd64/no-multilib/selinux [18] hardened/linux/amd64/x32 [19] hardened/linux/musl/amd64 [20] default/linux/uclibc/amd64 [21] hardened/linux/uclibc/amd64 But looking here at the files and directories ( ls /usr/portage/profiles) I see an organization structure that differs from the profile listing semantics. So is there a script(s) that shows me what is being read from the directory tree that yields those 21 choices? It seems a bit convoluted to me, but I could easily have missed the documents that organize and discuss such details? Or at least a listing of the scripts that build these profile lists? Or is this adhoc? The next thought is how then to best (succinctly) determine the complete list of packages that will be pulled into any given (arch) profile. Is this a fiefdom situation where those devs that maintain that arch (tongue in cheek) quasi-use these scripts, config files and the /usr/portage/profiles tree structure, consistently or as they wish? I'm not looking for emotional responses, just clarity on where we are. Finally. What if I want to roll my own profiles; should I just build on one of the minimal ones or create something anew that exists only on my systems? If the latter, any insight or examples would be keen information. Yes, I know messing with the 'will of the dev(masters) will put me on a course of little help; but I just see a better way that I want to experiment with the profile pieces that are integral to my efforts. My main goal is to bridge the gap between what is embedded (truly minimalistic) and a minimized (via the profile) gentoo system. TIA, James
Re: [gentoo-user] Profile listings
On Sun, 14 Jun 2015 19:22:14 + (UTC) James wrote: Hello Background: As a minimalist I'm trying to ferret out the differences in some of the more minimal profiles versus potential embedded profiles, across several different architectures: (arm32, arm64 x63_32 x86_64 ppc etc). I am also quite curious to find a tool that will clearly list the complete set of packages a given (eselected) profile will yield and the best ways to customize that list of minimal (critical) packages. So in /etc/portage/profiles, we have lots of good information. For example the 'base' dir currently lists 77 packages found in most profiles (?). The '/usr/portage/profiles/arch.list' dir lists not only the recognized arches but also Prefix Keywords. I'm not exactly sure how all of this profile stuff works; who decides what's (packages) in and out, package_masks etc etc. So my questions related to how does gentoo actually determines the exact list of programs that are minimally installed, with the specific arch and the profile selected? In previous times, I just put USE='-*' in the make.conf file and built upwards from there. Profile do all the stuff that can be done or overridden in /etc/portage, but they define some sane default sets of settings for common profiles. USE=-* will override all USE settings in your profile. As you were already warned, this may break stuff: e.g. expected functionality will not be available or package will refuse to build if it needs at least one of USE flags set (e.g. alternative foo providers). So you must test things very carefully with USE=-*. A set of default packages is defined in the packages file of each profile. Profiles usually have parent file which lists parent profiles: they are inherited, but may be overridden here and there in a child profile. If you want an absolutely minimal system, after you have set it up you may remove some packages even from the @system set. E.g. if you're sure you don't need man or ssh, remove corresponding packages. Just be careful here since it is easy to brick your system here. Best regards, Andrew Savchenko pgpLBt6CBmQM3.pgp Description: PGP signature
Re: [gentoo-user] Profile listings
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 Hi James , As a minimalist I'm trying to ferret out the differences in some of the more minimal profiles versus potential embedded profiles, across several different architectures: (arm32, arm64 x63_32 x86_64 ppc etc). I am also quite curious to find a tool that will clearly list the complete set of packages a given (eselected) profile will yield and the best ways to customize that list of minimal (critical) packages. You're venturing into wonderland. Expect some mad hatters to pop up. So in /etc/portage/profiles, we have lots of good information. You probably mean /usr/portage/profiles? For example the 'base' dir currently lists 77 packages found in most profiles (?). The '/usr/portage/profiles/arch.list' dir lists not only the recognized arches but also Prefix Keywords. I'm not exactly sure how all of this profile stuff works; who decides what's (packages) in and out, package_masks etc etc. So my questions related to how does gentoo actually determines the exact list of programs that are minimally installed, with the specific arch and the profile selected? In previous times, I just put USE='-*' in the make.conf file and built upwards from there. Don't, it breaks things. Still there were baseline packages in the most minimal of stage based gentoo builds. I'm looking for a current approach to bridging between a baseline default profile (for amd64 that would be: [1] default/linux/amd64/13.0 *) and an embedded amd64 profile (if one currently exist? How do I find the potential profiles for say another arch (ppc for example), from an amd64 based gentoo system? Tools? Recommended scripts to review? Your best bet is the (undocumented) portage python API. I guess the question is specific enough that you can pop into #gentoo-portage and ask. 'eselect profile list' currently shows 21 amd64 choices: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/selinux [3] default/linux/amd64/13.0/desktop [4] default/linux/amd64/13.0/desktop/gnome [5] default/linux/amd64/13.0/desktop/gnome/systemd [6] default/linux/amd64/13.0/desktop/kde [7] default/linux/amd64/13.0/desktop/kde/systemd [8] default/linux/amd64/13.0/desktop/plasma [9] default/linux/amd64/13.0/desktop/plasma/systemd [10] default/linux/amd64/13.0/developer [11] default/linux/amd64/13.0/no-multilib [12] default/linux/amd64/13.0/systemd [13] default/linux/amd64/13.0/x32 [14] hardened/linux/amd64 [15] hardened/linux/amd64/selinux [16] hardened/linux/amd64/no-multilib [17] hardened/linux/amd64/no-multilib/selinux [18] hardened/linux/amd64/x32 [19] hardened/linux/musl/amd64 [20] default/linux/uclibc/amd64 [21] hardened/linux/uclibc/amd64 But looking here at the files and directories ( ls /usr/portage/profiles) I see an organization structure that differs from the profile listing semantics. So is there a script(s) that shows me what is being read from the directory tree that yields those 21 choices? It seems a bit convoluted to me, but I could easily have missed the documents that organize and discuss such details? Or at least a listing of the scripts that build these profile lists? Or is this adhoc? The choices from eselect come from /usr/portage/profiles/profiles.desc About what each of these profiles does - you can find that out by starting with the directory given in profiles.desc (e.g., /usr/portage/profiles/hardened/linux/amd64 for choice [14]) and follow the content of the parent files in the directories for inheritance. The next thought is how then to best (succinctly) determine the complete list of packages that will be pulled into any given (arch) profile. Is this a fiefdom situation where those devs that maintain that arch (tongue in cheek) quasi-use these scripts, config files and the /usr/portage/profiles tree structure, consistently or as they wish? I'm not looking for emotional responses, just clarity on where we are. Basically you have to follow the inheritance tree as defined by the parent files, and add stuff up. For the detailed algorithms, see app-doc/pms (good bedtime reading). The targets (systemd, desktop, kde, gnome) are more or less maintained by the respective teams. The arch dirs are maintained by the arch teams. Since changes to any of these dirs may affect a lot, they are usually done with care and rather minimally. Finally. What if I want to roll my own profiles; should I just build on one of the minimal ones or create something anew that exists only on my systems? You *can* roll your own profiles, but it's non-trivial and can cause pain. You'll probably end up asking a lot of questions before it works. It took me a while to figure it out even when already knowing how the main profile tree more or less works. For an example, check my dev overlay (it adds one profile for x86 and for amd64).