# Verständnisfrage:  equery depends kdebase

## buggybunny

Hallo zusammen, 

irgendwie verstehe ich folgende Ausgabe nicht:

```
 equery depends kdebase

[ Searching for packages depending on kdebase... ]

app-cdr/k3b-0.12.17 (kde? kde-base/kdebase)

media-sound/amarok-1.4.6-r1 (kde? kde-base/kdebase)

```

Nach der manpage von equery zu "depends":

 *Quote:*   

> 
> 
>        depends <local-opts> pkgspec
> 
>               This command displays all dependencies matching pkgspec.
> ...

 

bedeutet das doch, das amarok und k3b

```

app-cdr/k3b-0.12.17 (kde? kde-base/kdebase)

media-sound/amarok-1.4.6-r1 (kde? kde-base/kdebase)

```

kdebase als Abhängigkeit haben, richtig?

Aber kdebase ist bei mir gar nicht installiert:

```

emerge -s kdebase

Searching...   

[ Results for search key : kdebase ]

[ Applications found : 6 ]

 

*  kde-base/kdebase

      Latest version available: 3.5.7-r3

      Latest version installed: [ Not Installed ]

      Size of files: 23,842 kB

      Homepage:      http://www.kde.org/

      Description:   KDE base packages: the desktop, panel, window manager, konqueror...

      License:       GPL-2

*  kde-base/kdebase-data

      Latest version available: 3.5.7

      Latest version installed: 3.5.7

      Size of files: 23,823 kB

      Homepage:      http://www.kde.org/

      Description:   Icons, localization data and various .desktop files from kdebase. Includes the l10n, pics and applnk subdirs.

      License:       GPL-2

*  kde-base/kdebase-kioslaves

      Latest version available: 3.5.7-r1

      Latest version installed: 3.5.7-r1

      Size of files: 23,842 kB

      Homepage:      http://www.kde.org/

      Description:   kioslave: the kde VFS framework - kioslave plugins present a filesystem-like view of arbitrary data

      License:       GPL-2

*  kde-base/kdebase-meta

      Latest version available: 3.5.7

      Latest version installed: [ Not Installed ]

      Size of files: 0 kB

      Homepage:      http://www.kde.org/

      Description:   kdebase - merge this to pull in all kdebase-derived packages

      License:       GPL-2

*  kde-base/kdebase-pam

      Latest version available: 7

      Latest version installed: [ Not Installed ]

      Size of files: 0 kB

      Homepage:      http://www.kde.org

      Description:   pam.d files used by several KDE components.

      License:       as-is

*  kde-base/kdebase-startkde

      Latest version available: 3.5.7

      Latest version installed: [ Not Installed ]

      Size of files: 23,839 kB

      Homepage:      http://www.kde.org/

      Description:   startkde script, which starts a complete KDE session, and associated scripts

      License:       GPL-2

```

Amarok und K3b sind installiert und laufen fehlerfrei.....

Wie hab ich das nun zu verstehen?

----------

## Finswimmer

Entweder baut eix da grade Mist (zu überprüfen mit emerge kdebase -pv)

oder

du hast das KDE UseFlag nicht gesetzt.

Tobi

----------

## buggybunny

Hi

 *Quote:*   

> Entweder baut eix da grade Mist 

 

das versteh ich nicht? Ich hab zwar (zufälligerweise) eix installiert, aber inwiefern hat das was damit zu tun?

 *Quote:*   

> (zu überprüfen mit emerge kdebase -pv)

 

