# [solved] Use Flag von inst. Paketen

## ok

Kann man sich alle installierten Pakete anzeigen, welche ein bestimmtes USE-Flag nutzen?

Mein Problem, ich hatte ursprünglich ipv6 nicht gesetzt  (-ipv6), dann hatte ich es eine Zeit zum testen wieder gesetzt und wieder mal nicht....

Jetzt brauche ich zwei Paketlisten, eine mit allen Paketen mit gesetztem ipv6 und eine ohne.

Am liebsten wäre mir ein Bash Script, leider habe ich keine verwertbaren Informationen unter 

```
/var/db/pkg/
```

 gefunden.

Bin für jede Anregung dankbar.Last edited by ok on Mon Apr 16, 2007 6:33 pm; edited 1 time in total

----------

## franzf

```
equery hasuse ipv6
```

equery ist in gentoolkit zu finden.

Grüße

Franz

----------

## ok

Danke für die Antwort, *franzf wrote:*   

> 
> 
> ```
> equery hasuse ipv6
> ```
> ...

 

equery zeigt mir leider nur die Pakete bei welchen ein bestimmtes Use Flag definiert ist, aber nicht ob ich es beim emerge auch 'an' hatte.

```
eix:

[I] app-admin/conky

     Available versions:  1.4.5

     Installed versions:  1.4.5(14:20:55 04/09/07)(X audacious -bmpx -hddtemp -ipv6 -mpd truetype vim-syntax)

                                                                              ^^^^^

[I] mail-mta/ssmtp

     Available versions:  2.61-r2 [M](~)2.61-r30 [M](~)2.61-r31

     Installed versions:  2.61-r2(00:44:24 04/09/07)(ipv6 -mailwrapper -md5sum ssl)

                                                     ^^^^

equery h:

[I--] [  ] app-admin/conky-1.4.5 (0)

[I--] [  ] mail-mta/ssmtp-2.61-r2 (0)
```

----------

## tgurr

```
USE="ipv6" emerge -uD world --pretend --newuse
```

zeigt dir an welche installierten Pakete ohne ipv6-Useflag installiert wurden.

Bevor du das --pretend weg lässt, ipv6 in die make.conf eintragen, falls nicht schon geschehen oder es mit deinem ausgewählten Profil eh schon gesetzt wurde.

----------

## ok

 *Psy' wrote:*   

> 
> 
> ```
> USE="ipv6" emerge -uD world --pretend --newuse
> ```
> ...

 

Danke Psy, da stand ich irgendwie auf dem Schlauch...

Noch aus Interesse, wo wird das abgespeichert? Hab schon unter /var/db/pkg/... nachgesehen, aber nichts passendes gefunden.

----------

## Necoro

 *ok wrote:*   

> Noch aus Interesse, wo wird das abgespeichert? Hab schon unter /var/db/pkg/... nachgesehen, aber nichts passendes gefunden.

 

du hast richtig vermutet:

gesetzte UseFlags: /var/db/pkg/$CAT/$PKG-$VER/USE

UseFlags, die das Paket selber anbietet: /var/db/pkg/$CAT/$PKG-$VER/IUSE

----------

## ok

Danke für die Info, ich hab auf die Schnelle einen (wenn auch nicht so kurzen) Einzeiler geschrieben:

```
find /var/db/pkg -mindepth 2 -name IUSE -exec grep -H ipv6 '{}' \; | sed 's,IUSE:.*,USE,' | xargs grep ipv6 | cut -d/ -f5-6
```

Funktioniert wie gewünscht und ich lernte etwas dazu. Danke.

----------

## mv

 *ok wrote:*   

> Kann man sich alle installierten Pakete anzeigen, welche ein bestimmtes USE-Flag nutzen?

 

Mit

```
eix --use ipv6 -a --installed
```

bekommst Du alle installierten Pakete angezeigt, bei denen eine (nicht unbedingt die installierte) Version ipv6 benutzt.

----------

## ok

Danke für die Antwort, aber:

man eix:

```
-U, --use

              The useflags defined by IUSE in the ebuild (not that of installed packages). ....
```

Ist das gleiche Ergebnis wie mit equery hasuse. Es werden nur die definierten USE-Flags angezeigt und nicht diejenigen, welche beim emerge gesetzt waren. Das einzige Tool welches ich gefunden habe und die USE-Flags dem entsprechend anzeigt ist app-portage/genlop:

```
genlop -i $PKG
```

