# Standarteinstellungen der USE-Variable finden ...

## neonorm

hoi,

bin noob was gentoo und linux angeht, das schon ma vorweg =).

mein problem ist, dass ich die STandarteinstellungen der USE-Flags wie in der Doku in Abschnitt 2b. beschrieben http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=2&chap=2

einfach nicht finde...

Der Rechner soll als router, firewall und fileserver laufen, ich weiss sicherheitstechnisch ne totsünde..

brauche also hauptsächlich iptables, samba, dhcp.

ich wollte mir also die standarteinstellungen anschauen um zu sehen welche flags ich rausnehmen kann,

alles gui zeugs zum beispiel, nur leider hab ich die halt in /usr/portage/profiles/base nicht gefunden.

make.defaults scheint es nicht zu sein..

use.defaults wohl auch nicht, sieht zumindest nich so aus wie im beispiel aus der doku...

vieleicht könnt ihr mir auch noch n paar tipps geben welche flags ich setzen bzw wieder rausnehmen soll.

schon ma danke an alle

----------

## Knieper

Du wirst doch Dein /etc/make.defaults auf ein profil gelinkt haben (zB.: /usr/portage/profiles/default-linux/x86/2006.1/server/ oder /usr/portage/profiles/default-linux/x86/2006.1/desktop). Dort findest Du auch die Datei make.defaults mit den USE-Flags. Da ein Server eh nicht viel Software benoetigt, wuerde ich mir die Use-Flags jedes Paketes angucken und dann die Dateien in /etc/portage nutzen (package.[keywords|mask|use]).

Bei Gentoo steht leider oft Unfug in den USE-Flags...   :Rolling Eyes: 

----------

## nikaya

Kannst die USE-Flags jeden Paketes mit 

```
emerge -pv <paketname>
```

anschauen.

Alle USE-Flags zeigt Dir 

```
emerge --info
```

an,also die per Default-Profil gesetzten und in der /etc/make.conf hinzugefügten.

----------

## neonorm

mh ok die make.defaults habe ich jetzt gefunden..

sieht aber recht dürftig aus was da drin steht :

an nicht auskommentierten zeilen nur 

```

STAGE_1USE="nptl nptlonly unicode"

USE="cups gdbm gpm libg++ nptl nptlonly ppds udev unicode"

```

das ist im vergleich zum beispiel ziemlich wenig...

es geht mir jetzt eher darum zu wissen wo diese datei ist

wenn icheuch richtig verstanden hab schlagt ihr ja vor bei jedem packet einzeln die flags rauszunehmen die für dieses packet ne rolle spielen.

was natürlich auch sinn macht da ich eh nicht so unglaublich viele programe installieren werde.

da ich in auch noch einen gentoo desktop pc aufsetzen wollte wärs für die zukunft auch gut zu wissen.

euch beiden aber schon mal vielen dank für die schnelle antwort  :Very Happy: Last edited by neonorm on Sat Sep 23, 2006 7:04 pm; edited 1 time in total

----------

## mv

 *neonorm wrote:*   

> 
> 
> mein problem ist, dass ich die STandarteinstellungen der USE-Flags [...] einfach nicht finde...
> 
> 

 

Das ist seit den "cascading profiles" auch schwierig, von Hand zu machen.

Außerdem hat sich seit portage-2.1 and der Behandlung von use.defaults auch Einiges geändert - ich habe jetzt nicht nachgesehen, ob das dokumentiert ist.

Meine Empfehlung:

```

emerge ufed

ufed

```

...und dort das "magische" Flag -* setzen; damit machst Du Dich von Änderungen der Defaults (und insbesondere auch von den erwähnten Änderungen in der Behandlung von use.defaults) unabhängig, kannst die Defaults aber trotzdem sehen.

----------

## Knieper

 *neonorm wrote:*   

> 
> 
> mh ok die make.config habe ich jetzt gefunden..
> 
> 

 