```
emerge kdebase -pv

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N    ] kde-base/kdebase-pam-7  0 kB 

[ebuild  N    ] x11-apps/xsetroot-1.0.1  USE="-debug" 76 kB 

[ebuild  N    ] x11-libs/libXfontcache-1.0.4  USE="-debug" 210 kB 

[ebuild  N    ] x11-apps/xset-1.0.2  USE="-debug" 91 kB 

[ebuild  N    ] kde-base/kdebase-3.5.7-r3  USE="cups hal java lm_sensors pam samba -arts -branding -debug -ieee1394 -kdeenablefinal -kdehiddenvisibility -ldap -logitech-mouse -openexr -opengl -xcomposite -xinerama -xscreensaver" 0 kB 

[blocks B     ] =kde-base/konqueror-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kicker-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kcontrol-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kdesu-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kdebase-data-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kfind-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/libkonq-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/khelpcenter-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kdebase-3.5* (is blocking kde-base/kdebase-data-3.5.7, kde-base/libkonq-3.5.7, kde-base/khelpcenter-3.5.7, kde-base/khotkeys-3.5.7, kde-base/kdesu-3.5.7, kde-base/kdialog-3.5.5, kde-base/kcminit-3.5.6, kde-base/kcontrol-3.5.7-r1, kde-base/kdebase-kioslaves-3.5.7-r1, kde-base/kate-3.5.7-r1, kde-base/kicker-3.5.7, kde-base/kfind-3.5.7, kde-base/konqueror-3.5.7-r2)

[blocks B     ] =kde-base/kdebase-kioslaves-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/khotkeys-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kcminit-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kdialog-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

[blocks B     ] =kde-base/kate-3.5* (is blocking kde-base/kdebase-3.5.7-r3)

```

Ähem, was sagt mir das jetzt?

 *Quote:*   

> oder
> 
> du hast das KDE UseFlag nicht gesetzt. 

 

Das "kde" use-flag hab ich schon direkt bei der Installation gesetzt....

Ich hab nicht zufälligerweise ein Problem mit den split-ebuilds von KDE?

Ich hab __alle__ kde-Anwendungen separat installiert, sprich

```

emerge amarok k3b konqueror .....

```

ging also demzufolge davon aus, das ich ausschließlich die split-ebuilds installiert hatte?

Oder bin ich da ganz auf dem Holzweg gerade?

----------

## slick

 *buggybunny wrote:*   

> 
> 
> Aber kdebase ist bei mir gar nicht installiert:
> 
> 

 

Doch, ist es. Und blockiert die neuen Pakete.

 *Quote:*   

> 
> 
> ```
> [blocks B     ] =kde-base/kdebase-3.5* (is blocking kde-base/kdebase-data-3.5.7, kde-base/libkonq-3.5.7, kde-base/khelpcenter-3.5.7, kde-base/khotkeys-3.5.7, kde-base/kdesu-3.5.7, kde-base/kdialog-3.5.5, kde-base/kcminit-3.5.6, kde-base/kcontrol-3.5.7-r1, kde-base/kdebase-kioslaves-3.5.7-r1, kde-base/kate-3.5.7-r1, kde-base/kicker-3.5.7, kde-base/kfind-3.5.7, kde-base/konqueror-3.5.7-r2) 
> ```
> ...

 

Und ja es sind die split-ebuilds, soweit stimmt das schon. 

Falls du dich wunderst, du mußt die 3.5* Pakete erst entfernen bevor du die neuen 3.5.7* installieren kannst. Also alle vor denen ein "B" steht und dann ein emerge -pvuDN world laufen lassen. Allerdings lies dir vor diesem Update ein wenig im Forum 1) gibt es bei expat was zu beachten und 2) mach ein Backup deines Adressbuches  :Wink: 

https://forums.gentoo.org/viewtopic-t-575501.html

----------

## Finswimmer

Nee nee. Er hat schon Recht und auch ich habe mich am Anfang geirrt.

 *Quote:*   

> [ebuild  N    ] kde-base/kdebase-3.5.7-r3  USE="cups hal java lm_sensors pam samba -arts -branding -debug -ieee1394 -kdeenablefinal -kdehiddenvisibility -ldap -logitech-mouse -openexr -opengl -xcomposite -xinerama -xscreensaver" 0 kB

 

Er hat kdebase wirklich nicht installiert. 

Er hat split-ebuilds. Wenn er nun versucht kdebase zu installieren gibt es einen Konflikt mit den Split-Ebuilds.

Ich würde alles so lassen. Split-Ebuilds haben große Vorteile, da dann nicht die großen Pakete neu kompiliert werden müssen, sondern nur bei Bedarf die kleinen Teile.

Equery zeigt dann wohl irgendeinen Mist an...

Tobi

Ps.: Slick, wohl zu lange nicht mehr im RL was mit Gentoo gemacht  :Wink: 

----------

## buggybunny

 *Quote:*   

> Er hat kdebase wirklich nicht installiert.
> 
> Er hat split-ebuilds. Wenn er nun versucht kdebase zu installieren gibt es einen Konflikt mit den Split-Ebuilds.
> 
> Ich würde alles so lassen. Split-Ebuilds haben große Vorteile, da dann nicht die großen Pakete neu kompiliert werden müssen, sondern nur bei Bedarf die kleinen Teile.
> ...

 

Der Fehler liegt doch dann in den ebuilds von amarok und k3b, oder?

Da muss dann doch als Abhängigkeit kdebase definiert sein? (Bin gerade knechten, kanns deshalb nicht prüfen)

Wenn ja, sollte man dann nicht mal die maintainer auf diesen Fehler hinweisen?

----------

## nikaya

In den Ebuilds steht es folgendermaßen drin:

k3b:

```
DEPEND="kde? ( || ( kde-base/kdesu kde-base/kdebase ) )
```

amarok:

```
RDEPEND="kde? ( || ( kde-base/konqueror kde-base/kdebase ) )
```

Wichtig ist hier der "oder"-Operator ("||").Dieser bedeutet imo wenn "kde" nicht gesetzt ist werden kdebase und kdesu bzw. konqueror zusätzlich gemerged.

----------

## buggybunny

 *Quote:*   

> 
> 
> Wichtig ist hier der "oder"-Operator ("||").Dieser bedeutet imo wenn "kde" nicht gesetzt ist werden kdebase und kdesu bzw. konqueror zusätzlich gemerged.
> 
> 

 

Ok, aber wie ich schon geschrieben hatte, hab ich ja "kde" schon __während__ der gentoo-Installation gesetzt.

Wo steckt denn dann hier der Fehler?

Ist das evtl. ein Bug in equery?

----------

## nikaya

 *buggybunny wrote:*   

> 
> 
> Ok, aber wie ich schon geschrieben hatte, hab ich ja "kde" schon __während__ der gentoo-Installation gesetzt.
> 
> 

 

Ich zitiere mich nochmal selber:

 *Quote:*   

> wenn "kde" nicht gesetzt ist

 

Da du "kde" gesetzt hast wird auch kein kdebase in die Abhängigkeiten gezogen.

----------

## musv

 *nikaya wrote:*   

> Wichtig ist hier der "oder"-Operator ("||").Dieser bedeutet imo wenn "kde" nicht gesetzt ist werden kdebase und kdesu bzw. konqueror zusätzlich gemerged.

 

Halt ich fürn Gerücht.

Ich hab in den Useflags "-kde" stehen. Meine installierten KDE-Packages: 

```

eix kde -Ic

[I] dev-util/kdevelop (3.4.1@16.06.2007): Integrated Development Environment for Unix, supporting KDE/Qt, C/C++ and many other languages.

[I] kde-base/kdebase-kioslaves (3.5.7-r1(3.5)@06.08.2007): kioslave: the kde VFS framework - kioslave plugins present a filesystem-like view of arbitrary data

[U] kde-base/kdelibs (3.5.7-r2(3.5)@31.07.2007 -> 3.5.7-r3(3.5)): KDE libraries needed by all KDE programs.

[I] kde-base/kdemultimedia-kioslaves (3.5.7(3.5)@14.07.2007): kioslaves from kdemultimedia package

[I] kde-base/kdeprint (3.5.7(3.5)@27.05.2007): KDE printer queue/device manager

[I] kde-base/kdesdk-kioslaves (3.5.7(3.5)@28.05.2007): kioslaves from kdesdk package: the subversion kioslave

[I] kde-base/libkdeedu (3.5.7(3.5)@27.05.2007): common library for kde educational apps

[I] sci-calculators/qalculate-kde (0.9.6@10.07.2007): A modern multi-purpose calculator for KDE

Found 8 matches.

```