Ist aber nicht so praktisch wenn man die Ausgabe weiterverarbeiten möchte. Lösung s.o.

----------

## mv

 *ok wrote:*   

> Es werden nur die definierten USE-Flags angezeigt und nicht diejenigen, welche beim emerge gesetzt waren.

 

Es werden alle Pakete angezeigt, in denen eine der Versionen das USE-Flag nutzen könnte. Ob das Paket bei der Installation das USE-Flag gesetzt hatte oder nicht, siehst Du in der "Installed:"-Zeile der Ausgabe (natürlich kannst Du ggf. die Ausgabe per eix-Environment-Variablen in einem anderen Format ausgeben und mit grep weiterselektieren).

Je nachdem, wie "populär" das USE-Flag ist, kann diese Methode sehr viel schneller sein, als den gesamten /var/db-Baum zu durchsuchen, weil eben nur bei den Paketen nachgeschaut wird, in denen das USE-Flag überhaupt auftreten kann.

----------

## Necoro

 *ok wrote:*   

> Danke für die Info, ich hab auf die Schnelle einen (wenn auch nicht so kurzen) Einzeiler geschrieben:
> 
> ```
> find /var/db/pkg -mindepth 2 -name IUSE -exec grep -H ipv6 '{}' \; | sed 's,IUSE:.*,USE,' | xargs grep ipv6 | cut -d/ -f5-6
> ```
> ...

 

Dies liefert auch die richtigen ergebnisse  :Smile:  (auch wenn ich immer noch nicht wirklich verstehe, was es macht  :Wink: )

----------

## ok

mv: Du hast recht, wenn man es öfters braucht ist eix sicherlich effizienter. Ich nutze eix immer wenn ich Pakete suche, z.B. ist eix -uc eine gute Möglichkeit updates nach einem sync anzuzeigen, oder die Suche in Overlays, slotted Packete.....

Necoro:

find /var/db/pkg -mindepth 2 -name IUSE 

-> entspricht /var/db/pkg/*/*/IUSE

-exec grep -H ipv6 '{}' \; 

-> {} wird durch Dateiname ersetzt (.../IUSE) ';' Ende des -exec Kommandos, beides muss maskiert sein ( '...', \ )

suche nach ipv6, -H Ausgabe des Deinamens - nötig, da jeder Dateiname einzeln an grep übergeben wird

| sed 's,IUSE:.*,USE,' 

IUSE durch USE ersetzen

| xargs grep ipv6 | cut -d/ -f5-6

in .../USE - Dateien nach ipv6 suchen und überschüssiges abschneiden

----------

## Necoro

okay  :Smile:  danke für die Erklärung  :Smile:  ... entspricht also dem, was ich mir theoretisch dachte, wie man es machen muss - hätte nicht gedacht, dass das so einfach geht

----------

## BlueSkyDriver

```
qlist -U [paketname]
```

qlist findest Du in app-portage/portage-utils

----------

## mv

Nur der Vollständigkeit halber: Mit >=eix-0.9.4 geht 

```
eix --installed-with-use -e ipv6
```

 sowie 

```
eix --installed-without-use -e ipv6
```

----------

## ok

 *mv wrote:*   

> Nur der Vollständigkeit halber: Mit >=eix-0.9.4 geht 
> 
> .....

 Und ab wann ist die im portage tree?

----------

## bbgermany

Hi,

es ist bereits im portage: http://www.gentoo-portage.com/app-portage/eix

Jedoch ist es ~x86 maskiert.

Das sollte es möglich machen es zu installieren:

```

# echo "app-portage/eix ~x86" >> /etc/portage/package.keywords

# emerge -av app-portage/eix

```

MfG. Stefan

----------

## mv

 *mv wrote:*   

> Nur der Vollständigkeit halber: Mit >=eix-0.9.4 geht 
> 
> ```
> eix --installed-with-use -e ipv6
> ```
> ...

 

Gerade fällt mir auf, dass man dadurch natürlich den vorher betonten Geschwindigkeitsvorteil verliert. Man verliert ihn nicht, wenn man statt dessen 

```
eix --use -e ipv6 -a --installed-with-use -e ipv6
```

 bzw. 

```
eix --use -e ipv6 -a --installed-without-use -e ipv6
```

 benutzt. Der Nachteil dieser "schnellen" Lösung gegenüber der vorherigen ist, dass sie diejenigen Pakete übersieht, aus denen nach der Installation das Useflag aus dem Ebuild entfernt wurde...

----------