Meinst Du make.defaults?

 *Quote:*   

> wenn icheuch richtig verstanden hab schlagt ihr ja vor bei jedem packet einzeln die flags rauszunehmen die für dieses packet ne rolle spielen.

 

Naja, die USE-Flags aus der make.defaults wuerde ich in /etc/make.conf rausnehmen, sonst sind die Aenderungen bei der naechsten Profilaktualisierung draussen. Den Rest dann in den package-Dateien (s. oben).

 *Quote:*   

> da ich in auch noch einen gentoo desktop pc aufsetzen wollte wärs für die zukunft auch gut zu wissen.

 

Wenn man sich die /etc/make.profile/make.defaults (2006.1-x86-Desktop) ansieht:

```

USE="alsa arts cairo cdr dbus dvd dvdr eds emboss encode esd fam firefox gif gnome gpm gstreamer gtk hal jpeg kde ldap mad mikmod mp3 mpeg ogg opengl oss png qt3 qt4 quicktime sdl spell truetype vorbis win32codecs unicode X xml xv"

```

kann einem schon schlecht werden, da es mMn. vollkommen der Gentoo-Philosophie widerspricht. Arts, dbus, eds, emboss, esd, gnome, kde, hal, ldap, oss, unicode, xml... - vollkommen ueberfluessig.

----------

## neonorm

mhhh also wenn ich dich richtig verstanden hab, soll ich n packet installieren mit dem ich einfach alle flags

rausnehmen kann.. danach sieht 

```
-*
```

 für mich nähmlich aus   :Confused: 

ist das wirklich sinnvoll ?

mal ganz davon zu schweigen, dass es wohl nicht die sauberste methode ist....

----------

## neonorm

oh sry stimmt muss natürlich make.defaults sein...

gut die flas die per default gesetzt sind hab ich jetzt dank Doe John mit

```
emerge --info
```

gefunden jetzt ist nur noch die frage in welcher datei ich diese default einstellung änder

.. also vor allem sachen rausnehm   :Very Happy: 

für den server ist das jetzt nicht so wichtig da ist mir de liste auch zu lang um alles (fast) alles rauszunehmen   :Wink: 

aber für desktop projekte wärs sicher gut zu wissen...

----------

## Knieper

Ich darf mich wiederholen:

 *Knieper wrote:*   

> 
> 
> Naja, die USE-Flags aus der make.defaults wuerde ich in /etc/make.conf rausnehmen, sonst sind die Aenderungen bei der naechsten Profilaktualisierung draussen. Den Rest dann in den package-Dateien (s. oben).

 

----------

## firefly

Entweder global in der make.conf  :Wink:  oder für einzelen pakete in der /etc/portage/package.use datei (bzw. das kann sein portage 2.1 auch ein verzeichniss sein)

Ich denke du solltest nochmal das Handbuch und da genauer das kapitel mit dem USE-flags nochmal genauser durchlesen  :Wink: 

----------

## mv

 *neonorm wrote:*   

> mhhh also wenn ich dich richtig verstanden hab, soll ich n packet installieren mit dem ich einfach alle flags
> 
> rausnehmen kann.. danach sieht 
> 
> ```
> ...

 

Nein. ufed zeigt Dir einfach alle USE-Flags samt Beschreibungen und Default-Einstellungen an (und i.W. auch, wo die Defaults gesetzt sind). Zusätzlich kannst Du damit Änderungen an den Flags vornehmen, die dann in /etc/make.conf gespeichert werden.

Der zusätzliche Hinweis bzgl. -* bezog sich nur darauf, dass seit portage-2.1 die Angabe von ufed falsch sein kann, weil neuerdings die Defaults nicht nur von den Daten im Profile abhängen sondern zusätzlich noch von der benutzten Portage-Version. Mit der magischen Option "-*" wird ufed in /etc/make.conf die Änderungen in der Form "-* flag1 flag2 ...", abspeichern, d.h. dieser Eintrag wird unabhängig von der Portage-Version oder künftiger Default-Änderungen immer die selben USE-Flags liefern (wenn Du sonst aber nichts änderst, enthält er genau die Default-Useflags).

Useflag-Änderungen solltest Du ohnehin "manuell" verfolgen - es gibt immer wieder mal neue USE-Flags, oder alte fliegen heraus, und auch an den Defaults wird manchmal ohne Ankündigung gedreht. Weder automatisches Übernehmen noch automatisches Ignorieren ist hier sinnvoll - von daher ist die Option "-*" genauso unpraktisch wie Weglassen der Option. Leider gibt es zur Feststellung der USE-Flag-Änderungen nichts Fertiges ein Portage, und wie gesagt: Das manuelle Feststellen der Defaults ist ziemlich mühsam.

Ich benutze vor jedem eix-sync (d.h. emerge --sync) "useflags save" und danach "useflags diff", um die Änderungen festzustellen. Dabei ist "useflags" das Script von http://www.mathematik.uni-wuerzburg.de/~vaeth/gentoo/index.html.

----------

## STiGMaTa_ch

 *neonorm wrote:*   

> 
> 
> mein problem ist, dass ich die STandarteinstellungen der USE-Flags wie in der Doku in Abschnitt 2b. beschrieben http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=2&chap=2
> 
> einfach nicht finde...
> ...

 

Die bessere Frage ist... Wozu solltest du an denen überhaupt rumfingern? Lass die wie sie sind und halte dich entweder an make.conf oder package.use.

Ausserdem würden die bei einem emerge --sync eh wieder überschrieben werden und dann wären deine Einstellungen wieder weg.

 *neonorm wrote:*   

> Der Rechner soll als router, firewall und fileserver laufen, ich weiss sicherheitstechnisch ne totsünde..
> 
> brauche also hauptsächlich iptables, samba, dhcp.
> 
> ich wollte mir also die standarteinstellungen anschauen um zu sehen welche flags ich rausnehmen kann,
> ...

 

Ich glaube du hast den Sinn hinter den USE Flags noch nicht verstanden. Nur weil du z.B. WuRzElbrunft als Useflag reinnimmst, bedeutet das noch lange nicht, dass deswegen auch WuRzElbrunft auf deinem Rechner installiert wird! Wenn du WuRzElbrunft willst, musst du es prinzipiell erst einmal emergen. Wenn du nun aber ZwIrNzWaBeL installierst welches Unterstützung für WuRzElbrunft anbietet, dann wird ZwIrNzWaBeL wegen der gesetzten WuRzElbrunft USE Flag mit WuRzElbrunft kompiliert (und spätestens da wird WuRzElbrunft auch auf deinem System installiert).

Wenn du nun weisst, dass WuRzElbrunft in 10 Paketen aktiviert werden könnte und du sicher weisst, dass du es nur bei dreien brauchst, dann ist es ratsamer package.use anzupassen (für jedes der drei Paket einzeln setzen) als es in make.conf global zu setzen.

 *neonorm wrote:*   

> vieleicht könnt ihr mir auch noch n paar tipps geben welche flags ich setzen bzw wieder rausnehmen soll.

 

Nein, denn das ist die Aufgabe des Administrators (sprich DEINE) und hängt ganz vom benötigten Bedarf ab.

Ein Beispiel:

Auf meinem Server habe ich samba, bind, subversion, und den ssh server am laufen. Meine make.conf hat folgende USE Flags drinn:

```
USE="-* bzip2 pam python udev ssl tcpd"
```

(-* löscht alle gesetzten USE Flags)

Wenn ich aber einen emerge --info mache, habe ich aber trotzdem mehr als nur die bzip2 pam python udev ssl tcpd USE Flags drinn:

```
USE="x86 bzip2 elibc_glibc input_devices_evdev input_devices_keyboard input_devices_mouse kernel_linux pam python ssl tcpd udev userland_GNU video_cards_apm video_cards_ark video_cards_ati video_cards_chips video_cards_cirrus video_cards_cyrix video_cards_dummy video_cards_fbdev video_cards_glint video_cards_i128 video_cards_i740 video_cards_i810 video_cards_imstt video_cards_mga video_cards_neomagic video_cards_nsc video_cards_nv video_cards_rendition video_cards_s3 video_cards_s3virge video_cards_savage video_cards_siliconmotion video_cards_sis video_cards_sisusb video_cards_tdfx video_cards_tga video_cards_trident video_cards_tseng video_cards_v4l video_cards_vesa video_cards_vga video_cards_via video_cards_vmware video_cards_voodoo"
```

diese video_ USE Flags sind eigentlich für X wichtig. Trotzdem habe ich keinen X-Server auf meinem Server drauf.

Lieber Gruss

STiGMaTa

----------

## neonorm

danke an alle ich werd da jetzt ma ne runde drüber meditieren   :Cool: 

noch eine kurze frage

```
emerge -pv links

