Sie sind nicht angemeldet.

1

03.05.2012, 20:02

emerge --depclean Verständnisfrage

Hallo allerseits,



nach einem emerge -auvDN world wollte ich ein emerge --ask --depclean ausführen. Es kommt dann aber folgendes:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 Calculating dependencies... done!

 * Dependencies could not be completely resolved due to

 * the following required packages not being installed:

 * 

 *   virtual/pkgconfig pulled in by:

 *     dev-util/cmake-2.8.6-r4

 * 

 * Have you forgotten to do a complete update prior to depclean? The

 * most comprehensive command for this purpose is as follows:

 * 

 *   emerge --update --newuse --deep --with-bdeps=y @world

 * 

 * Note that the --with-bdeps=y option is not required in many

 * situations. Refer to the emerge manual page (run `man emerge`)

 * for more information about --with-bdeps.

 * 

 * Also, note that it may be necessary to manually uninstall

 * packages that no longer exist in the portage tree, since it may

 * not be possible to satisfy their dependencies.




Das hatte ich bisher noch nie. Was genau will mir Gentoo hier sagen?

Wenn ich es richtig sehe, dann ist das Paket virtual/pkgconfig neu und neuerdings würde es mit einem dev-util/cmake installiert werden, oder?



Ein

Quellcode

1
emerge --ask --update --newuse --deep --with-bdeps=y @world


würde folgendes installieren:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
These are the packages that would be merged, in order:



Calculating dependencies... done!

[ebuild     U  ] app-arch/cabextract-1.4 [1.3]

[ebuild     U  ] dev-lang/swig-2.0.4-r1 [2.0.2]

[ebuild  NS    ] app-text/docbook-sgml-dtd-4.4 [3.0-r3, 3.1-r3, 4.0-r3, 4.1-r3]

[ebuild  N     ] virtual/pkgconfig-0 

[ebuild  N     ] perl-core/ExtUtils-Manifest-1.580.0 

[ebuild  N     ] perl-core/ExtUtils-Install-1.54 

[ebuild  N     ] perl-core/ExtUtils-Command-1.170.0 

[ebuild  N     ] virtual/perl-ExtUtils-Manifest-1.580.0-r1 

[ebuild  N     ] virtual/perl-ExtUtils-Install-1.54 

[ebuild  N     ] virtual/perl-ExtUtils-Command-1.170.0-r2 

[ebuild  N     ] perl-core/ExtUtils-MakeMaker-6.620.0 

[ebuild     U  ] virtual/perl-ExtUtils-MakeMaker-6.620.0 [6.56]

[ebuild     U  ] x11-misc/xorg-cf-files-1.0.4 [1.0.3]

[ebuild     U  ] x11-misc/imake-1.0.4 [1.0.3]

[ebuild  N     ] dev-util/gtk-builder-convert-2.24.10 

[ebuild     U  ] app-text/asciidoc-8.6.5 [8.5.3] USE="-highlight% (-test)" 

[ebuild     U  ] sys-apps/help2man-1.40.8 [1.38.2]

[ebuild     U  ] dev-lang/nasm-2.10 [2.09.10]

[ebuild  N     ] dev-perl/XML-SAX-Base-1.80.0 

[ebuild     U  ] dev-perl/XML-SAX-0.990.0 [0.16]

[blocks b      ] <dev-perl xml-sax-0.990.0="" ("<dev-perl="" xml-sax-0.990.0"="" is="" blocking="" dev-perl="" xml-sax-base-1.80.0)="" 
[ebuild     U  ] dev-perl/XML-LibXML-1.900.0 [1.70] USE="-test%"


Kann man das einfach so machen?



Irgendwie hängt all das mit dem virtual/pkgconfig zusammen, oder? Was passiert bei einem "reinen" emerge virtual/pkgconfig? Würde der ganze andere Rest dann beim nächsten emerge -auvDN world nachgezogen werden? Oder braucht es dafür immer die Option "--with-bdeps=y"?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »heichro« (20.05.2012, 16:31)


2

03.05.2012, 21:03

Can you try to "emerge -1 dev-util/cmake" and rerun "emerge --depclean" afterwards?

Gentoo tries to tell you that for doin depclean all necessary packages have to be installed. In your case dev-util/cmake is missing so depclean refuses to clean. It's kinda weird emerge -vDNua @world hasn't installed it automatically...


//edit: Sorry, zu viel auf freenode unterwegs... Also noch mal auf deutsch.

Kannst Du bitte "emerge -1 dev-util/cmake" gefolgt von "emerge --depclean" probieren?

Gentoo versucht Dir mitzuteilen, dass nicht alle notwendigen Pakete installiert sind und deshalb lehnt depclean die Arbeit ab. Es ist aber schon verwirrend, dass ein emerge -vDNua @world dieses Paket nicht automatisch ins System installiert...
Sys:
AMD Phenom II X4 965
nvidia GeForce GTS450 1024MB
16384 MB DDR3 1600Mhz
Gigabyte GA-970A-UD3
Corsair Force3 SSD (sys)

