Gentoo Forums
Gentoo Forums
Quick Search: in
How can I solve all these upgrade problems? [solved]
View unanswered posts
View posts from last 24 hours

rackathon
Goto page 1, 2, 3  Next  
Reply to topic    Gentoo Forums Forum Index Other Things Gentoo
View previous topic :: View next topic  
Author Message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sat Aug 11, 2007 12:15 pm    Post subject: How can I solve all these upgrade problems? [solved] Reply with quote

Sorry for the ambiguity in the subject line, but there's no... I don't know. I'm just very, very, VERY tired.

I'm running the AMD64 version of Gentoo. I've been doing an emerge --sync, an emerge -uDN world (always using --pretend first!), with an occassional fixpackages and revdep-rebuild about twice a week. I've kept the system up to date and I've not had any problems with broken packages, screwed up dependencies, library versions, etc. It's been a clean and consistent system for a while now.

That all changed a couple of days ago. My system is now almost totally jacked up thanks to a recent update. I saw that there were updates to KDE and Gnome, so I knew my system would soon be happily careering down a convoluted path to self destruction, but what am I gonna do? This has always been the hallmark of the Gentoo experience for me, so it's not as if I'm not used to it, but geez...

At first, there were package blocking problems--nothing major--just blocking caused by kdesktop, ksync, and fluxconf, which I simply unmerged using emerge -C. Easily solved.

After solving the blocking problems, emerge emerge -uDN world failed because of some problem allegedly related to a Perl XML parser I think--I hardly remember at this point) but which was actually caused by something else. I think I solved the problem by unmerging and re-emerging dev-perl/XML-Parser. At any rate, the problem was solved and I could continue with my emerge -uDN world--and my descent into the unholy quagmire I'm in now.

I started emerge -uDN world again. The system cranked away until I hit another snag: kde-base/kdelibs-3.5.7-r2 won't compile. Bummer. Why won't it compile? I get this:
Code:
checking for Qt... configure: error: Qt (>= Qt 3.3 and < 4.0) (library qt-mt) not found. Please check your installation!