[...]

[ebuild N   ] sys-libs/gpm-1.20.1-r5  USE="(selinux)" 559KB

[ebuild N   ] www-client/links-2.1_pre20 USE="gpm ssl unicode (in rot)

                  -X -directfb -fcon -javascript etc... (in blau)

[..]

```

portage will mir damit also sagen:

1. gpm wird installiert weil links das braucht (daher in rot weiter unten) 

2.links wird installiert und setzte gpm ssl unicode voraus, es verfügt ausserdem über programmteile

die X javascript und so weiter unterstützen, die aber nicht mitcompiliert werden.

ich hoffe zumindest bis hier hab ich alles verstanden

so die frage ist jetzt, nimmt er X und javascript raus weil das so in meinen globalen USE-flags steht, oder weil ich die programme nicht installiert hab?

und noch eine frage : wie würde es aussehen wenn ich beispielsweise X installiert hätte, würde er dann in ner anderen farbe X dazuschreiben und damit anzeigen,

bei deinen globalen flags wird die X-unterstützung mit compiliert, ist aber nicht überlebenswichtig fürs programm du darfst es also raus nehmen.

im gegensatz zu ssl zum beispiel...

so ich hoffe ich bin nicht auf dem totalen holzweg

noch ma vielen dank an alle die mir geholfen haben!!!

----------

## firefly

 *neonorm wrote:*   

> danke an alle ich werd da jetzt ma ne runde drüber meditieren  
> 
> noch eine kurze frage
> 
> ```
> ...

 

Portage will dir folgendes damit sagen:

1. für das paket links sind die use-flags gpm ssl und unicode aktiv(ohne ein - davor), Die usflag können entweder global oder über einen paket-bezogenen eintrag in /etc/portage/package.use (Um beim beispiel von links zu bleiben: z.b www-client/links gpm).

2. das für das paket die USE-flags X directfb fcon javascript und alle anderen useflags mit einem '-' davor deaktiviert sind.

Auch wenn du jetzt X installiert hättest, würde links nicht mit X support übersetzt werden, wenn für links das X Use-flag deaktiviert ist.

Über die Use-flags kannst du optionale funktionalitäten eines programs aktivieren/deaktivieren. Bei manchen paketen werden dann zusätzliche pakete mit installiert, da sie als abhängigkeit zu diesem Paket (zum teil auch abhängig von USE-flags) im ebuild definiert wurden.

----------

## neonorm

dann war ich also zumindest nicht komplett aufm holzweg

danke für die geduld ich denke so langsam hab ichs

----------

## STiGMaTa_ch

 *neonorm wrote:*   

>  *Quote:*   emerge -pv links
> 
> [...]
> 
> [ebuild N   ] sys-libs/gpm-1.20.1-r5  USE="(selinux)" 559KB
> ...

 

Genau. Mit der gesetztem USE Flag gpm sagst du: Kompilier mir links mit gpm Unterstützung. Damit diese Unterstützung einkompiliert werden kann, brauchst du allerdings Programmteile aus gpm. Daher wird das gpm Paket ebenfalls installiert.

Vergleiche mal den Output von

```
emerge -pv links

und

USE="-gpm" emerge -pv links
```

 *neonorm wrote:*   

> 2.links wird installiert und setzte gpm ssl unicode voraus, 

 

Jein. mit z.B. dem gesetzten USE Flag ssl legst du nur fest, dass links auch ssl Fähig sein soll (z.B. um Onlinebanking machen zu können). Diese Unterstützung erhältst du aber nur, indem links gegen die ssl Bibliothek gelinkt/kompiliert wird. Und gegen diese Library kann er nur linken, wenn diese auch auf deinem System existent ist. Daraus schliesst sich folgendes:

1.) Hast du auf deinem System ssl als Globale USE Flag gesetzt, jedoch kein Programm welches effektiv ssl benötigt passiert das selbe wie wenn du ssl nicht gesetzt hast. Nähmlich nichts.

2.) Hast du auf deinem System ssl als Globale USE Flag gesetzt (oder auch nur für das links Paket) und installierst das Paket ohne dass ssl bisher vorhanden war, dann wird ssl ebenfalls als Abhängigkeit auf deinem System installiert.

3.) Existiert ssl bereits auf deinem System und du setzt nun speziell für links die ssl USE Flag, dann wird links einfach mit ssl Unterstützung kompiliert.

4.) Existiert ssl bereits auf deinem System und du hast ssl USE Flag nicht gesetzt, dann wird links einfach OHNE ssl Unterstützung kompiliert.

 *neonorm wrote:*   

> es verfügt ausserdem über programmteile die X javascript und so weiter unterstützen, die aber nicht mitcompiliert werden.
> 
> ich hoffe zumindest bis hier hab ich alles verstanden

 

Genau. Nehmen wir das X USE Flag als Beispiel.

MIT gesetztem X USE Flag wird links gegen gewisse Libraires von X gelinkt.

OHNE gesetztem X USE Flag wird links NICHT gegen Libraries von X gelinkt.

Je nachdem wie du es nun kompiliert hast wird beim start einer Konsole unter X und der eingabe von links in selbiger entweder ein simpler Text-Webbrowser gestartet (-X USE Flag) oder aber ein eigenes X-Fenster mit einem halbwegs grafischen Browser wird gestartet (X USE Flag).

 *neonorm wrote:*   

> so die frage ist jetzt, nimmt er X und javascript raus weil das so in meinen globalen USE-flags steht, oder weil ich die programme nicht installiert hab?

 

Tendenziell liegt es einfach daran, dass X nirgends gesetzt ist  :Smile: 

 *neonorm wrote:*   

> und noch eine frage : wie würde es aussehen wenn ich beispielsweise X installiert hätte, würde er dann in ner anderen farbe X dazuschreiben und damit anzeigen,bei deinen globalen flags wird die X-unterstützung mit compiliert, ist aber nicht überlebenswichtig fürs programm du darfst es also raus nehmen.

 

Ich weiss nicht wie es aktuell ist. Eine Zeit lang konnte ein installiertes Paket selber auch USE Flags setzen. Wenn du also z.b. bisher kein X USE Flag gesetzt hattest und du hingest und einen emerge x11-base/xorg-x11 machst, dann war danach X automatisch als USE Flag gesetzt.

Aber überlebenswichtig ist keines der USE Flags. JEDES Paket muss ohne ein gesetztes USE Flag durchkompilieren und funktionieren können. Sieh die USE Flags einfach als Features an.