OS: Gentoo ~amd64
DE: KDE
Kernel: vanilla-sources
VGA: nouveau

http://www.gidf.de/

██ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ trust █████ ██████ ███ your █████ ████ government. Parts of this comment have been found in violation of H.R. 3261, S.O.P.A and Senate Bill 968, P.I.P.A. and have been censored for your benefit.

3

03.05.2012, 23:26

Ein

Quellcode

1
emerge -av1 dev-util/cmake

liefert

Quellcode

1
2
3
4
5
6
7
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] virtual/pkgconfig-0  0 kB
[ebuild   R    ] dev-util/cmake-2.8.6-r4  USE="emacs ncurses qt4 -test -vim-syntax" 0 kB

Total: 2 packages (1 new, 1 reinstall), Size of downloads: 0 kB

Das installiert also virtual/pkgconfig. Warum das Paket jetzt verlangt wird und bisher nicht verlangt wurde, scheint das hier zu sagen:

Quellcode

1
2
3
4
5
6
7
# ChangeLog for dev-util/cmake
2	# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
3	# $Header: /var/cvsroot/gentoo-x86/dev-util/cmake/ChangeLog,v 1.192 2012/05/02 21:02:53 johu Exp $
4	
5	  02 May 2012; Jeff Horelick <jdhore@gentoo.org> cmake-2.8.6-r4.ebuild,
6	  cmake-2.8.7-r4.ebuild, cmake-2.8.7-r5.ebuild, cmake-2.8.8-r1.ebuild:
7	  dev-util/pkgconfig -> virtual/pkgconfig

Das ebuild wurde kürzlich geändert und daher verlangt emerge --depclean wohl nun ein installiertes virtual/pkgconfig. Geht diese Überlegung in die richtige Richtung?
Bei einem emerge -auvDN world wird es nicht mitinstalliert, weil dev-util/cmake nicht in world enthalten ist. Stimmt das in etwa?
Nur die Option "--with-bdeps=y" würde hierbei das Gewünschte liefern, weil erkannt wird, dass sich die build time von cmake-2.8.6-r4.ebuild geändert hat (allerdings mit dem Nebeneffekt, dass ein Rattenschwanz an anderen Paketen mitkommt). Verstehe ich das richtig?
Bedeutet das dann im Umkehrschluss auch, dass ein emerge --depclean die build time der ebuilds prüft? Oder wie wird hier verfahren?
Das sind jetzt aber viele Fragen...

4

04.05.2012, 00:18

Das ebuild wurde kürzlich geändert und daher verlangt emerge --depclean wohl nun ein installiertes virtual/pkgconfig. Geht diese Überlegung in die richtige Richtung?
Soweit noch ja. Es werden öfter Pakete "virtualisiert", falls mehrere Alternativen für gibt. Siehe in das Virtual-Ebuild. Jetzt kann statt pkgconfig auch pkg-config-lite oder pkgconf verwendet werden.

Die Build-Time-Abhängigkeit bedeutet ein zum Zeitpunkt des Bauens benötigtes Paket.
und virtual/pkgconfig ist es eine Build-Time Dependency von cmake. Sprich pkgconfig wird nur zum Bauen von cmake benötigt, jedoch später zur Laufzeit (Run-Time) nicht mehr. Daher wird pkgconfig auch nur dann installiert/aktualisiert wenn cmake (oder anderes Paket was pkgconfig zum Bauen benötigt) wieder gebaut werden soll.

Also:
"emerge -av1 dev-util/cmake" -> cmake muss neu gebaut werden -> aktualisiere/installiere die zum bauen benötigten Build- und Run- Time Abhängigkeiten.
"emerge -auvDN world" -> cmake muss nicht neu gebaut werden -> prüfe nur die Run-Time Abhängigkeiten auf Aktualisierung (-D Parameter)
"--with-bdeps=y" -> cmake muss nicht neu gebaut werden -> Aktualisiere trotzdem die Build-time Abhängigkeiten mit.

--depclean prüft alles, also auch die Build-Time Abhängigkeiten und merkt dann dass da was nicht installiert ist (Das Virtuelle Dummy-Paket) und bricht ab. Wenn es die "Build-Time" ignorieren würde, dann würde pkgconfig jedes mal runterfliegen.

Dein "Rattenschwanz" hängt nicht nur mit "cmake" / "pkgconfig" zusammen sondern es sind halt alle Build-Time Abhängigkeiten. Packe mal den Parameter "-t" in den Emerge-Befehl. Dann kannst Du ungefähr sehen welche Pakete was nach sich ziehen. Es schadet auf jeden Fall nicht die Build-Time Abhängigkeiten mal zu aktualisieren, auch wenn es nicht unbedingt immer notwendig ist.
Münchener Gentoo Linux User Group: http://www.mglug.de/

Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.