Ah. I have QT 3 installed, I have the qt USE flag set globally in /etc/make.conf. Further, I'm upgrading everything and since Portage knows that I'm using QT 3 and that I'm upgrading something that depends on QT 3, why the hell doesn't it update QT 3 first? (That's a rhetorical question.)

Okay, so I need to update my installation of QT 3... right? (I'm honestly not exactly sure, but everything I've read online--including several related posts in these forums--and my own experience suggests to me that this is the case. I'm wrong, please, PLEASE--somebody tell me!)

I figured this would be easy. Ha!

I QT 3 won't compile.
Code:
!!! ERROR: x11-libs/qt-3.3.8-r2 failed.
Call stack:
  ebuild.sh, line 1632:   Called dyn_compile
  ebuild.sh, line 983:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  qt-3.3.8-r2.ebuild, line 211:   Called die


A look at /var/tmp/portage/x11-libs/qt-3.3.8-r2/temp/build.log shows at lot of errors related to the non-existence of a certain shared object, namely libexpat.so.0. I'd expect to find a symlink in /usr/lib named libexpat.so.0, pointing to the actual shared object (libexpat.so.1.5.2 perhaps?) but no. There is nothing named libexpat.so.0. It doesn't exist.

Okay, I knew from the start that I was going to be relying on revdep-rebuild to clean up some of this mess, so I kicked it off and waited for quite a while as the script listed an ungodly number of packages. (It's a pretty long list!) I got a handful of error messages about broken packages, but revdep-rebuild completed finding everything that depends on libexpat.so.0, created a list of packages to re-emerge, etc., etc. But, when it tried to re-emerge the packages, I hit ANOTHER snag:

For a few packages, multiple versions of the same package (and not slotted packages either) had gotten "pulled into the dependency graph".

Gah!

I seriously considered just creating a symlink named /usr/lib/libexpat.so.0 and pointing it to /usr/lib/libexpat.so.1.5.2, then trying to re-emerge QT 3, and then trying continue with emerge -uDN world again, but every time I try something, problems branch into antecedent problems, the whole situation just gets more complication, and I wind up in a more frustrating and exasperating situation than I was in before, with more dependencies to solve.

At this point, everything KDE- and Gnome-related is totally borked and I do not want to waste my entire weekend trying to get my system back into a usable state.

Before I break out the sledgehammer, could somebody please explain to me what the hell I was supposed to have done to update my system? Obviously Portage/emerge/ebuild scripts can't be trusted for this, revdep-rebuild isn't a simple solution, everything I've read in these forums has just pointed me in more dead-end directions, and hell--I'm sick of this shit, I'm tired, and I'm stumped.


Last edited by GWilliam on Sun Aug 26, 2007 10:39 pm; edited 4 times in total
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sat Aug 11, 2007 12:23 pm    Post subject: Reply with quote

Update:

I've gone ahead and done this

Code:
ln -s /usr/lib/libexpat.so.1.5.2 /usr/lib/libexpat.so.0


out of desperation. I'm currently seeing whether I can get QT 3 to compile now. If I can qt-3.3.6-r2 to emerge successfully, then maybe I can get kde-lib to compile, which--I'm hoping--might let me continue the emerge -uDN world, after which maybe--just maybe--I can use revdep-rebuild to find and re-emerge everything.

Does this seem like a good idea? Is it a bad idea to just create the symlink? It seems really kludgey and hackish to me and like the sort of thing that might bring quick gratification now but will cause hideous problems later on. Also, it kinda bugs me that I didn't have a real libexpat.so.0 to begin with.

Is there something else I should do?
Back to top
View user's profile Send private message
nixnut
Administrator
Administrator


Joined: 09 Apr 2004
Posts: 10459
Location: the dutch mountains

PostPosted: Sat Aug 11, 2007 12:44 pm    Post subject: Reply with quote

a newer version of expat was stabled, and it is incompatible with the previous version, so you'll need to run revdep-rebuild -X. Run revdep-rebuild -p afterwards to check if anything else needs to be rebuild. In the Portage and Programming forum you'll find a number of threads about the expat update problem.
_________________
Please add [solved] to the initial post's subject line if you feel your problem is resolved. Help answer the unanswered

talk is cheap. supply exceeds demand
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sat Aug 11, 2007 1:47 pm    Post subject: Reply with quote

Yep. I was reading those posts last night.

I'm not using libexpat 2.0. Also, revdep-rebuild is a bit less help than it otherwise might be, what with the multiple versions of the same package getting "pulled into the dependency graph".

I believe that I may be able to solve all this on my own, although I expect it's going to take quite a long time for all the emerging and re-emerging I'll have to do.

Creating /usr/lib/libexpat.so.0 as a symlink and pointing it to /usr/lib/libexpat.so.1.5.2 has restored quite a bit of functionality (KDE and Gnome applications now work!), I have been able to compile QT 3 successfully (thanks to that symbolic link), I've just successfully compiled kdelibs, and it looks as if I might be able to finish emerge -uDN world.

I suspect that if I can get emerge -uDN world to complete, it will solve the problem with revdep-rebuild and I'll be able to use revdep-rebuild to fix what need fixin'.

However, was creating that symbolic link a bad idea? Nobody else seems to have done this to solve their upgrade problems, but their upgrade problems seem to have run a different course than mine. Was creating /usr/lib/libexpat.so.0 as a symlink and pointing it to /usr/lib/libexpat.so.1.5.2 a mistake? And why didn't I have libexpat.so.0 in the first place?
Back to top
View user's profile Send private message
Carlo
Developer
Developer


Joined: 12 Aug 2002
Posts: 3351

PostPosted: Sat Aug 11, 2007 4:03 pm    Post subject: Reply with quote

GWilliam wrote:
However, was creating that symbolic link a bad idea?

Symlinking libraries instead rebuilding against the new ones is always a very bad idea.
_________________
Please make sure that you have searched for an answer to a question after reading all the relevant docs.
Back to top
View user's profile Send private message
Hu
Veteran
Veteran


Joined: 06 Mar 2007
Posts: 2595

PostPosted: Sat Aug 11, 2007 4:27 pm    Post subject: Reply with quote

GWilliam: libexpat.so.* are part of dev-libs/expat. As nixnut said, a new version was marked stable. I suspect Portage upgraded it without you noticing. If so, you did have a libexpat.so.0 before the upgrade, which is why your programs were functional. Run emerge -pv dev-libs/expat to see what version you have installed.

If you want to blame anybody in this, blame the upstream author who decided to change the ABI and not support parallel installation of the old and new releases. Based on Gnome-2.18, KDE.3.5.7 and expat-2.0.0 - stable soon, it looks like the Gentoo maintainers have done their best to minimize the trouble caused by this upgrade. I think that if they could have made it smoother (for example, by using slots), they would have.
Back to top
View user's profile Send private message
jonnevers
Veteran
Veteran


Joined: 02 Jan 2003
Posts: 1542
Location: Gentoo64 land

PostPosted: Sat Aug 11, 2007 7:02 pm    Post subject: Reply with quote

Hu wrote:
I think that if they could have made it smoother (for example, by using slots), they would have.

I had to mask >=expat-2 to get anything going again.

using expat > 2.0, created a situation exactly like the OP that I seem unable to emerge/revdep-rebuild my way out of. I'm not a novice to portage and certainly not to softare development and I am stumped as to how to get out.

saying "all you need to do is run revdep-rebuild and revdep-rebuild -X" doesn't help people in the situation i am because revdep-rebuild's package list never emerge's correctly. I removed kdelibs, kamera, digikam, gamma, and a couple other packages JUST to get emerge to make a depgrah. and it never gets through emerge any kdelibs (ARCH or ~ARCH on amd64) with expat > 2.0.

So I'm masking it. There seems to be no other option then to mask expat and get my emerged packages back to a stable state and updated to current... then try unmasking it again...

OP: try
Code:
echo ">=dev-libs/expat-2" >> /etc/portage/package.mask
Back to top
View user's profile Send private message
ojbyer
n00b
n00b


Joined: 07 Sep 2005
Posts: 22
Location: Tulsa, Oklahoma

PostPosted: Sun Aug 12, 2007 10:15 am    Post subject: Re: How can I solve all these upgrade problems? Reply with quote

GWilliam wrote:
Obviously Portage/emerge/ebuild scripts can't be trusted for this, revdep-rebuild isn't a simple solution, everything I've read in these forums has just pointed me in more dead-end directions, and hell--I'm sick of this shit, I'm tired, and I'm stumped.


Often when revdep-rebuild won't work, emerge -e will work. I had this problem on a machine that I use as a mythtv server, and running "emerge -e mythtv" worked out all the qt/kdelibs problems, then I could use "revdep-rebuild" to catch all the remaining packages.

As a last resort, "emerge -e world" should fix anything, as long as your toolchain isn't broken.
Back to top
View user's profile Send private message
cobralgato
Apprentice
Apprentice


Joined: 14 Sep 2005
Posts: 226

PostPosted: Sun Aug 12, 2007 12:52 pm    Post subject: Reply with quote

revdep-rebuild -X --library libexpat.so.0 worked for me..
_________________
x86_64
Back to top
View user's profile Send private message
a7thson
Apprentice
Apprentice


Joined: 08 Apr 2006
Posts: 163
Location: your pineal gland

PostPosted: Sun Aug 12, 2007 2:33 pm    Post subject: Reply with quote

cobralgato wrote:
revdep-rebuild -X --library libexpat.so.0 worked for me..

You must be luckier than I - following the provided instructions broke my system at gtk+ after perhaps 20 packages had been successfully re-emerged by revdep-rebuild, at which point any gtk-dependent application was now broken thanks to a missing/incompatible libexpat. (libexpat -> gettext) and (libexpat -> XML-Parser) look to be the source of all the breakage, also fun is (libexpat -> python with "build" USE flag). Luckily I was able to restore the key pieces from binary packages, mask libexpat, and re-emerge everything that revdep-rebuild had broken. Were I running ~amd64 on any/all of the key packages it would be my own fault :-) but I'm not and generally assume a "stable" upgrade is exactly that... and usually, it's a good assumption to make.
_________________
Dell Inspiron 9300 | Pentium-M 1.6GHz 1.5G DDR2 | Gentoo 2.6.21-r3 | gcc-4.1.2/glibc-2.5-r3 | Xorg 7.2
Conroe E6600 | MSI P6N Platinum | 2GB DDR2-800 | XFX 7900GS | x86_64 | Xorg 7.2 XFCE4+beryl+nvidia-drivers
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sun Aug 12, 2007 4:32 pm    Post subject: Reply with quote

Quote:
Symlinking libraries instead rebuilding against the new ones is always a very bad idea.


Interesting, considering that--and I just discovered this--libexpat.so.0 is supposed to be a symlink to the actual object! (In this case, it's supposed to be a link to libexpat.so.1.5.2.) The ebuild for Expat apparent;y creates this symlink. I deleted the symlink I created and later, when I re-emerged Expat, it created a new symlink. Whether it's a bad idea or not is debatable, I suppose, but this is actually how it's supposed to work. The following is correct:

Code:
-rw-r--r-- 1 root root 249948 2007-08-12 09:56 /usr/lib/libexpat.a
-rw-r--r-- 1 root root    708 2007-08-12 09:56 /usr/lib/libexpat.la
lrwxrwxrwx 1 root root     17 2007-08-12 09:56 /usr/lib/libexpat.so -> libexpat.so.0.5.0
lrwxrwxrwx 1 root root     17 2007-08-12 09:56 /usr/lib/libexpat.so.0 -> libexpat.so.0.5.0
-rwxr-xr-x 1 root root 141360 2007-08-12 09:56 /usr/lib/libexpat.so.0.5.0



When I created the symlink manually, I was just doing what the ebuild would have done anyway.

Quote:
...a new version was marked stable.


Yes. I know. I read what nixnut posted. I'm pretty sure the other threads he mentioned were some of the same threads I read before I started this thread.

I already indicated this in my original post, but maybe I wasn't clear enough:

  • The expat problem was only one of several problems.

  • revdep-rebuild cannot straighten this out. For one thing, revdep-rebuild's dependency graph always gets screwed up. For another thing, even if revdep-rebuild could generate a non-conflicting list of packages to re-emerge, it would not be possible to re-emerge them
.


Quote:
If you want to blame anybody in this, blame the upstream author who decided to change the ABI and not support parallel installation of the old and new releases.


First, I'm not particularly interested in finger pointing. I've re-read my original post and not found anything that seemed particularly accusatory--granted, I have had very, very little sleep. I stated that "Obviously Portage/emerge/ebuild scripts can't be trusted for this..." and... well... it's pretty bleeding obvious. However, now that you mention it, why the heck would I blame upstream development? Upstream does not control this distribution, what gets included, how packages are managed--why blame them? There are always going to be upstream changes that break compatibility. However, the group that distributes this code in the form of an operating system chooses what code they integrate into their distribution and how that code is integrated into their distribution. Also, the package management system is supposed to be able to manage installing, upgrading, and removing packages. That's what it's for. The package management system should NOT break the system in the course of its normal operation. Although I can certainly understand how this could have slipped right through unit testing, I cannot believe that issues caused by expat library incompatibility would not have been caught in basic system testing. If the new Expat package is reasonably expected to break a system, why unmask it, unleashing it on unsuspecting users? Why couldn't the ebuild script have done a much, MUCH better job--or at the very least, displayed a message with nixnuts' revdep-rebuild mantra?

That said, I understand that Gentoo does not have the resources to do this kind of testing and to provide the significantly more advanced and capable package management and upgrade mechanisms which might have handled the situation better. I'm sure that with a massive army of dedicated, well paid full time developers, things would be better, but that doesn't seem to be situation and I understand that. I'm a hell of a lot more interested in solving my problem than pointing fingers, although considering the breadth, scope, and magnitude of this lovely little upgrade fiasco and considering how very tired and sleep deprived I am--not to mention how irritated I am that just about every update screws something up, I think a little bitching--within reason--might at least be understandable.

As for the parallel installation of the expat libraries, I'm not at all qualified to debate the matter, but even though a slotted approach might have made the upgrade a lot smoother, why would upstream development assume that anyone would want to keep two versions of this library? Again, I really don't know enough about the matter to even have an opinion about it, but it seems to me as if one would simply (were it possible) upgrade from one to the other. I mean, this isn't like kernel sources.

@jonnevers: THANK YOU!!! You seem to be the only one who actually seems to understand the problem--or at least, one of the big underlying issues. I've masked versions of expat > 2.0.

Earlier, I asked "what the hell I was supposed to have done to update my system?" Right now, it looks as if this is the answer:

1. Mask the new version of expat.

2. Make sure the threads USE flag is set.

3. emerge --sync.

4. emerge -uDN world (using pretend first, of course).

5. Deal with the errors and snags as they pop up, using posts in this forum as a guide (Worked for me!).

6. Update configuration files.

7. Use revdep-rebuild to make sure everything's consistent and to re-emerge what's not.


For me, this is complicated by the fact that I masked expat > 2.0 only after I'd already compiled almost all the packages. Most of the packages were compiled using the new expat libraries, so I'll have to recompile them against the old one. However, this time, revdep-rebuild should be able to get a sensible dependency graph and should be able to re-emerge all the packages as needed.

My current plan (now that I've masked expat > 2.0) is to finish the emerge -uDN world I started, run revdep-rebuild, and hope for the best.

Thanks again, jonnevers! You rock!
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sun Aug 12, 2007 5:18 pm    Post subject: Reply with quote

While continuing the emerge -uDN world, emerge stopped 'cause totem-2.18.2 wouldn't compile. And why was that? Because it gnome-icon-theme requires >= 2.15.90, I have gnome-icon-theme 2.18.0, but the ebuild script seems to think I have version 2.10.1:

Code:
Requested 'gnome-icon-theme >= 2.15.90' but version of gnome-icon-theme is 2.10.1


Oh, really? Guess again--

Code:
# emerge -s gnome-icon-theme
Searching...   
[ Results for search key : gnome-icon-theme ]
[ Applications found : 1 ]
 *  x11-themes/gnome-icon-theme
      Latest version available: 2.18.0
      Latest version installed: 2.18.0
      Size of files: 2,670 kB
      Homepage:      http://www.gnome.org/
      Description:   GNOME 2 default icon themes
      License:       GPL-2


Also,

Code:
amd64-at ~ # emerge gnome-icon-theme --pretend
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   R   ] x11-themes/gnome-icon-theme-2.18.0 


I found the solution to this and resumed emerging, but promptly ran into another package that won't compile--gedit:

Code:
checking for XML::Parser... configure: error: XML::Parser perl module is required for intltool


It's the same problem I ran into earlier--which I'd already solved. Yet AGAIN I unmerged and re-emerged the package for the Perl XML parser.

I was able to resume emerging, but soon ran into yet ANOTHER problem--I couldn't emerge totem. No problem, right?--I'll just emerge -C totem and that'll be the end of that. Or so I thought. Apparently, for some bizarre reason which I'm sure makes perhaps to somebody, totem is a dependency of gnome-python-desktop! Great. Now I can't compile gnome-python-desktop.

I don't remember what was keeping totem from compiling, but whatever it was, I figured it out, solved the problem, and successfully emerged totem 2.18.2, which I will never, ever use. Oh, well--at least gnome-python-desktop will compile, right?

Wrong!

Code:
*** Could not run GTK+ test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding GTK+ or finding the wrong
*** version of GTK+. If it is not finding GTK+, you'll need to set your
*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point
*** to the installed location  Also, make sure you have run ldconfig if that
*** is required on your system
***
*** If you have an old version installed, it is best to remove it, although
*** you may also be able to get things to work by modifying LD_LIBRARY_PATH
configure: error: maybe you want the gtk-gnome-1-2 branch?

!!! Please attach the following file when filing a report to bugs.gentoo.org:
!!! /var/tmp/portage/dev-python/gnome-python-desktop-2.18.0/work/gnome-python-desktop-2.18.0/config.log

!!! ERROR: dev-python/gnome-python-desktop-2.18.0 failed.
Call stack:
  ebuild.sh, line 1632:   Called dyn_compile
  ebuild.sh, line 983:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  ebuild.sh, line 1322:   Called gnome2_src_compile
  gnome2.eclass, line 70:   Called gnome2_src_configure
  gnome2.eclass, line 66:   Called econf '--disable-gtk-doc'
  ebuild.sh, line 586:   Called die

!!! econf failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/dev-python/gnome-python-desktop-2.18.0/temp/build.log'.


Based on what I read on another thread, this problem is caused by switching to a different version of the expat libraries and not running revdep-rebuild to recompile things against the version of expat currently installed.

Okay. Oh fucking kay. I need to run revdep-rebuild, but I can't do that until I finish re-emerging everything else so that I can get a sane depgraph and sort out enough problems so that revdep-rebuild can actuall rebuild the packages in this list.

To finish updating everything--except gnome-python-desktop--I individually emerged every remaining package listed by emerge -uDN world --pretend.

After I finished doing this, the only package listed by emerge -uDN world --pretend was dev-python/gnome-python-desktop-2.18.0.

Time to run revdep-build (I assumed).

For the first time since this whole mess started, revdep-rebuild created a good dependency graph. I got a long, loooooooong list of packages, but I knew that was coming.

revdep-rebuild started emerging the packages and I fell asleep.

When I woke up, I saw this:

Code:
make[3]: *** [gtk.immodules] Error 127
make[3]: Leaving directory `/var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13/modules/input'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13/modules'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13'
make: *** [all] Error 2

!!! ERROR: x11-libs/gtk+-2.10.13 failed.
Call stack:
  ebuild.sh, line 1632:   Called dyn_compile
  ebuild.sh, line 983:   Called qa_call 'src_compile'
  ebuild.sh, line 44:   Called src_compile
  gtk+-2.10.13.ebuild, line 108:   Called die

!!! compile failed
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/x11-libs/gtk+-2.10.13/temp/build.log'.


revdep-rebuild failed to emerge all packages
you have the following choices:

- if emerge failed during the build, fix the problems and re-run revdep-rebuild
    or
- use -X or --package-names as first argument (trys to rebuild package, not exact
  ebuild)
    or
- set ACCEPT_KEYWORDS="~<your platform>" and/or /etc/portage/package.unmask
  (and remove /root/.revdep-rebuild_77938876.5_order to be evaluated again)
    or
- modify the above emerge command and run it manually
    or
- compile or unmerge unsatisfied packages manually, remove temporary files and
  try again (you can edit package/ebuild list first)


What do I do now?
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Sun Aug 12, 2007 5:23 pm    Post subject: Reply with quote

Oh--I should have included this--this is just before the make errors:

Code:
[lots of compiler output, blah, blah, blah, blah]...   > gtk.immodules var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13/gtk/.libs/lt-gtk-query-immodules-2.0: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file o r directory


revdep-rebuild cannot re-emerge /x11-libs/gtk+-2.10.13 because it's looking for libexpat.so.1, which I don't have.

My brain is now broken.

Can anybody tell me how to fix all this?
Back to top
View user's profile Send private message
nightmorph
Developer
Developer


Joined: 23 Jan 2005
Posts: 1289
Location: SoCal

PostPosted: Sun Aug 12, 2007 5:28 pm    Post subject: Reply with quote

revdep-rebuild -X to fix everything broken by the expat upgrade. Once that's done, you should be able to proceed with fixing/upgrading the rest of your system. See the Gnome 2.18 upgrade guide; I just added a section to the Known Issues on fixing expat, running revdep-rebuild, and other issues.
_________________
<UzzaDead> What is CONFIG_USB_MON?
<petteyg> A Jamaican USB configuration?

dirtyepic: "We have more cupholders."

GDP || GMN
Back to top
View user's profile Send private message
ojbyer
n00b
n00b


Joined: 07 Sep 2005
Posts: 22
Location: Tulsa, Oklahoma

PostPosted: Sun Aug 12, 2007 5:34 pm    Post subject: Reply with quote

GWilliam wrote:
What do I do now?

I really recommend you unmask expat, then try "emerge -e world". As far as I know, this is the only way to make sure all the packages get built in the correct order.

I had the a very similar problem: when I upgraded to kde-3.5.7, the kopete package kept failing. I ignored this for about a week (--resume --skip-first), then this expat problem hit.

revdep-rebuild couldn't generate a good dependency graph, since my (old) version of kopete wanted a different version of kdelibs than everything else. revdep-rebuild isn't always smart enough to know that the solution is to just upgrade kopete at the same time.

If you do an --emptytree merge, then all of these issues get sorted out. You might as well upgrade expat at the same time so you get past this issue.
Back to top
View user's profile Send private message
jonnevers
Veteran
Veteran


Joined: 02 Jan 2003
Posts: 1542
Location: Gentoo64 land

PostPosted: Sun Aug 12, 2007 5:39 pm    Post subject: Reply with quote

if you have the xeffects overlay in your PORTDIR_OVERLAY variable you might want to disable it and then bring your system up to portage current. xeffects has the side effect of a kdelibs-3.5.7-r2 that is ~ARCH while portage's is ARCH, maybe other incompatibilities.
Back to top
View user's profile Send private message
a7thson
Apprentice
Apprentice


Joined: 08 Apr 2006
Posts: 163
Location: your pineal gland

PostPosted: Sun Aug 12, 2007 5:49 pm    Post subject: Reply with quote

In rebuilding GTK+, I got to a configure error "Can't link to pango. Pango is required to build GTK+." (etc); attempting to rebuild pango failed. attempting to rebuild cairo (upon which pango and gtk+ depend) failed. I re-emerged the earlier (stable :-) ) version of expat, and if memory serves, then emerged cairo, then pango, then gtk+, then did revdep-rebuild -X, and remember doing a few more emerges based on "equery depends expat" output, including re-emerging gettext. Apologies for the lack of detail, I was quite frustrated by this point and up through early hours of the morning, just trying to "make it work again" :-S

GWilliam wrote:
Oh--I should have included this--this is just before the make errors:

Code:
[lots of compiler output, blah, blah, blah, blah]...   > gtk.immodules var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13/gtk/.libs/lt-gtk-query-immodules-2.0: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file o r directory


revdep-rebuild cannot re-emerge /x11-libs/gtk+-2.10.13 because it's looking for libexpat.so.1, which I don't have.

My brain is now broken.

Can anybody tell me how to fix all this?

_________________
Dell Inspiron 9300 | Pentium-M 1.6GHz 1.5G DDR2 | Gentoo 2.6.21-r3 | gcc-4.1.2/glibc-2.5-r3 | Xorg 7.2
Conroe E6600 | MSI P6N Platinum | 2GB DDR2-800 | XFX 7900GS | x86_64 | Xorg 7.2 XFCE4+beryl+nvidia-drivers
Back to top
View user's profile Send private message
Hu
Veteran
Veteran


Joined: 06 Mar 2007
Posts: 2595

PostPosted: Sun Aug 12, 2007 8:30 pm    Post subject: Reply with quote

GWilliam wrote:
Quote:
Symlinking libraries instead rebuilding against the new ones is always a very bad idea.


Interesting, considering that--and I just discovered this--libexpat.so.0 is supposed to be a symlink to the actual object! (In this case, it's supposed to be a link to libexpat.so.1.5.2.)


In the case you cite, libexpat.so.0 is used as an alternate name for libexpat.so.0.5.0, which is acceptable since they are created by the same package and programs linking to either one expect the same ABI. Carlo was responding to your comment where you created a symlink from libexpat.so.0 to libexpat.so.1.5.2. While it may work in this case, arbitrarily symlinking one name to another is not correct, since there is no guarantee that the two have compatible ABIs. At best, incompatible programs will fail to start with an undefined symbol error. You might get unlucky and get the program to start, but crash or suffer memory corruption due to the mismatched ABI.

GWilliam wrote:
Quote:
If you want to blame anybody in this, blame the upstream author who decided to change the ABI and not support parallel installation of the old and new releases.


First, I'm not particularly interested in finger pointing. I've re-read my original post and not found anything that seemed particularly accusatory. However, now that you mention it, why the heck would I blame upstream development?


You sounded irate and tired. Some people in that state want a target for the their frustration. As I said, upstream changed the ABI for expat and did not support keeping programs built against the old release functional while you upgrade to a newer release. That is why you might blame them. It is good that you are not interested in assigning blame.

GWilliam wrote:
Upstream does not control this distribution, what gets included, how packages are managed--why blame them? There are always going to be upstream changes that break compatibility. However, the group that distributes this code in the form of an operating system chooses what code they integrate into their distribution and how that code is integrated into their distribution. Also, the package management system is supposed to be able to manage installing, upgrading, and removing packages. That's what it's for. The package management system should NOT break the system in the course of its normal operation. Although I can certainly understand how this could have slipped right through unit testing, I cannot believe that issues caused by expat library incompatibility would not have been caught in basic system testing. If the new Expat package is reasonably expected to break a system, why unmask it, unleashing it on unsuspecting users? Why couldn't the ebuild script have done a much, MUCH better job--or at the very least, displayed a message with nixnuts' revdep-rebuild mantra?


Technically, the package management system did not break your system. It removed files from the previous version, but did not remove arbitrary files owned by other packages. I will grant that, depending on system configuration, removing dev-libs/expat could cripple a system to the point that the system may as well be considered broken. In general, I consider anything you can recover without a LiveCD not to be broken. :)

According to /usr/portage/dev-libs/expat/ChangeLog, expat-2.0.0.ebuild was added to Portage on 24 Mar 2006, more than a year ago. Six days later, such a warning was added to the ebuild:
Code:
    ewarn "Please note that the soname of the library changed!"
    ewarn "If you are upgrading from a previous version you need"
    ewarn "to fix dynamic linking inconsistencies by executing:"
    ewarn "revdep-rebuild -X --library libexpat.so.0"


GWilliam wrote:
As for the parallel installation of the expat libraries, I'm not at all qualified to debate the matter, but even though a slotted approach might have made the upgrade a lot smoother, why would upstream development assume that anyone would want to keep two versions of this library? Again, I really don't know enough about the matter to even have an opinion about it, but it seems to me as if one would simply (were it possible) upgrade from one to the other.


Long term, there would not be a need to keep both. However, if both versions could be kept safely on the system temporarily, then you would be able to upgrade the packages at leisure, with any non-upgraded versions binding to the old library, and newly built programs binding to the new Expat v2.0 libraries.
Back to top
View user's profile Send private message
leifbk
Tux's lil' helper
Tux's lil' helper


Joined: 05 Jan 2004
Posts: 149
Location: Oslo, Norway

PostPosted: Mon Aug 13, 2007 1:37 am    Post subject: Reply with quote

Hu wrote:
Technically, the package management system did not break your system. It removed files from the previous version, but did not remove arbitrary files owned by other packages. I will grant that, depending on system configuration, removing dev-libs/expat could cripple a system to the point that the system may as well be considered broken. In general, I consider anything you can recover without a LiveCD not to be broken. :)

According to /usr/portage/dev-libs/expat/ChangeLog, expat-2.0.0.ebuild was added to Portage on 24 Mar 2006, more than a year ago. Six days later, such a warning was added to the ebuild:
Code:
    ewarn "Please note that the soname of the library changed!"
    ewarn "If you are upgrading from a previous version you need"
    ewarn "to fix dynamic linking inconsistencies by executing:"
    ewarn "revdep-rebuild -X --library libexpat.so.0"


I think that it would be great if Portage just halted after emerging packages requiring a revdep-rebuild. That would give us a chance to actually read what to do before proceeding :wink:
_________________
I don't have a hardware problem! I can quit buying hardware whenever I want!
Me And My Database :: Geek Genealogy
Back to top
View user's profile Send private message
mope
Apprentice
Apprentice


Joined: 23 Feb 2003
Posts: 206

PostPosted: Mon Aug 13, 2007 4:47 am    Post subject: Reply with quote

leifbk wrote:
Hu wrote:
Technically, the package management system did not break your system. It removed files from the previous version, but did not remove arbitrary files owned by other packages. I will grant that, depending on system configuration, removing dev-libs/expat could cripple a system to the point that the system may as well be considered broken. In general, I consider anything you can recover without a LiveCD not to be broken. :)

According to /usr/portage/dev-libs/expat/ChangeLog, expat-2.0.0.ebuild was added to Portage on 24 Mar 2006, more than a year ago. Six days later, such a warning was added to the ebuild:
Code:
    ewarn "Please note that the soname of the library changed!"
    ewarn "If you are upgrading from a previous version you need"
    ewarn "to fix dynamic linking inconsistencies by executing:"
    ewarn "revdep-rebuild -X --library libexpat.so.0"


I think that it would be great if Portage just halted after emerging packages requiring a revdep-rebuild. That would give us a chance to actually read what to do before proceeding :wink:


I think the idea is to read changelogs before proceeding, rather than upgrading for upgrading's sake ;)
that's what my buddy does anyway...
Back to top
View user's profile Send private message
leifbk
Tux's lil' helper
Tux's lil' helper


Joined: 05 Jan 2004
Posts: 149
Location: Oslo, Norway

PostPosted: Mon Aug 13, 2007 5:50 am    Post subject: Reply with quote

mope wrote:
leifbk wrote:
I think that it would be great if Portage just halted after emerging packages requiring a revdep-rebuild. That would give us a chance to actually read what to do before proceeding :wink:


I think the idea is to read changelogs before proceeding, rather than upgrading for upgrading's sake ;)
that's what my buddy does anyway...


Sure -- if you ain't got nothing else to do, that sounds great. I'm doing an "emerge --sync && emerge -avuDN world" once or twice a week, and generally things are proceeding just fine. I believe that a lot of people might find an extra option like "--halt-on-dependency-conflicts" quite useful.
_________________
I don't have a hardware problem! I can quit buying hardware whenever I want!
Me And My Database :: Geek Genealogy
Back to top
View user's profile Send private message
jonnevers
Veteran
Veteran


Joined: 02 Jan 2003
Posts: 1542
Location: Gentoo64 land

PostPosted: Mon Aug 13, 2007 7:21 am    Post subject: Reply with quote

a7thson wrote:
Code:
[lots of compiler output, blah, blah, blah, blah]...   > gtk.immodules var/tmp/portage/x11-libs/gtk+-2.10.13/work/gtk+-2.10.13/gtk/.libs/lt-gtk-query-immodules-2.0: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file o r directory

to correct this you must emerge the following pckages in this order:
Code:
emerge fontconfig
emerge pango
emerge gtk+
then do the revdep-rebuild -X libexpat.so.1

I couldn't recompile pango until fontconfig was recompiled.
Back to top
View user's profile Send private message
mope
Apprentice
Apprentice


Joined: 23 Feb 2003
Posts: 206

PostPosted: Mon Aug 13, 2007 3:20 pm    Post subject: Reply with quote

leifbk wrote:
mope wrote:
leifbk wrote:
I think that it would be great if Portage just halted after emerging packages requiring a revdep-rebuild. That would give us a chance to actually read what to do before proceeding :wink:


I think the idea is to read changelogs before proceeding, rather than upgrading for upgrading's sake ;)
that's what my buddy does anyway...


Sure -- if you ain't got nothing else to do, that sounds great. I'm doing an "emerge --sync && emerge -avuDN world" once or twice a week, and generally things are proceeding just fine. I believe that a lot of people might find an extra option like "--halt-on-dependency-conflicts" quite useful.


how many updates are you coming across per cycle since you're donig it so often?
I can't imagine you're updating more than 2 packages each time you do that...if you'd sit there and read a halt alert, why wouldn't you read the change log before you emerge the package?

My guess is that people will ignore *both* the changelogs and the warnings, regardless of how large or colorful they're made.
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Mon Aug 13, 2007 6:16 pm    Post subject: Reply with quote

Okay, here's what I did:

I unmasked Expat.

I unmerged Expat (checking to make sure all the relevant stuff really did get cleared out of /usr/lib).

I emerged Expat 2.0.1.

Lo and behold, I saw the exact warning message that I said earlier that the ebuild should display! Of course, messages like these just whiz by if you're emerging world.

With the new Expat installed, I ran revdep-rebuild.

I got a clean dependency graph, revdep-rebuild had no trouble building a list of packages to re-emerge.

While revdep-rebuild was re-emerging packages, it failed while trying to emerge GTK+, with the following error:

Code:
error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file o r directory.


Or was it

Code:
error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file o r directory.

?

I don't remember. It was one or the other. Maybe it was libexpat.so.0.

I followed jonnevers' instructions:

Quote:
to correct this you must emerge the following pckages in this order: Code:
emerge fontconfig
emerge pango
emerge gtk+
then do the revdep-rebuild -X libexpat.so.1



fontconfig emerged okay.

pango emerged okay.

gtk+ emerged okay.

when i tried revdep-rebuild -X libexpat.so.1, i got this:

Code:
Calculating dependencies -
emerge: there are no ebuilds to satisfy "libexpat.so.1".


Okay, so maybe it was really libexpat.so.0 that the compiler couldn't find. When I tried revdep-rebuild -X libexpat.so.0, i got this:

Code:
Calculating dependencies -
emerge: there are no ebuilds to satisfy "libexpat.so.0".


This... this... that sledgehammer (actually, it's not really a sledgehammer. it's a fifteen pound engineer's hammer.) is starting to look really good at this point.

jonnevers (or anyone else), why did this not work?

This is what happens:

Code:
# revdep-rebuild -X libexpat.so.1
Configuring search environment for revdep-rebuild

Checking reverse dependencies...

Packages containing binaries and libraries broken by a package update
will be emerged.

Collecting system binaries and libraries... using existing /root/.revdep-rebuild.1_files.

Collecting complete LD_LIBRARY_PATH... using existing /root/.revdep-rebuild.2_ldpath.

Checking dynamic linking consistency... using existing /root/.revdep-rebuild.3_rebuild.

Assigning files to packages... using existing /root/.revdep-rebuild.4_packages_raw.

Cleaning list of packages to rebuild... using existing /root/.revdep-rebuild.4_packages.

Assigning packages to ebuilds... using existing /root/.revdep-rebuild.4_ebuilds.

Evaluating package order... using existing /root/.revdep-rebuild.5_order.

All prepared. Starting rebuild...
emerge --oneshot libexpat.so.1 =media-sound/easytag-2.0 =gnome-base/gconf-2.18.0.1 =dev-libs/dbus-glib-0.73 =dev-libs/apr-util-1.2.8 =media-sound/vorbis-tools-1.1.1-r3 =kde-base/kdialog-3.5.5 =kde-base/kmailcvt-3.5.5 =kde-base/ksystraycmd-3.5.5 =kde-base/libkpgp-3.5.4 =sys-devel/gdb-6.6-r2 =x11-apps/xclock-1.0.2 =www-servers/apache-2.0.58-r2 =net-im/gaim-1.5.0 =x11-wm/fluxbox-1.0_rc3 =sys-apps/hal-0.5.9-r1 =media-libs/raptor-1.4.12 =media-libs/liblrdf-0.4.0 =x11-libs/fox-1.4.34-r1 =media-sound/rezound-0.12.2_beta-r2 =media-gfx/imagemagick-6.3.4-r1 =media-plugins/audacious-plugins-1.3.3 =x11-libs/wxGTK-2.6.3.3 =media-libs/libquicktime-0.9.10 =media-libs/xine-lib-1.1.4-r2 =media-sound/audacity-1.3.3 =media-video/transcode-1.0.3 =media-sound/amarok-1.4.6-r1 =media-sound/ardour-2.0.3 =gnome-base/gnome-mount-0.6 =media-video/totem-2.18.2 =app-cdr/k3b-0.12.17 =app-editors/gedit-2.18.1-r1
..........
Calculating dependencies -
emerge: there are no ebuilds to satisfy "libexpat.so.1".
Back to top
View user's profile Send private message
GWilliam
Apprentice
Apprentice


Joined: 29 Dec 2005
Posts: 294

PostPosted: Mon Aug 13, 2007 6:24 pm    Post subject: Reply with quote

Quote:
revdep-rebuild -X to fix everything broken by the expat upgrade.


If only it were that simple. I just tried that. That doesn't work either. revdep-rebuild -X craps out trying to compile gconf.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Other Things Gentoo All times are GMT - 5 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum