Gentoo Archives: gentoo-amd64

From: Mark Knecht <markknecht@×××××.com>
To: gentoo-amd64@l.g.o
Subject: Re: [gentoo-amd64] Re: emerge --depclean question
Date: Sun, 31 Dec 2006 15:11:08
Message-Id: 5bdc1c8b0612310709y43c07aa5qcb8cb967d16dd32e@mail.gmail.com
In Reply to: [gentoo-amd64] Re: emerge --depclean question by Duncan <1i5t5.duncan@cox.net>
1 Duncan,
2 Makes perfect sense. Thanks.
3
4 I'll spend some time today grinding through all this stuff and get
5 it cleaned up.
6
7 Thanks,
8 Mark
9
10 On 12/31/06, Duncan <1i5t5.duncan@×××.net> wrote:
11 > "Mark Knecht" <markknecht@×××××.com> posted
12 > 5bdc1c8b0612301751k5f65c464nf8b9bd99c3b75091@××××××××××.com, excerpted
13 > below, on Sat, 30 Dec 2006 17:51:29 -0800:
14 >
15 > > I haven't done this in quite awhile so this evening I started
16 > > looking at dependencies a bit. I thought I might take a shot at
17 > > cleaning things up old stuff left around from updates over the last
18 > > year or so. I ran emerge -p --depclean and was told that there were
19 > > about 45 things to remove so I decided I'd try removing a few
20 > > one-at-a-time and see how it went. First I sync'ed and did an emerge
21 > > -DuN world and made sure the machine was up to date. I then removed
22 > > what seemed like a pretty random entry late on the list - imlib - and
23 > > then a revdep-rebuild -p to see what it thought. I was then told I
24 > > needed to emerge revisions of two new things - gnome-lib and
25 > > gtk-pixbuf - neither of which existed according to both emerge and
26 > > eix. I then re-emerged imlib, reran revdep-rebuild and now I see the
27 > > machine is consistent again.
28 >
29 > gnome-lib and gtk-pixbuf are GNOME-1. Somewhere, you still have something
30 > wanting GNOME-1 stuff, which has been removed from the tree as nothing
31 > current depends on it.
32 >
33 > You can use equery -d <package> to get a list of merged packages depending
34 > on <package>. Try that with gnome-lib and see what comes up. Maybe you
35 > don't need it any more and can unmerge it. Or, if it's still in the tree
36 > the dependencies must now be fixed, so remerging it should kill the
37 > dependencies on gnome-lib. (equery is part of gentoolkit.)
38 >
39 > It's also possible you have "orphaned" libraries around that somehow got
40 > left behind after an unmerge. Portage won't know about these so
41 > --depclean won't consider them. However, revdep-rebuild does a scan of
42 > the actual libraries and applications you have, including orphans and
43 > binary-only packages (which remerging won't fix since you just remerge the
44 > same binary libraries with the same compiled in dependencies), and thus
45 > catches things portage wouldn't.
46 >
47 > > Is this a question that certain ebuilds are not written correctly
48 > > and don't somehow call for the right dependencies, or is it something
49 > > else?
50 >
51 > It's probably either packages that have changed since you merged them, or
52 > orphans, as mentioned above. It could however also be just as you said,
53 > dependencies that aren't properly noted in the ebuild. This can be either
54 > a missed dependency that needs to be there, or something the package
55 > configure script detected on its own, that wasn't part of the ebuild.
56 > Gentoo devs try not to have any of those "autodetected" things, because it
57 > causes problems exactly like what you are seeing. Instead, they try to
58 > specify a hard dependency if the package really needs it, make it
59 > conditional on a USE flag if it's optional, or unconditionally tell the
60 > config script NOT to use it if Gentoo has a different way of handling it
61 > or something, as sometimes happens. However, sometimes upstream changes
62 > the dependencies or optional dependencies and the Gentoo devs don't catch
63 > the changed config it until someone runs into problems and files a bug.
64 >
65 > > Also, is there any better tool these days for cleaning up stale
66 > > packages left around than emerge --depclean?
67 >
68 > Not really... that I know of anyway. There are a few other tools such as
69 > dep, from the udept package, but it's worse, not better. (From what I can
70 > tell, it checks the dependencies in the ebuilds themselves but not the
71 > ones brought in by the eclasses, so it misses some. It's quite a bit
72 > faster, but it's also not anywhere near as dependable.)
73 >
74 > Basically, it's a process of using --depclean -p, and getting a list, then
75 > using common sense and trial and error to figure out what's safe to remove
76 > and what's not. It's not an easy or simple process, which is why there
77 > are such big warnings on it. However, it's worthwhile to do once in
78 > awhile, both because it helps keep the troubles away, and because stuff
79 > that it says needs removed is stuff portage won't be regularly updating,
80 > and that can quickly become a security issue if there's a vulnerability in
81 > one of those packages.
82 >
83 > One thing that makes things MUCH easier, however, and you may already be
84 > doing this, is using FEATURES=buildpkg. If you are, testing unmerges is
85 > vastly easier, since if something needs the package, you can simply emerge
86 > -k the binary package that was created during the initial merge -- that's
87 > what the buildpkg feature DOES.
88 >
89 > If you haven't been using the buildpkg feature, it's also possible to
90 > quickpkg the package already on your system before you remove it. Again,
91 > if it turns out you actually need it, you don't have to spend all that
92 > time recompiling it, all you have to do is emerge -k it, to remerge the
93 > binary package you created using quickpkg.
94 >
95 > --
96 > Duncan - List replies preferred. No HTML msgs.
97 > "Every nonfree program has a lord, a master --
98 > and if you use the program, he is your master." Richard Stallman
99 >
100 > --
101 > gentoo-amd64@g.o mailing list
102 >
103 >
104 --
105 gentoo-amd64@g.o mailing list