Difference between pages "Help:Funtoo Editing Guidelines" and "Funtoo Profiles"

(Difference between pages)
(Fancy Notes)
 
m (link to make.conf)
 
Line 1: Line 1:
'''Thanks for your potential interest in contribution the the Funtoo wiki!'''
+
== What is a profile? ==
__NOTOC__
+
== Types of Edits ==
+
  
Before we get started, let's review what changes are okay to make, and what changes are not okay:
+
In Gentoo and Funtoo Linux, profiles are used to define base system settings, and have historically had a lot of untapped potential. In Funtoo Linux, I wanted to take advantage of some of this potential to allow Funtoo Linux users to easily tailor their system for various types of roles. Enter the new Funtoo profile system.
  
{{TableStart}}
+
== What It Is ==
<tr class="active"><th>Type of Change</th><th>Okay?</th></tr>
+
<tr><td>Grammar/spelling fixes</td><td>Yes</td></tr>
+
<tr><td>New wiki content</td><td>Yes</td></tr>
+
<tr><td>New package information</td><td>Yes</td></tr>
+
<tr><td>Adding to existing article</td><td>Maybe -- see below</td></tr>
+
<tr><td>Adding missing/incomplete information</td><td>Yes</td></tr>
+
<tr><td>Making corrections</td><td>Yes</td></tr>
+
<tr class="danger"><td>Adding work-arounds to problems experienced</td><td>No - open bug first on [http://bugs.funtoo.org bug tracker].</td></tr>
+
{{TableEnd}}
+
  
{{fancyimportant|Note that if you experience some problem with Funtoo Linux, during installation or otherwise, the proper course of action is to not add a work-around to our documentation, but to ''open a bug on our bug tracker.'' This is important because the problem you experienced may be a legitimate bug and the solution may be to fix the bug rather than add a work-around to our documentation. We may end up fixing a bug, making a documentation fix, or possibly both.}}
+
Historically, users have had to add a ton of settings to <code>/etc/[[make.conf]]</code> to customize their Gentoo or Funtoo Linux system, which made setup of the operating system more difficult than it should be.
  
== Basics ==
+
In Gentoo Linux, it is possible to only define one ''system profile''. Think of a system profile as the default settings that Portage uses for building everything on your system.
  
Here is a list of basic wiki information that you will need to know to get started:
+
In Funtoo Linux, multiple profiles can be enabled at the same time. These include:
  
* First, to perform edits on the wiki, you must {{CreateAccount}} and log in.
+
* '''arch''' - one arch profile is enabled, at build time, and is not changed. This defines CPU architecture-specific settings.
* You can create a new page by navigating to http://www.funtoo.org/New_Page_Name. Underscores are the equivalent of spaces. Then select "Create" under the "Actions" menu.
+
* '''build''' - one build profile is enabled, at build time, and is generally not changed. It defines the type of build, such as 'current' or 'stable', and associated settings.
* Whether creating a new page or editing an existing page by clicking "Edit", you will be presented with Web-based text editor that allows you to modify the ''wikitext'' of the page. The wikitext is rendered to produce the document you see when you view the page normally.
+
* '''flavor''' - one flavor is enabled per system, and can be changed by the user. This defines the general use of the system, such as 'minimal', 'core', 'workstation' or 'desktop'
* This wiki uses the [http://www.mediawiki.org/wiki/Extension:Approved_Revs ApprovedRevs Extension], which means that any changes you make to a page will need to be approved by an Editor before they are displayed. Editors can visit the [[Special:ApprovedRevs]] page to approve edits made on pages (click "Pages whose approved revision is not their latest" or "Unapproved pages".)
+
* '''mix-in''' - zero or more mix-ins can be enabled that enable settings specific to a particular subset of features, such as 'gnome', 'kde', 'media', 'mate', 'X', 'hardened'
* Until your edits are approved, you can continue to edit the page and your changes will be displayed in the page's History -- click "History" under the "Actions" menu to view the page's history. You will see that the approved version of a page has a star next to it.
+
* Another fun thing you can do is click on your name under the "Account" menu once you have logged in. This will bring you to your "User" page. Then click "Create with Form" unde the "Actions" menu and enter your geographic and other information. This will allow you to be displayed on our [[Usermap]] and will also allow your full name to be displayed on [[:Category:Ebuilds|Ebuild pages]] for which you are an author. It's generally a good idea to do this.
+
  
{{fancytip|The following sections document how to use wikitext and Funtoo templates on the Funtoo wiki.}}
+
{{Fancynote|1=
 +
See [[Flavors and Mix-ins]] for a complete list of all flavors and mix-ins available in Funtoo Linux, along with descriptions of what each one does.}}
  
== Paragraphs ==
+
=== Origins and Benefits ===
  
To create a new paragraph, insert a blank line between two lines of text. If a blank line doesn't exist between two lines of wikitext, they will be combined into a single flowing paragraph.
+
This new system is really a completion of the original cascading profile design that was designed by Daniel Robbins and implemented by Seemant Kulleen as part of Portage. Funtoo Profiles designed to leverage the existing cascading profile system and provide something much more useable and maintainable for users and developers alike. Here are some of its benefits:
  
If you leave leading whitespace at the beginning of a line, MediaWiki will render it as pre-formatted text. Beware of this. Here's an example:
+
* Fewer settings in <code>/etc/make.conf</code>. <code>CHOST</code> and <code>ARCH</code> no longer set in <code>/etc/make.conf</code>.
 +
* Separation of concerns -- arch, build, and flavor-related settings are organized together.
 +
* User flexibility - any number of mix-ins can be enabled to tweak masks or USE settings as needed.
  
foobar
+
{{fancynote|See [[Custom Profiles]] for information on how to extend the profile system.}}
  
This can rear its ugly head when specifying template parameters, so you will get this:
+
== Switch to the Funtoo 1.0 Profile ==
  
{{fancynote| ugh!}}
+
=== Using eselect ===
 +
The preferred method of adding and removing profiles is to use [[eselect|eselect profile]]. This will ensure that profiles are added correctly and in the proper order. The order is imperative for things to work right.
  
...instead of this:
+
Type the following to view a list of available options for '''eselect profile''':
 +
<console>
 +
###i## eselect profile help
 +
</console>
  
{{fancynote|This looks much better!}}
 
  
== Page and Section Capitalization ==
+
For a start, let's see what the default configuration has to offer. Get an overview using the '''list''' command:
 +
<console>
 +
###i## eselect profile list
 +
##b####g##Currently available arch profiles:
 +
  ##b##[1]  funtoo/1.0/linux-gnu/arch/x86-64bit##!b## *
 +
  ##b##[2]##!b##  funtoo/1.0/linux-gnu/arch/pure64
 +
##b####g##Currently available build profiles:
 +
  ##b##[3]##!b##  funtoo/1.0/linux-gnu/build/stable
 +
  ##b##[4]  funtoo/1.0/linux-gnu/build/current##!b## *
 +
  ##b##[5]##!b##  funtoo/1.0/linux-gnu/build/experimental
 +
##b####g##Currently available flavor profiles:
 +
  ##b##[6]##!b##  funtoo/1.0/linux-gnu/flavor/minimal
 +
  ##b##[7]  funtoo/1.0/linux-gnu/flavor/core##!b## *
 +
  ##b##[8]##!b##  funtoo/1.0/linux-gnu/flavor/desktop
 +
  ##b##[9]##!b##  funtoo/1.0/linux-gnu/flavor/workstation
 +
  ##b##[10]##!b##  funtoo/1.0/linux-gnu/flavor/hardened
 +
##b####g##Currently available mix-ins profiles:
 +
  ##b##[11]##!b##  funtoo/1.0/linux-gnu/mix-ins/audio
 +
  ##b##[12]##!b##  funtoo/1.0/linux-gnu/mix-ins/cinnamon
 +
  ##b##[13]##!b##  funtoo/1.0/linux-gnu/mix-ins/console-extras
 +
  ##b##[14]##!b##  funtoo/1.0/linux-gnu/mix-ins/dvd
 +
  ##b##[15]##!b##  funtoo/1.0/linux-gnu/mix-ins/gnome
 +
  ##b##[16]##!b##  funtoo/1.0/linux-gnu/mix-ins/kde
 +
  ##b##[17]##!b##  funtoo/1.0/linux-gnu/mix-ins/mate
 +
  ##b##[18]##!b##  funtoo/1.0/linux-gnu/mix-ins/media
 +
  ##b##[19]##!b##  funtoo/1.0/linux-gnu/mix-ins/print
 +
  ##b##[20]##!b##  funtoo/1.0/linux-gnu/mix-ins/python3-only
 +
  ##b##[21]##!b##  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
 +
  ##b##[22]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-db
 +
  ##b##[23]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-mail
 +
  ##b##[24]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-web
 +
  ##b##[25]##!b##  funtoo/1.0/linux-gnu/mix-ins/X
 +
  ##b##[26]##!b##  funtoo/1.0/linux-gnu/mix-ins/xfce
 +
  ##b##[27]##!b##  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
 +
  ##b##[28]##!b##  funtoo/1.0/linux-gnu/mix-ins/hardened
 +
</console>
  
In general, capitalize all words in page names and section heading except:
+
As in several other Funtoo utilities, a star ('''*''') on the right indicates an active item (your case may differ from the example above).
* Articles: a, an, the
+
In most cases you will want to set your "flavor" first. Remember that you can only set ''one'' flavor at time.
* Coordinating Conjunctions: and, but, or, for, nor, etc.
+
* Prepositions (fewer than five letters): on, at, to, from, by, etc.
+
  
== Document Heirarchy ==
+
To choose your favorite flavor use the '''set-flavor''' command including your selection. In this example, we will set the '''desktop''' flavor:
 +
{{Fancynote| You ''must'' use numbers to reference to the profiles you want.}}
 +
<console>###i## eselect profile set-flavor 8</console>
 +
View the result:
 +
<console>###i## eselect profile list
 +
##b####g##Currently available arch profiles:
 +
  ##b##[1]  funtoo/1.0/linux-gnu/arch/x86-64bit##!b## *
 +
  ##b##[2]##!b##  funtoo/1.0/linux-gnu/arch/pure64
 +
##b####g##Currently available build profiles:
 +
  ##b##[3]##!b##  funtoo/1.0/linux-gnu/build/stable
 +
  ##b##[4]  funtoo/1.0/linux-gnu/build/current##!b## *
 +
  ##b##[5]##!b##  funtoo/1.0/linux-gnu/build/experimental
 +
##b####g##Currently available flavor profiles:
 +
  ##b##[6]##!b##  funtoo/1.0/linux-gnu/flavor/minimal
 +
  ##b##[7]##!b##  funtoo/1.0/linux-gnu/flavor/core
 +
  ##b##[8]  funtoo/1.0/linux-gnu/flavor/desktop##!b## *
 +
  ##b##[9]##!b##  funtoo/1.0/linux-gnu/flavor/workstation
 +
  ##b##[10]##!b##  funtoo/1.0/linux-gnu/flavor/hardened
 +
##b####g##Currently available mix-ins profiles:
 +
  ##b##[11]  funtoo/1.0/linux-gnu/mix-ins/audio (auto)
 +
  ##b##[12]##!b##  funtoo/1.0/linux-gnu/mix-ins/cinnamon
 +
  ##b##[13]  funtoo/1.0/linux-gnu/mix-ins/console-extras (auto)
 +
  ##b##[14]  funtoo/1.0/linux-gnu/mix-ins/dvd (auto)
 +
  ##b##[15]##!b##  funtoo/1.0/linux-gnu/mix-ins/gnome
 +
  ##b##[16]##!b##  funtoo/1.0/linux-gnu/mix-ins/kde
 +
  ##b##[17]##!b##  funtoo/1.0/linux-gnu/mix-ins/mate
 +
  ##b##[18]  funtoo/1.0/linux-gnu/mix-ins/media (auto)
 +
  ##b##[19]  funtoo/1.0/linux-gnu/mix-ins/print (auto)
 +
  ##b##[20]##!b##  funtoo/1.0/linux-gnu/mix-ins/python3-only
 +
  ##b##[21]##!b##  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
 +
  ##b##[22]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-db
 +
  ##b##[23]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-mail
 +
  ##b##[24]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-web
 +
  ##b##[25]  funtoo/1.0/linux-gnu/mix-ins/X (auto)
 +
  ##b##[26]##!b##  funtoo/1.0/linux-gnu/mix-ins/xfce
 +
  ##b##[27]##!b##  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
 +
  ##b##[28]##!b##  funtoo/1.0/linux-gnu/mix-ins/hardened
 +
</console>
 +
As you see by the '''(auto)''' entries, the '''desktop''' flavor already pre-set some mix-ins for you.
  
Use section headings to create a document heirarchy for your page. These will define the table of contents that appears at the top of the wiki page. Create chapters, sections and sub-sections as follows:
+
Now, let's head over and add some mix-ins. To add, say, the mix-ins '''gnome''' and '''kde''' we'd have to enter:
  
<pre>= Page Title =
+
<console>
 +
###i## eselect profile add 15
 +
###i## eselect profile add 16
 +
</console>
  
== Chapter Title ==
+
Or, in a one-shot:
  
=== Section Title ===
 
 
==== SubSection Title ====
 
 
</pre>
 
 
== Links ==
 
 
Internal links to other wiki pages can be specified as <tt><nowiki>[[pagename]]</nowiki></tt>. To specify an alternate name for the link, use <tt><nowiki>[[pagename|my link name]]</nowiki></tt>.
 
 
For external links, use <tt><nowiki>[http://funtoo.org my link]</nowiki></tt> to specify a URL. If you want the URL to appear in the wikitext, you can specify it without brackets: http://forums.funtoo.org.
 
 
== Lists ==
 
 
MediaWiki supports a number of list formats:
 
 
* Unordered List
 
* Unordered Item 2
 
** Unordered sub-item
 
 
# Ordered List
 
# Ordered Item 2
 
## Ordered sub-item
 
 
;Term: This is called a "definition list". It is used when defining various terms.
 
 
If you need to quote a portion of text from another site, use <tt><nowiki><blockquote></nowiki></tt> as follows:
 
 
<blockquote>
 
Wikipedia (ˌwɪkɨˈpiːdiə/ or wɪkiˈpiːdiə/ wik-i-pee-dee-ə) is a collaboratively edited, multilingual, free-access, free content Internet encyclopedia that is supported and hosted by the non-profit Wikimedia Foundation. Volunteers worldwide collaboratively write Wikipedia's 30 million articles in 287 languages, including over 4.5 million in the English Wikipedia. Anyone who can access the site can edit almost any of its articles, which on the Internet comprise[4] the largest and most popular general reference work.[5][6][7][8][9] In February 2014, The New York Times reported that Wikipedia is ranked fifth globally among all websites stating, "With 18 billion page views and nearly 500 million unique visitors a month..., Wikipedia trails just Yahoo, Facebook, Microsoft and Google, the largest with 1.2 billion unique visitors."[10]
 
</blockquote>
 
 
== Literal Text and HTML Symbols ==
 
 
Here is wikitext for the section above, which I am displaying by placing the literal wikitext between a &#60;pre&#62; and &#60;/pre&#62; tag. If you want to disable wikitext processing for an inline span of text, use &#60;nowiki&#62; and &#60;/nowiki&#62;. If you want to print out a tag literally, use &amp;#60; and &amp;#62; (In the wikitext, I used &amp;amp;#60; and &amp;amp;#62 to display these!)
 
 
<pre>
 
* Unordered List
 
* Unordered Item 2
 
** Unordered sub-item
 
 
# Ordered List
 
# Ordered Item 2
 
## Ordered sub-item
 
 
;Term: This is called a "definition list". It is used when defining various terms.
 
 
If you need to quote a portion of text from another site, use <tt><nowiki><blockquote></nowiki></tt> as follows:
 
 
<blockquote>
 
Wikipedia (ˌwɪkɨˈpiːdiə/ or wɪkiˈpiːdiə/ wik-i-pee-dee-ə) is a collaboratively edited, multilingual, free-access,
 
free content Internet encyclopedia that is supported and hosted by the non-profit Wikimedia Foundation. Volunteers
 
worldwide collaboratively write Wikipedia's 30 million articles in 287 languages, including over 4.5 million in the
 
English Wikipedia. Anyone who can access the site can edit almost any of its articles, which on the Internet
 
comprise[4] the largest and most popular general reference work.[5][6][7][8][9] In February 2014, The New York
 
Times reported that Wikipedia is ranked fifth globally among all websites stating, "With 18 billion page views
 
and nearly 500 million unique visitors a month..., Wikipedia trails just Yahoo, Facebook, Microsoft and Google,
 
the largest with 1.2 billion unique visitors."[10]
 
</blockquote>
 
</pre>
 
 
== Linking to Packages ==
 
 
To link to a package page, use the <code>Package</code> template:
 
 
<pre><nowiki>
 
{{Package|sys-apps/portage}}
 
</nowiki></pre>
 
 
This template will create a link to the official wiki page for sys-apps/portage, and render using the official "English" page name, as follows:
 
 
{{Package|sys-apps/portage}}
 
 
If you specify a yet-to-be-documented ebuild, it will render like this (which is okay -- it will encourage people to document it):
 
 
{{Package|sys-foo/undocumented-ebuild}}
 
 
== Tables ==
 
 
Instead of using traditional MediaWiki table wikitext, use the following format:
 
 
<pre>
 
{{TableStart}}
 
<tr class="info"><th>Header 1</th><th>Header 2</th></tr>
 
<tr><td>Value 1</td><td>Value 2</td></tr>
 
<tr><td>Value 3</td><td>Value 4</td></tr>
 
{{TableEnd}}
 
</pre>
 
 
This wil render as follows:
 
 
{{TableStart}}
 
<tr class="info"><th>Header 1</th><th>Header 2</th></tr>
 
<tr><td>Value 1</td><td>Value 2</td></tr>
 
<tr><td>Value 3</td><td>Value 4</td></tr>
 
{{TableEnd}}
 
 
{{fancytip|This table syntax has an added benefit of creating a responsive table that renders properly on mobile devices.}}
 
 
It is possible to use the following CSS classes with <code>tr</code> (rows) and <code>td/th</code> elements to color them as desired:
 
 
{{TableStart}}
 
<tr class="active"><td>Class Name</td></tr>
 
<tr class="success"><td>success</td></tr>
 
<tr class="info"><td>info</td></tr>
 
<tr class="warning"><td>warning</td></tr>
 
<tr class="active"><td>active</td></tr>
 
<tr class="danger"><td>danger</td></tr>
 
{{TableEnd}}
 
 
== Displaying Source Code ==
 
 
To display source code, use the <tt>&#60;syntaxhighlight&#62;</tt> tag, which has the ability to perform syntax highlighting on the source code for easier reading:
 
<pre>
 
<syntaxhighlight lang="python">
 
import system
 
</syntaxhighlight>
 
</pre>
 
 
This will produce the following output:
 
 
<syntaxhighlight lang="python">
 
import system
 
</syntaxhighlight>
 
 
Alternatively, if you need a caption, use can use the file template, specifying a <tt>lang=</tt> parameter:
 
 
<pre>
 
{{file|name=foobar|lang=python|desc=foobarosity|body=
 
import system
 
}}
 
</pre>
 
 
This will produce:
 
 
{{file|name=foobar|lang=python|desc=foobarosity|body=
 
import system
 
}}
 
 
{{fancyimportant|If you need to display the pipe ("{{!}}") character within the body of a file template, replace each "{{!}}" with <nowiki>{{!}}</nowiki> -- otherwise your file contents will not display properly. This is necessary because <nowiki>{{file}}</nowiki> is a template and the "{{!}}" character is used as a delimiter for arguments to the template.}}
 
 
Note that the language should be specified in the <tt>lang</tt> attribute. For a list of supported languages, see [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi#Supported_languages this list].
 
 
== Displaying Text File Contents ==
 
 
For displaying the contents of non-programming language text files (like config files), you have two options. You can enclose your lines within <tt>&#60;pre&#62;</tt> tags, or use the new [[Template:File|file template]]. The file template is used like so:
 
 
<pre>
 
{{file|name=/etc/foo.conf|desc=My foo.conf file|body=
 
# /etc/host.conf:
 
# $Header: /var/cvsroot/gentoo/src/patchsets/glibc/extra/etc/host.conf,v 1.1 2006/09/29
 
}}
 
</pre>
 
 
This will produce:
 
 
{{file|name=/etc/foo.conf|desc=My foo.conf file|body=
 
# /etc/host.conf:
 
# $Header: /var/cvsroot/gentoo/src/patchsets/glibc/extra/etc/host.conf,v 1.1 2006/09/29
 
}}
 
 
== Console ==
 
To display console output, use the <tt>&#60;console&#62;</tt> tag:
 
 
For a root console:
 
<pre>
 
 
<console>
 
<console>
###i## run a command as root
+
###i## eselect profile add 15 16
</console>
+
</pre>
+
Produces:
+
<console>
+
###i## run a command as root
+
 
</console>
 
</console>
  
For a non-root console:
+
If we want to remove a mix-in, for example '''gnome''', simply enter:
<pre>
+
 
 
<console>
 
<console>
$ ##i##run a command as user
+
###i## eselect profile remove 15
</console>
+
</pre>
+
Produces:
+
<console>
+
$ ##i##run a command as user
+
 
</console>
 
</console>
  
{{fancyimportant|1=
+
Verification:
Note that we use a <tt>#</tt> prompt for <tt>root</tt> and a <tt>$</tt> prompt to denote a non-root user.}}
+
  
{{Fancyimportant|The <tt>##i##</tt> text tags the rest of the line as being ''user input'' ("i" is for "input"). It is then highlighted in a noticeable color so it stands out from text that is not typed in by the user.}}
+
<console>###i## eselect profile list
 +
##b####g##Currently available arch profiles:
 +
  ##b##[1]  funtoo/1.0/linux-gnu/arch/x86-64bit##!b## *
 +
  ##b##[2]##!b##  funtoo/1.0/linux-gnu/arch/pure64
 +
##b####g##Currently available build profiles:
 +
  ##b##[3]##!b##  funtoo/1.0/linux-gnu/build/stable
 +
  ##b##[4]  funtoo/1.0/linux-gnu/build/current##!b## *
 +
  ##b##[5]##!b##  funtoo/1.0/linux-gnu/build/experimental
 +
##b####g##Currently available flavor profiles:
 +
  ##b##[6]##!b##  funtoo/1.0/linux-gnu/flavor/minimal
 +
  ##b##[7]##!b##  funtoo/1.0/linux-gnu/flavor/core
 +
  ##b##[8]  funtoo/1.0/linux-gnu/flavor/desktop##!b## *
 +
  ##b##[9]##!b##  funtoo/1.0/linux-gnu/flavor/workstation
 +
  ##b##[10]##!b##  funtoo/1.0/linux-gnu/flavor/hardened
 +
##b####g##Currently available mix-ins profiles:
 +
  ##b##[11]  funtoo/1.0/linux-gnu/mix-ins/audio (auto)
 +
  ##b##[12]##!b##  funtoo/1.0/linux-gnu/mix-ins/cinnamon
 +
  ##b##[13]  funtoo/1.0/linux-gnu/mix-ins/console-extras (auto)
 +
  ##b##[14]  funtoo/1.0/linux-gnu/mix-ins/dvd (auto)
 +
  ##b##[15]##!b##  funtoo/1.0/linux-gnu/mix-ins/gnome
 +
  ##b##[16]  funtoo/1.0/linux-gnu/mix-ins/kde *
 +
  ##b##[17]##!b##  funtoo/1.0/linux-gnu/mix-ins/mate
 +
  ##b##[18]  funtoo/1.0/linux-gnu/mix-ins/media (auto)
 +
  ##b##[19]  funtoo/1.0/linux-gnu/mix-ins/print (auto)
 +
  ##b##[20]##!b##  funtoo/1.0/linux-gnu/mix-ins/python3-only
 +
  ##b##[21]##!b##  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
 +
  ##b##[22]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-db
 +
  ##b##[23]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-mail
 +
  ##b##[24]##!b##  funtoo/1.0/linux-gnu/mix-ins/server-web
 +
  ##b##[25]  funtoo/1.0/linux-gnu/mix-ins/X (auto)
 +
  ##b##[26]##!b##  funtoo/1.0/linux-gnu/mix-ins/xfce
 +
  ##b##[27]##!b##  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
 +
  ##b##[28]##!b##  funtoo/1.0/linux-gnu/mix-ins/hardened
 +
</console>
  
If you need to end highlighting of user input prior to the end of a line, use <code>##!i##</code> to mark the end of the highlighted area.
 
  
The following special character sequences are also available:
+
No magic here, whatever you add gets put into the <code>/etc/portage/make.profile/parent</code> file by portage.
* <code>##g##</code> - Green
+
* <code>##y##</code> - Yellow
+
* <code>##bl##</code> - Blue
+
* <code>##r##</code> - Red
+
* <code>##b##</code> - Bold
+
  
Please use the above coloring options sparingly. It is sometimes nice to use them to get wiki console output to match the colors that are displayed on a Linux console. Also note that for every color above, there is a matching <code>##!(colorcode)##</code> option to turn color off prior to end of line.
+
In our case, this file contains:
 
+
<console>
Here is an example of its use:<console>
+
###i## cat /etc/portage/make.profile/parent
# ##i##bluetoothctl
+
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
[##g##NEW##!g##] Controller 00:02:72:C9:62:65 antec [default]
+
gentoo:funtoo/1.0/linux-gnu/build/current
##bl##[bluetooth]##!bl###power on
+
gentoo:funtoo/1.0/linux-gnu/flavor/desktop
Changing power on succeeded
+
gentoo:funtoo/1.0/linux-gnu/mix-ins/kde
##bl##[bluetooth]##!bl### ##i##agent on
+
Agent registered
+
##bl##[bluetooth]##!bl### ##i##scan on
+
Discovery started
+
##bl##[bluetooth]##!bl### ##i##devices
+
Device 00:1F:20:3D:1E:75 Logitech K760
+
##bl##[bluetooth]##!bl### ##i##pair 00:1F:20:3D:1E:75
+
Attempting to pair with 00:1F:20:3D:1E:75
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
+
##r##[agent]##!r## Passkey: 454358
+
##r##[agent]##!r## Passkey: ##i##4##!i##54358
+
##r##[agent]##!r## Passkey: ##i##45##!i##4358
+
##r##[agent]##!r## Passkey: ##i##454##!i##358
+
##r##[agent]##!r## Passkey: ##i##4543##!i##58
+
##r##[agent]##!r## Passkey: ##i##45435##!i##8
+
##r##[agent]##!r## Passkey: ##i##454358##!i##
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Paired: yes
+
Pairing successful
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: no
+
##bl##[bluetooth]##!bl### ##i##connect 00:1F:20:3D:1E:75
+
Attempting to connect to 00:1F:20:3D:1E:75
+
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
+
Connection successful
+
##bl##[bluetooth]##!bl### ##i##quit
+
[##r##DEL##!r##] Controller 00:02:72:C9:62:65 antec [default]
+
#
+
 
</console>
 
</console>
 +
{{fancywarning|Please, do not add anything manually into <code>parent</code> file. This may result in profile breakage.}}
  
== Fancy Notes ==
+
== For Developers ==
notes, warnings, tips, and important templates will help bring emphasis to articles drawn up.
+
<pre>{{fancynote|this is a fancy note}}</pre>
+
{{fancynote|this is a fancy note}}
+
  
<pre>{{fancyimportant|this is a fancy important}}</pre>
+
=== Define the profile sub-sets you will use ===
{{fancyimportant|this is a fancy important}}
+
  
<pre>{{fancywarning|this is a fancy warning}}</pre>
+
So far in Funtoo we have used the exact same profiles as Gentoo thus Funtoo/2008.0 was strictly the same thing as Gentoo/2008.0 or the barely the same 10.0. This (monolithic) profile was set though a symbolic link named <code>/etc/make.profile</code> pointing on a complex directory architecture located somewhere under <code>/usr/portage/profiles</code>. This is no longer valid with the Funtoo 1.0 profiles as they are split in several smaller bricks which are then glued together via the  <code>/etc/portage/make.profile/parent</code> file (You do not need to include everything, just use the "bricks" you need). Those bricks belongs to several categories:
{{fancywarning|this is a fancy warning}}
+
  
<pre>{{fancytip|this is a fancy tip}}</pre>
+
# MANDATORY -- An "arch" profile which defines settings for a particular architecture. You'll want to set this to whatever arch your system is and leave it alone. '''Setting it to a different arch than your system could severely break it.'''
{{fancytip|this is a fancy tip}}
+
# MANDATORY -- A "build" profile which should match the tree you wish to use. '''Stable''', '''Current''' (~arch), or '''Experimental''' (use it if you are brave enough and find '''current''' too stable).
 +
# MANDATORY -- A "flavor" profile (what was previously known as ''profiles'' is still known as such in Gentoo) which describes the kind of system you want:
 +
#* minimal - Be warned, minimal is exactly what it says, the minimal profile stuff you need for a usable system, nothing else. This is really for people who know what they're doing.
 +
#* core - This is the core profile. This is for stuff that affects both desktops and servers.
 +
#* desktop - Exactly what it says. If you're using a desktop, you should set this as your flavor.
 +
#* server - If you're running a server, you should set this as your flavor.
 +
# OPTIONAL -- One or more "mix-ins" profiles which describe optional add-ons. 'mix-ins' are the heart of the Funtoo 1.0 profiles. Unlike the monolithic profiles which sets a massive amount of use flags and options for you, we've split them into logical add-on profiles. For instance if you want support for gnome, you would add the gnome mix-in to your current profiles. That mix-in sets all the proper use flags and such for gnome. Same with others. Want dvd support? Add that one in. Using a rhel5 kernel which requires special versions of packages such as udev? There's a mix-in for that too. Run a mail server? web server? There's mix-ins for those also. Expect this category to grow in the future as new mix-ins are created.
  
== Kernelop ==
+
The contents of <code>/etc/portage/make.profile/parent</code> for a basic setup might look like this:
To display kernel configuration options, we encourage you to use the <tt>kernelop</tt> template. To use the <tt>kernelop</tt> template, create an entry similar to the following example:  
+
<pre>
+
{{kernelop|title=foo,bar|desc=
+
kernel options pasted from "make menuconfig"
+
}}
+
</pre>
+
  
{{fancynote|Kernelop is colored blue to slightly resemble the blueish background from <tt>make menuconfig</tt>.}}
+
{{file|name=/etc/portage/make.profile/parent|body=
 
+
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
Adding this entry will give you the following output:  
+
gentoo:funtoo/1.0/linux-gnu/build/current
{{kernelop|title=foo,bar|desc=
+
gentoo:funtoo/1.0/linux-gnu/flavor/core
kernel options
+
 
}}
 
}}
  
Here's a more concrete example:
+
A more rounded setup for a desktop might look like this:
{{kernelop|title=File systems|desc=
+
 
<M> Second extended fs support         
+
{{file|name=/etc/portage/make.profile/parent|body=
[ ]  Ext2 extended attributes         
+
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
[ ]  Ext2 execute in place support   
+
gentoo:funtoo/1.0/linux-gnu/build/current
<M> Ext3 journalling file system support
+
gentoo:funtoo/1.0/linux-gnu/flavor/desktop
 +
gentoo:funtoo/1.0/linux-gnu/mix-ins/dvd
 +
gentoo:funtoo/1.0/linux-gnu/mix-ins/media
 
}}
 
}}
  
Examples of usage:
+
== Related ==
* [[Package:AMD Catalyst Video Drivers]]
+
* [[Flavors and Mix-ins]]
* [[Package:ACPI Daemon]]
+
* [[Microcode]]
+
 
+
 
+
== Marking Pages as Needing Updates ==
+
 
+
If you find outdated wiki content, but you don't have the time or ability to update it, add one of the following templates to the wikitext of the page. This will add the page to the [[:Category:Needs Updates|Needs Updates Category]] so we can identify pages that need updating:
+
 
+
<pre>
+
{{PageNeedsUpdates}}
+
{{SectionNeedsUpdates}}
+
</pre>
+
 
+
 
+
Examples of usage:
+
* [[UEFI Install Guide]]
+
* [[Package:MediaWiki]]
+
* [[Clang]]
+
 
+
== Inline Code ==
+
 
+
To emphasize filenames, commands, and other technical jargon when they appear inline in a paragraph, use the <tt>&#60;code&#62;</tt> element. Follow the example below:
+
 
+
<pre>
+
The <code>/etc/fstab</code> file is an important one. Another important file is <code>/boot/grub/grub.cfg</code>.
+
</pre>
+
 
+
This example produces the following output:
+
 
+
The <code>/etc/fstab</code> file is an important one. Another important file is <code>/boot/grub/grub.cfg</code>.
+
 
+
{{fancyimportant|1=
+
The &#60;tt&#62; tag has been deprecated for the purpose of tagging inline code, to conform with HTML5.}}
+
 
+
== Screencasting ==
+
screencasting is an easy method to explain complex tasks.  take for instance youtu.be/5KDei5mBfSg we chop off the id and insert it into the following syntax to produce a video example.<br />
+
tiny:
+
<pre>{{#widget:YouTube|id=5KDei5mBfSg|width=320|height=180}}</pre>
+
standard:
+
<pre>{{#widget:YouTube|id=5KDei5mBfSg|width=700|height=420}}</pre>
+
{{#widget:YouTube|id=5KDei5mBfSg|width=700|height=420}}
+
  
[[Category:Wiki Development]]
+
[[Category:Funtoo features]]
 +
[[Category:Portage]]
 +
[[Category:Labs]]
 +
[[Category:HOWTO]]
 +
[[Category:Official Documentation]]

Revision as of 05:03, January 1, 2015

What is a profile?

In Gentoo and Funtoo Linux, profiles are used to define base system settings, and have historically had a lot of untapped potential. In Funtoo Linux, I wanted to take advantage of some of this potential to allow Funtoo Linux users to easily tailor their system for various types of roles. Enter the new Funtoo profile system.

What It Is

Historically, users have had to add a ton of settings to /etc/make.conf to customize their Gentoo or Funtoo Linux system, which made setup of the operating system more difficult than it should be.

In Gentoo Linux, it is possible to only define one system profile. Think of a system profile as the default settings that Portage uses for building everything on your system.

In Funtoo Linux, multiple profiles can be enabled at the same time. These include:

  • arch - one arch profile is enabled, at build time, and is not changed. This defines CPU architecture-specific settings.
  • build - one build profile is enabled, at build time, and is generally not changed. It defines the type of build, such as 'current' or 'stable', and associated settings.
  • flavor - one flavor is enabled per system, and can be changed by the user. This defines the general use of the system, such as 'minimal', 'core', 'workstation' or 'desktop'
  • mix-in - zero or more mix-ins can be enabled that enable settings specific to a particular subset of features, such as 'gnome', 'kde', 'media', 'mate', 'X', 'hardened'
Note

See Flavors and Mix-ins for a complete list of all flavors and mix-ins available in Funtoo Linux, along with descriptions of what each one does.

Origins and Benefits

This new system is really a completion of the original cascading profile design that was designed by Daniel Robbins and implemented by Seemant Kulleen as part of Portage. Funtoo Profiles designed to leverage the existing cascading profile system and provide something much more useable and maintainable for users and developers alike. Here are some of its benefits:

  • Fewer settings in /etc/make.conf. CHOST and ARCH no longer set in /etc/make.conf.
  • Separation of concerns -- arch, build, and flavor-related settings are organized together.
  • User flexibility - any number of mix-ins can be enabled to tweak masks or USE settings as needed.
Note

See Custom Profiles for information on how to extend the profile system.

Switch to the Funtoo 1.0 Profile

Using eselect

The preferred method of adding and removing profiles is to use eselect profile. This will ensure that profiles are added correctly and in the proper order. The order is imperative for things to work right.

Type the following to view a list of available options for eselect profile:

# eselect profile help


For a start, let's see what the default configuration has to offer. Get an overview using the list command:

# eselect profile list
Currently available arch profiles:
  [1]   funtoo/1.0/linux-gnu/arch/x86-64bit * 
  [2]   funtoo/1.0/linux-gnu/arch/pure64
Currently available build profiles:
  [3]   funtoo/1.0/linux-gnu/build/stable
  [4]   funtoo/1.0/linux-gnu/build/current * 
  [5]   funtoo/1.0/linux-gnu/build/experimental
Currently available flavor profiles:
  [6]   funtoo/1.0/linux-gnu/flavor/minimal
  [7]   funtoo/1.0/linux-gnu/flavor/core *
  [8]   funtoo/1.0/linux-gnu/flavor/desktop
  [9]   funtoo/1.0/linux-gnu/flavor/workstation
  [10]  funtoo/1.0/linux-gnu/flavor/hardened
Currently available mix-ins profiles:
  [11]  funtoo/1.0/linux-gnu/mix-ins/audio
  [12]  funtoo/1.0/linux-gnu/mix-ins/cinnamon
  [13]  funtoo/1.0/linux-gnu/mix-ins/console-extras
  [14]  funtoo/1.0/linux-gnu/mix-ins/dvd
  [15]  funtoo/1.0/linux-gnu/mix-ins/gnome
  [16]  funtoo/1.0/linux-gnu/mix-ins/kde
  [17]  funtoo/1.0/linux-gnu/mix-ins/mate
  [18]  funtoo/1.0/linux-gnu/mix-ins/media
  [19]  funtoo/1.0/linux-gnu/mix-ins/print
  [20]  funtoo/1.0/linux-gnu/mix-ins/python3-only
  [21]  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
  [22]  funtoo/1.0/linux-gnu/mix-ins/server-db
  [23]  funtoo/1.0/linux-gnu/mix-ins/server-mail
  [24]  funtoo/1.0/linux-gnu/mix-ins/server-web
  [25]  funtoo/1.0/linux-gnu/mix-ins/X
  [26]  funtoo/1.0/linux-gnu/mix-ins/xfce
  [27]  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
  [28]  funtoo/1.0/linux-gnu/mix-ins/hardened

As in several other Funtoo utilities, a star (*) on the right indicates an active item (your case may differ from the example above). In most cases you will want to set your "flavor" first. Remember that you can only set one flavor at time.

To choose your favorite flavor use the set-flavor command including your selection. In this example, we will set the desktop flavor:

Note
You must use numbers to reference to the profiles you want.
# eselect profile set-flavor 8

View the result:

# eselect profile list
Currently available arch profiles:
  [1]   funtoo/1.0/linux-gnu/arch/x86-64bit * 
  [2]   funtoo/1.0/linux-gnu/arch/pure64
Currently available build profiles:
  [3]   funtoo/1.0/linux-gnu/build/stable
  [4]   funtoo/1.0/linux-gnu/build/current * 
  [5]   funtoo/1.0/linux-gnu/build/experimental
Currently available flavor profiles:
  [6]   funtoo/1.0/linux-gnu/flavor/minimal
  [7]   funtoo/1.0/linux-gnu/flavor/core
  [8]   funtoo/1.0/linux-gnu/flavor/desktop *
  [9]   funtoo/1.0/linux-gnu/flavor/workstation
  [10]  funtoo/1.0/linux-gnu/flavor/hardened
Currently available mix-ins profiles:
  [11]  funtoo/1.0/linux-gnu/mix-ins/audio (auto)
  [12]  funtoo/1.0/linux-gnu/mix-ins/cinnamon
  [13]  funtoo/1.0/linux-gnu/mix-ins/console-extras (auto)
  [14]  funtoo/1.0/linux-gnu/mix-ins/dvd (auto)
  [15]  funtoo/1.0/linux-gnu/mix-ins/gnome
  [16]  funtoo/1.0/linux-gnu/mix-ins/kde
  [17]  funtoo/1.0/linux-gnu/mix-ins/mate
  [18]  funtoo/1.0/linux-gnu/mix-ins/media (auto)
  [19]  funtoo/1.0/linux-gnu/mix-ins/print (auto)
  [20]  funtoo/1.0/linux-gnu/mix-ins/python3-only
  [21]  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
  [22]  funtoo/1.0/linux-gnu/mix-ins/server-db
  [23]  funtoo/1.0/linux-gnu/mix-ins/server-mail
  [24]  funtoo/1.0/linux-gnu/mix-ins/server-web
  [25]  funtoo/1.0/linux-gnu/mix-ins/X (auto)
  [26]  funtoo/1.0/linux-gnu/mix-ins/xfce
  [27]  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
  [28]  funtoo/1.0/linux-gnu/mix-ins/hardened

As you see by the (auto) entries, the desktop flavor already pre-set some mix-ins for you.

Now, let's head over and add some mix-ins. To add, say, the mix-ins gnome and kde we'd have to enter:

# eselect profile add 15
# eselect profile add 16

Or, in a one-shot:

# eselect profile add 15 16

If we want to remove a mix-in, for example gnome, simply enter:

# eselect profile remove 15

Verification:

# eselect profile list
Currently available arch profiles:
  [1]   funtoo/1.0/linux-gnu/arch/x86-64bit * 
  [2]   funtoo/1.0/linux-gnu/arch/pure64
Currently available build profiles:
  [3]   funtoo/1.0/linux-gnu/build/stable
  [4]   funtoo/1.0/linux-gnu/build/current * 
  [5]   funtoo/1.0/linux-gnu/build/experimental
Currently available flavor profiles:
  [6]   funtoo/1.0/linux-gnu/flavor/minimal
  [7]   funtoo/1.0/linux-gnu/flavor/core
  [8]   funtoo/1.0/linux-gnu/flavor/desktop *
  [9]   funtoo/1.0/linux-gnu/flavor/workstation
  [10]  funtoo/1.0/linux-gnu/flavor/hardened
Currently available mix-ins profiles:
  [11]  funtoo/1.0/linux-gnu/mix-ins/audio (auto)
  [12]  funtoo/1.0/linux-gnu/mix-ins/cinnamon
  [13]  funtoo/1.0/linux-gnu/mix-ins/console-extras (auto)
  [14]  funtoo/1.0/linux-gnu/mix-ins/dvd (auto)
  [15]  funtoo/1.0/linux-gnu/mix-ins/gnome
  [16]  funtoo/1.0/linux-gnu/mix-ins/kde *
  [17]  funtoo/1.0/linux-gnu/mix-ins/mate
  [18]  funtoo/1.0/linux-gnu/mix-ins/media (auto)
  [19]  funtoo/1.0/linux-gnu/mix-ins/print (auto)
  [20]  funtoo/1.0/linux-gnu/mix-ins/python3-only
  [21]  funtoo/1.0/linux-gnu/mix-ins/rhel5-compat
  [22]  funtoo/1.0/linux-gnu/mix-ins/server-db
  [23]  funtoo/1.0/linux-gnu/mix-ins/server-mail
  [24]  funtoo/1.0/linux-gnu/mix-ins/server-web
  [25]  funtoo/1.0/linux-gnu/mix-ins/X (auto)
  [26]  funtoo/1.0/linux-gnu/mix-ins/xfce
  [27]  funtoo/1.0/linux-gnu/mix-ins/vmware-guest
  [28]  funtoo/1.0/linux-gnu/mix-ins/hardened


No magic here, whatever you add gets put into the /etc/portage/make.profile/parent file by portage.

In our case, this file contains:

# cat /etc/portage/make.profile/parent
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
gentoo:funtoo/1.0/linux-gnu/build/current
gentoo:funtoo/1.0/linux-gnu/flavor/desktop
gentoo:funtoo/1.0/linux-gnu/mix-ins/kde
Warning

Please, do not add anything manually into parent file. This may result in profile breakage.

For Developers

Define the profile sub-sets you will use

So far in Funtoo we have used the exact same profiles as Gentoo thus Funtoo/2008.0 was strictly the same thing as Gentoo/2008.0 or the barely the same 10.0. This (monolithic) profile was set though a symbolic link named /etc/make.profile pointing on a complex directory architecture located somewhere under /usr/portage/profiles. This is no longer valid with the Funtoo 1.0 profiles as they are split in several smaller bricks which are then glued together via the /etc/portage/make.profile/parent file (You do not need to include everything, just use the "bricks" you need). Those bricks belongs to several categories:

  1. MANDATORY -- An "arch" profile which defines settings for a particular architecture. You'll want to set this to whatever arch your system is and leave it alone. Setting it to a different arch than your system could severely break it.
  2. MANDATORY -- A "build" profile which should match the tree you wish to use. Stable, Current (~arch), or Experimental (use it if you are brave enough and find current too stable).
  3. MANDATORY -- A "flavor" profile (what was previously known as profiles is still known as such in Gentoo) which describes the kind of system you want:
    • minimal - Be warned, minimal is exactly what it says, the minimal profile stuff you need for a usable system, nothing else. This is really for people who know what they're doing.
    • core - This is the core profile. This is for stuff that affects both desktops and servers.
    • desktop - Exactly what it says. If you're using a desktop, you should set this as your flavor.
    • server - If you're running a server, you should set this as your flavor.
  4. OPTIONAL -- One or more "mix-ins" profiles which describe optional add-ons. 'mix-ins' are the heart of the Funtoo 1.0 profiles. Unlike the monolithic profiles which sets a massive amount of use flags and options for you, we've split them into logical add-on profiles. For instance if you want support for gnome, you would add the gnome mix-in to your current profiles. That mix-in sets all the proper use flags and such for gnome. Same with others. Want dvd support? Add that one in. Using a rhel5 kernel which requires special versions of packages such as udev? There's a mix-in for that too. Run a mail server? web server? There's mix-ins for those also. Expect this category to grow in the future as new mix-ins are created.

The contents of /etc/portage/make.profile/parent for a basic setup might look like this:

/etc/portage/make.profile/parent
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
gentoo:funtoo/1.0/linux-gnu/build/current
gentoo:funtoo/1.0/linux-gnu/flavor/core

A more rounded setup for a desktop might look like this:

/etc/portage/make.profile/parent
gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit
gentoo:funtoo/1.0/linux-gnu/build/current
gentoo:funtoo/1.0/linux-gnu/flavor/desktop
gentoo:funtoo/1.0/linux-gnu/mix-ins/dvd
gentoo:funtoo/1.0/linux-gnu/mix-ins/media

Related