Links ist da ein gutes Beispiel. Ohne irgend ein gesetztes USE Flag hast du einfach einen Textbasierten Webbrowser mit dem du nichts weiter machen kannst als Text dargestellt zu bekommen. Es werden keine Bilder angezeigt du hast keine Mausunterstützung und Onlinebanking kannst du auch vergessen.

Der Vorteil ist. Du musst nur links herunterladen, das ganze kompilieren und schon läuft das Programm.

Jetzt kannst du aber auch in der Console einen Framebuffer verwenden (Die Möglichkeit Grafik auf der Konsole darzustellen aber ohne Features wie Fenster, etc.). Dafür setzt du einfach das directfb Flag. Das alleine macht aber noch nicht viel Sinn. Daher könntest du ja die Unterstützung für Bilder mitkompilieren (jpeg png tiff). Und schon kann dein links (sofern mit framebuffer gestartet) plötzlich auch Bilder auf den Websites darstellen.

Für diese Features musst du aber Teile aus den Paketen media-libs/jpeg, media-libs/libpng, media-libs/tiff und dev-libs/DirectFB nutzen. Daher werden diese installiert.

Hoffe den Nebel gelichtet zu haben

Lieber Gruss

STiGMaTa

----------

## nikaya

@STiGMaTa_ch:

Ich dachte zwar dass ich bei der USE-Flag Geschichte einigermaßen durchblicke aber Deine Ausführungen haben mir noch wieder einiges klarer gemacht.

Gut und einfach erklärt,den Beitrag sollte man sticky machen.

----------

## franzf

So schön das beschrieben war um so aufschlussreicher wird es wenn du dir

1) Das ebuild anschaust (/usr/portage/kategorie/paket/paket-version.ebuild <- so kannst du dich orientieren)

IUSE listet die verfügbaren Flags auf (evtl. kommen noch default FLAGS hinzu, z.B. arts debug xinerama, wenn du inherit kde machst, also die kde.eclass lädst), aber das mal außen vor.

Nun schau dir zwei Abschnitte an:

DEPEND / RDEPEND und src_compile():

Hier wirst du mit Sicherheit deine USE-Flags wieder finden.

DEPEND / RDEPEND geben an von welchen Paketen dein Programm abhängt, eben (wie STIGMATA so schön beschrieben hat) welche USE-Flags welche zusätzlichen Pakete mitinstallieren müssen, da sie für das Feature benötigt werden.

2) Bei src_compile wirds interessant.

Such dir mal in /usr/portage/distfiles den tar mit der zu installierenden links-version raus. Entpacke ihn in deinem Home-Verzeichnis (z.B. ~/src) und wechsel ins Verzeichnis.

Gib ein ./configure --help. Du bekommst ne Latte an Optionen die du zur Vorbereitung des Kompilier-Vorgangs angeben kannst.

Hier wirst du vieles entdecken was du im Ebuild unter src_compile auch findest.

Was ist passiert?

Dis USE-Flags machen nix anderes als übersichtlich und simpel Funktionalität auf compile-Optionen abzubilden!

Eine wahnsinns Erleichterung, wenn du dir mal überlegst wie lange du bräuchtest um rauszufinden, wie du dein links jetzt übersetzen sollst dass du framebuffer-Support hast.

Leider, eins noch hinten nach, bilden nicht immer USE-Flags compile-Optionen ab.

Oftmals wird dynamisch vom configure-Script überprüft welche Komponenten vorhanden sind und baut dann noch zusätzliche Bestandteile (z.B. die QT-Gui zu strigi)

Ich konnte leider keine CMAKE-Option finden mit der ich steuern könnte ob die GUI gebaut wird oder nicht.

Ist QT drauf wird gebaut, sonst nicht.

Hier steuert das USE-Flag also nur eine Abhöngigkeit, aber keine configure-Option.

Ich hoffe du bist jetzt endgültig verwirrt  :Very Happy: 

Grüße

Franz

----------

