# USE Varaible konfigurieren

## Kaini

Ich habe zwar das (http://www.gentoo.org/dyn/use-index.xml) gefunden aber die Erklärungen sind mehr als dürftig. Kurz gesagt ich hab keine Ahnung was ich in die USE Variable schreiben soll...

Ich arbeite auf einem XFCE-System und benuze das Desktop-Profil(2007.0). Wie man sieht hab ich eine NVIDIA Grafikkarte, einen AMD Athlon X2 Prozessor und benötige DVB-T. Das System ist auf UNICODE umgestellt und es läuft ALSA.

(Leider nicht von Anfang an) Ich bin erst vor kurzem auf XFCE umgestiegen und habe jetzt noch die ganzen KDE Pakete im System wie bekomme ich denn den wieder weg?

```
# /etc/make.conf

CFLAGS="-march=k8 -msse3 -O2 -pipe"

CXXFLAGS="${CFLAGS}"

CHOST="i686-pc-linux-gnu"

MAKEOPTS="-j3"

GENTOO_MIRRORS="http://gentoo.inode.at/ http://gd.tuwien.ac.at/opsys/linux/gentoo/ "

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="alsa cups dvb -gnome hal -kde midi nls nvidia unicode xvmc"

INPUT_DEVICES="keyboard mouse"

VIDEO_CARDS="nvidia nv"

LINGUAS="de"

FEATURES="parallel-fetch ccache"

CCACHE_DIR="/root/.ccache"

CCACHE_SIZE="2G"
```

```
~ $ cat /proc/cpuinfo | grep flags

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8legacy ts fid vid ttp tm stc

```

----------

## mv

 *Kaini wrote:*   

> keine Ahnung was ich in die USE Variable schreiben soll...

 

```
emerge ufed && ufed
```

----------

## Kaini

Evtl bin ich ein bisschen ignorant aber wie kann man mit ufed ein Minus vor eine Variable bringen?

----------

## jkoerner

Moin,

mit ufed kannst du dich eigentlich mehr informieren was es an USE-Flags gibt und wofür die sind. Grundsätzliche USE-Flags trägst du in /etc/make.conf ein, für einzelne Pakete benutzt du dafür die /etc/portage/package.use

Ich finde die manuelle Vorgehensweise immer noch am sinnvollsten, weil das nachvollziehbar bleibt.

----------

## Kaini

 *jkoerner wrote:*   

> Moin,
> 
> mit ufed kannst du dich eigentlich mehr informieren was es an USE-Flags gibt und wofür die sind. Grundsätzliche USE-Flags trägst du in /etc/make.conf ein, für einzelne Pakete benutzt du dafür die /etc/portage/package.use
> 
> Ich finde die manuelle Vorgehensweise immer noch am sinnvollsten, weil das nachvollziehbar bleibt.

 

Ok, verständlich...

Jetzt kommt eine etwas schwierigere Frage: Gibt es ein Skript welches die USE-Flags der installierten Pakete mit den USE-Flags in den besagten drei Dateien vergleicht und ausgibt welche USEs aus einer der drei Dateien genommen wurden und welche Flags standardmäßig (also ohne Angabe) verwendet wurden? Also etwa eine so eine Ausgabe:

foo/bar-0.8.1-r5 -gnome -kde -fubar blubb 3dnow teletext

Wobei die orangen aus dem USE-Flag verwendet wurden und die blauen standardmäßig.

Kann man sich überhaupt irgendwie anzeigen lassen mit welchen Flags ein Paket kompiliert wurde??

----------

## mv

Anders als jkoerner sehe ich keinen Grund, die USE-Variable manuell zu ändern - ich finde, ufed macht das großartig.

 *Kaini wrote:*   

> Evtl bin ich ein bisschen ignorant aber wie kann man mit ufed ein Minus vor eine Variable bringen?

 

Du siehst doch bei ufed ganz links, ob das Flag selektiert ist oder nicht (also das Feld, das Du ändern kannst). ufed speichert immer "minimalistisch", d.h. wenn das Flag schon "per Default" (also im Profile) selektiert wurde und Du es selektiert lässt, wird ufed es nicht in Deine USE-Variable abspeichern. Wenn Du es deselektierst, wird es mit dem Minus davor abgespeichert. Dies beantwortet auch Deine andere Frage: Wenn Du für ein Flag wissen willst, ob es im Profile selektiert wurde, brauchst Du nur nachzuschauen, ob ufed es in make.conf abgespeichert hat.

Einzige Ausnahme von der obigen Regel besteht, wenn Du das Flag -* selektierst. In dem Fall wird ufed -* als erstes Flag speichern und ansonsten natürlich genau die Flags, die Du selektiert hast (und niemals ein Minus vor ein anderes useflag setzen), denn -* bedeutet ja: "Ignoriere die Default/Profile useflags".

----------

## Kaini

Schon aber wenn jetzt z. B.... ok mir fällt kein Beispiel ein aber es gibt ja optimale Abhängigkeiten die standardmäßig mit kompiliert werden, diese muss man ausdrücklich mit -blubb deaktivieren und wenn jetzt dieses Flag noch nirgends definiert wurde wie bekomme ich dann mit ufed ein Minus davor?

----------

## jkoerner

Mit ufed werden die  USE-Flags hinzugefügt bzw aus der Liste entfernt. Selbst das  Handbuch schweigt sich hierzu aus und empfiehlt die Minuszeichen. Für ein besseres Verständnis lese bitte einmal die 'man ufed'.

Die Bevorzugung der manuellen Methode resultiert bei mir auch aus der Gewohnheit heraus und der Verwendung eines anderen Paketmanagement als portage. Dort muss ich sowieso die lokalen Bedürfnisse per Hand eintragen.

----------

## mv

 *Kaini wrote:*   

> Schon aber wenn jetzt z. B.... ok mir fällt kein Beispiel ein aber es gibt ja optimale Abhängigkeiten die standardmäßig mit kompiliert werden

 

Falls die Erklärung von jkoerner zu unklar war: Wenn useflag foo nicht von Deinem Profile aktiviert wurde, hat USE=-foo derzeit überhaupt keine Wirkung. Die einzige Wirkung, die es hätte, wäre, das Flag auch im Fall einer künftigen Änderung des Profiles deaktiviert zu lassen. Das geht mit ufed nicht, außer Du wählst das -*, was sich empfiehlt, wenn Du gegenüber Profile-Änderungen "resistent" sein willst.

Bei normaler Konfiguration hat übrigens use.defaults keine Wirkung mehr - die verwirrende Tatsache, dass Pakete selbständig useflags aktivieren können wurde glücklicherweise abgeschafft.

----------

## Kaini

Ich hab jetzt die Dokumentation nochmal gelesen und jetzt hat es Klick gemacht...

Eine Frage hätte ich noch: Wozu benötige ist das USE Flag berkdb? Kann ich das abdrehen?

----------

## franzf

 *Kaini wrote:*   

> Eine Frage hätte ich noch: Wozu benötige ist das USE Flag berkdb? Kann ich das abdrehen?

 

```
$ euse -i berkdb

global use flags (searching: berkdb)

************************************************************

[+  D ] berkdb - Adds support for sys-libs/db (Berkeley DB for MySQL)
```

Oder meintest du, ob du nun unbedingt sys-libs/db brauchst?

----------

## Kaini

 *franzf wrote:*   

> Oder meintest du, ob du nun unbedingt sys-libs/db brauchst?

 

Ja genau... Mir fielen einige Pakete auf, die +perkdb haben und ich weiß nicht ob ich das brauche.

----------

## blice

 *Kaini wrote:*   

>  *jkoerner wrote:*   Moin,
> 
> mit ufed kannst du dich eigentlich mehr informieren was es an USE-Flags gibt und wofür die sind. Grundsätzliche USE-Flags trägst du in /etc/make.conf ein, für einzelne Pakete benutzt du dafür die /etc/portage/package.use
> 
> Ich finde die manuelle Vorgehensweise immer noch am sinnvollsten, weil das nachvollziehbar bleibt. 
> ...

 

eix   zeigt Dir welche Use-Flags möglich wären, und welche aktuell.. falls installiert sind..

```

localhost bodo # eix bluefish

[I] app-editors/bluefish

     Available versions:  1.0 ~1.0.2 ~1.0.4 ~1.0.4-r1 ~1.0.5 ~1.0.6 ~1.0.7 {gnome nls spell}

     Installed versions:  1.0(09:14:52 10/29/07)(nls spell)

```

----------

## mv

 *blice wrote:*   

> eix   zeigt Dir welche Use-Flags möglich wären, und welche aktuell.. falls installiert sind..

 

Jein: Bei "installed versions" zeigt es an, welche Flags das Paket zum Zeitpunkt der Installation beachtet hat und welche davon gesetzt waren. Welche bei einem erneuten emerge aktiv wären, kümmert eix nicht.

Bei "available versions" zeigt eix an, welche Flags das Paket (laut IUSE) beachtet. Auch hier zeigt eix nicht an, welche aktiv sind. Da die benutzten Flags oft von der Version abhängen (nicht nur vom Paket), empfiehlt es sich, eix die Option -l mitzugeben, vgl. etwa 

```
eix -e gcc -o glibc
```

 vs. 

```
eix  -le gcc -o glibc
```

----------

## Kaini

 *mv wrote:*   

>  *blice wrote:*   eix   zeigt Dir welche Use-Flags möglich wären, und welche aktuell.. falls installiert sind.. 
> 
> Jein: Bei "installed versions" zeigt es an, welche Flags das Paket zum Zeitpunkt der Installation beachtet hat und welche davon gesetzt waren. Welche bei einem erneuten emerge aktiv wären, kümmert eix nicht.

 

Dafür hab ich jetzt den folgenden Befehl, leider hat er eine sehr unverarbeitbare Ausgabe...

```
equery u gcc
```

 *mv wrote:*   

> Bei "available versions" zeigt eix an, welche Flags das Paket (laut IUSE) beachtet. Auch hier zeigt eix nicht an, welche aktiv sind. Da die benutzten Flags oft von der Version abhängen (nicht nur vom Paket), empfiehlt es sich, eix die Option -l mitzugeben, vgl. etwa 
> 
> ```
> eix -e gcc -o glibc
> ```
> ...

 

Hat beides eine gewaltige Ausgabe! Leider weiß ich nicht worauf du hinaus willst...

Ich hab mir jetzt ein kleines Script geschrieben welches unnötige USE-Flags meldet. (Nur noch ein bisschen unbequem...)

----------