Amarok und k3b sind auch bei mir installiert. Da ich mich erst vor ca. einem 3/4 Jahr langsam an einzelne KDE-Apps rangetastet hab, hab ich so mitbekommen, welche Anwendung welche Lib haben will. Und das, was bei den kdelibs in der Erklärung steht, simmt schon:

 *eix kdelibs wrote:*   

> 
> 
> KDE libraries needed by all KDE programs.
> 
> 

 

Sieht man mal bei kdebase nach:

 *eix kdebase wrote:*   

> 
> 
> KDE base packages: the desktop, panel, window manager, konqueror...
> 
> 

 

Amarok, k3b, kdevelop, kde-qualculate, quanta, rosegarden usw. laufen bei mir alle wunderprächtig (mit den gewohnten Abstürzen - besonders Quanta) nur mit kdelibs ohne kdebase. Kdebase scheint mir der Erklärung nach eher dafür verantwortlich zu sein, den KDE-Desktop mit allem drum und dran zur Verfügung zu stellen.

----------

## nikaya

Hmm,stimmt.kdebase als ganzes würde auch keinen Sinn machen.Vielleicht ist es ja so dass die Zeile

```
DEPEND="kde? ( || ( kde-base/kdesu kde-base/kdebase ) )
```

meint: "Nimm das Paket kde-base/kdesu aus dem Paket kde-base/kdebase".  :Confused:  Dann würden folglich auch immer Split-Ebuilds dafür verwendet.

Mich wundert schon ein wenig dass Du kein kdesu installiert hast,dieses braucht k3b nämlich um die Rechte zu setzten.Und dann würde meine oben genannte Theorie Sinn machen.

----------

## musv

 *nikaya wrote:*   

> Mich wundert schon ein wenig dass Du kein kdesu installiert hast,dieses braucht k3b nämlich um die Rechte zu setzten.Und dann würde meine oben genannte Theorie Sinn machen.

 

```

-rws--x--- 1 root cdrw 637827  5. Mär 2007  cdrdao

-rwxr-xr-x 1 root root 307704 27. Mai 09:19 wodim

```

Weiß jetzt nicht mehr, ob mich k3b darauf hingewiesen hat beim ersten Start, oder ob ich die Rechte schon vorher gesetzt hatte. kdesu ist zumindest keine (notwendige) Abhängigkeit von k3b.

----------

## tgurr

```
DEPEND="kde? ( || ( kde-base/kdesu kde-base/kdebase ) )
```

Bedeutet ganz einfach "entweder oder", was den Sinn hat, dass es sowohl mit den monolithischen als auch den split ebuilds funktioniert.

monolithisch = kdebase (in kdebase ist kdesu drin)

split = kdesu mit all seinen Abhängigkeiten.Last edited by tgurr on Sat Sep 15, 2007 9:30 pm; edited 1 time in total

----------

## Necoro

 *nikaya wrote:*   

> In den Ebuilds steht es folgendermaßen drin:
> 
> k3b:
> 
> ```
> ...

 

Falsch - es bedeuted: Wenn KDE gesetzt ist ("kde ?") dann benötigt das Paket eins der veroderten Pakete  :Smile: 

----------

## nikaya

 *Necoro wrote:*   

> Falsch - es bedeuted: Wenn KDE gesetzt ist ("kde ?") dann benötigt das Paket eins der veroderten Pakete 

 

Hmm,irgendwie habe ich da ein Verständnisproblem.

Ich hänge mich an dem ODER-Operator auf.Laut Definition auf dieser Seite heißt es:

 *Quote:*   

> Das Pendant zur UND-Liste ist die ODER-Verknüpfung durch 
> 
> Kommando1 [ ||Kommando2 ...] 
> 
> Hier wird das Kommando2 nur dann ausgeführt, wenn bei der Bearbeitung vom Kommando1 ein Fehler aufgetreten ist. Analog zur UND-Verknüpfung kann auch die Verkettung durch || als logische ODER-Verknüpfung betrachtet werden. Der Status der ODER-Liste ist wahr, wenn das erste oder das zweite Kommando einen Status Null liefert. Wenn das bereits beim ersten Kommando erfüllt ist, wird das zweite nicht mehr ausgeführt.

 

Um bei folgendem Beispiel zu bleiben:

```
DEPEND="kde? ( || ( kde-base/kdesu kde-base/kdebase ) )
```

Ich verstehe es so dass das folgende Kommando nur ausgeführt wird wenn "kde?" nicht gesetzt ist,also mit Status Eins endet.Es kann natürlich sein dass durch die Klammerung meine Überlegungen ein wenig zunichte gemacht werden.

Du wirst wohl recht haben,programmierst schließlich ein wenig mehr als ich.Wäre aber dankbar wenn Du es mir ein wenig detailierter aufdröseln könntest.

----------

## mv

 *nikaya wrote:*   

> Ich hänge mich an dem ODER-Operator auf.

 

Es geht hier nicht um Shell-Code, sondern um die Interpretation der DEPENDS-Variable durch portage. Und die folgt nun mal eigenen Regeln.

Übigens ist es schon eine FAQ, dass man equery depends praktisch nicht nutzen kann: Das ist nur ein einfacher Hack und ignoriert die gesetzten USE-Flags und noch einiges andere. M.E. sollte man diese Funktionalität vollkommen entfernen, weil sie immer nur Verwirrung stiftet und letztlich zu nichts nutze ist.

----------

## nikaya

 *mv wrote:*   

> Es geht hier nicht um Shell-Code, sondern um die Interpretation der DEPENDS-Variable durch portage. Und die folgt nun mal eigenen Regeln.

 

 *http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1#doc_chap2 wrote:*   

> 
> 
> Ebuild scripts are the basis for the entire portage system. They contain all the information required to download, unpack, compile and install a set of sources, as well as how to perform any optional pre/post install/removal or configuration steps. While most of Portage is written in Python,the ebuild scripts themselves are written in bash, since using bash allows us to call commands as we would from the command-line. One of the important design principles behind ebuild scripts is to have the commands therein be analogs of those one would type on the command-line if installing the package manually. For this purpose,using bash syntax is a very good thing.

 

----------

## Necoro

 *nikaya wrote:*   

>  *Necoro wrote:*   Falsch - es bedeuted: Wenn KDE gesetzt ist ("kde ?") dann benötigt das Paket eins der veroderten Pakete  
> 
> Hmm,irgendwie habe ich da ein Verständnisproblem.
> 
> Ich hänge mich an dem ODER-Operator auf.Laut Definition auf dieser Seite heißt es:
> ...

 

Das Problem ist, dass die Dokumentation Infix-Notation verwendet (also der Operator steht zwischen den Operanden) - im ebuild an sich aber die Prefix-Notation benutzt wird, also der Operator steht vor den Operanden...

/edit: Und ja - ebuilds sind shell-skripte, aber das verwendete "oder" ist trotzdem nicht das shell-oder

----------

## nikaya

 *Necoro wrote:*   

> Das Problem ist, dass die Dokumentation Infix-Notation verwendet (also der Operator steht zwischen den Operanden) - im ebuild an sich aber die Prefix-Notation benutzt wird, also der Operator steht vor den Operanden...

 

Die Prefix-Notation habe ich,ehrlich gesagt,noch nie gesehen.Deshalb war ich davon ausgegangen dass der Operator sich auf "kde?" und "kde-base/kdesu kde-base/kdebase" bezieht.Durch die Klammerung hat der ODER-Operator also nichts mit dem "kde?"-Operator zu tun?

Wenn das so ist bedeutet das jetzt was für ( || ( kde-base/kdesu kde-base/kdebase ) )??

Nimm erst kdesu,wenn das nicht geht (keine Split-Ebuilds) nimm kdebase (monolithisch)??

 *Necoro wrote:*   

> /edit: Und ja - ebuilds sind shell-skripte, aber das verwendete "oder" ist trotzdem nicht das shell-oder

 

Kannst Du das näher erläutern?

----------

## buggybunny

Da hab ich ja ne interessante Diskussion angestoßen..... :Smile: 

 *Quote:*   

> Übigens ist es schon eine FAQ, dass man equery depends praktisch nicht nutzen kann: Das ist nur ein einfacher Hack und ignoriert die gesetzten USE-Flags und noch einiges andere. M.E. sollte man diese Funktionalität vollkommen entfernen, weil sie immer nur Verwirrung stiftet und letztlich zu nichts nutze ist.

 

Was würde man denn stattdessen nehmen?

Wenn ich die manpage von emerge richtig verstanden habe, bietet das emerge ja nicht?

----------

## Necoro

 *nikaya wrote:*   

> Wenn das so ist bedeutet das jetzt was für ( || ( kde-base/kdesu kde-base/kdebase ) )??
> 
> Nimm erst kdesu,wenn das nicht geht (keine Split-Ebuilds) nimm kdebase (monolithisch)??

 

exakt

 *nikaya wrote:*   

>  *Quote:*   /edit: Und ja - ebuilds sind shell-skripte, aber das verwendete "oder" ist trotzdem nicht das shell-oder 
> 
> Kannst Du das näher erläutern?

 

Die ganzen "?DEPEND"s sind ja strings. D.h., dass das || darin nicht von der shell ausgewertet wird, sondern von portage. (Dass Portage jetzt auch "||" gewählt hat, mag zwar verwirren - aber es ist nun mal die geläufige "oder"-schreibweise  :Smile: )

----------

## nikaya

 *Necoro wrote:*   

> 
> 
> Die ganzen "?DEPEND"s sind ja strings. D.h., dass das || darin nicht von der shell ausgewertet wird, sondern von portage. (Dass Portage jetzt auch "||" gewählt hat, mag zwar verwirren - aber es ist nun mal die geläufige "oder"-schreibweise )

 

Ja,das macht natürlich Sinn.Ich dachte bisher dass Ebuilds nur vom Skript ebuild.sh und den eclass Funktionen bearbeitet werden.Aber Portage muß natürlich zumindest in den oberen Teil reinschauen (SLOT,KEYWORDS,DEPEND usw.) für die Berechnung der Abhängigkeiten.Erst dann kommt ebuild.sh zum Einsatz.

Dann sind diese Konstrukte wie kde? ( || ( kde-base/kdesu kde-base/kdebase ) ) also reine Portage-Syntax?

----------

## Necoro

 *nikaya wrote:*   

> Dann sind diese Konstrukte wie kde? ( || ( kde-base/kdesu kde-base/kdebase ) ) also reine Portage-Syntax?

 

Aye

----------

## buggybunny

Sorry noch mal nerven zu müssen, aber verrät mir noch jemand, was man stattdessen

 *Quote:*   

> 
> 
> Übigens ist es schon eine FAQ, dass man equery depends praktisch nicht nutzen kann: Das ist nur ein einfacher Hack und ignoriert die gesetzten USE-Flags und noch einiges andere. M.E. sollte man diese Funktionalität vollkommen entfernen, weil sie immer nur Verwirrung stiftet und letztlich zu nichts nutze ist.
> 
> nikaya 	
> ...

 

benutzen würde?

----------

## Necoro

Schau dir mal udept an

----------

## buggybunny

Hi,

das sieht sehr gut aus!

Danke!

----------

## psyqil

Die eigentliche Frage scheint noch offen zu sein; ich glaube, daß emerge -pv kdebase-meta geeignet ist, eine elegante Antwort zu liefern...  :Mr. Green: 

----------

## nikaya

Nachtrag zu meinem DEPENDS Problem:

In der Doku auf devmanual.gentoo.org habe ich es auch nochmal gefunden:

 *Quote:*   

> Any of Many Dependencies 
> 
> To depend on either foo or bar: 
> 
> ```
> ...

 

Quelle:http://devmanual.gentoo.org/general-concepts/dependencies/index.html

----------

