[warning] Massive update breaks everything Gnome

This Friday (31/5/12) there was a massive update to ports tree. I had 300+ ports to update after refreshing the tree.

It appears that gnome has made changes to seahorse (security) -> dbus chain of ports, which requires almost everything gnome to be rebuilt. All ports, with few exceptions, build and install and ports which fail to build are mostly trivial.

Unfortunately you may run into many breakages post-installation (which I did), when you re-boot. These include GDM, gnome-terminal and a large number of others. I also have x11-wm/enlightenment installed on my system and I was able to get a graphical interface by starting enlightenment (startx) - granted, I have not gotten around to the enlightenment upgrade yet, so who knows?

SOLUTIONS:
1. Wait 7 - 10 days for better update
2. If you have already taken the plunge, be aware most errors are library related. Although not a complete solution, you can:

    • * Open 2 terminals (one of them as root) and in regular user side run a gnome-related app like nautilus, gedit, etc.. Observe the library error message posted in the output - something like
      Code:
      Shared object "libpng.so.6" not found, required by ...
      * Switch to the root terminal and below will give which version of library you have and where it is located
      # find /usr -name "libpng.so*"
      Code:
      libpng15.so
      * cd to the folder where the libraries are and create a symlink To newer NamedAs old-missing
      # ln -s libpng15.so libpng.so.6
      * Repeat for every problem you run into.
      * you may also have to make deinstall then make install for a number of ports, depending on the port's health
      * Most definitely run # portmaster --check-depends

      Preventive-strike answers to questions:
      - amd64, 9-STABLE
      - I did not read UPDATING
 
Just look in /usr/ports/UPDATING. Then use # portmaster -d -w- -r png-.
Then grab a can of coffee, drink it, wash the can and the cups, dry everything, put it back into the cupboard and twiddle your thumbs until the upgrade is finished.


The -w flag causes that the old png lib is saved, so while the upgrade is running all programs still find the library.
 
# portmaster -b -w -r png- or just # portmaster -b -w png- first if you want to update the ports that depend on graphics/png later in a separare step. The -w flag guarantees that the out of date ports that depend on the older version of the shared library will still continue to work by making a backup of libpng.so.5 to /usr/local/lib/compat/pkg.

(Damn, lme@ beat me to it :p )
 
Turns out, GDM and most other Gnome errors were all libpng related. Once I created the symlinks and re-started gdm from tty, everything worked beautifully.

I was giving png as an example, btw. There were a good number of other libraries that needed similar diagnosis...

@lme: I find that coffee is not compatible taste-wise with vodka. If you are drinking whiskey, then coffee goes very smoothly with that. For vodka I personally prefer hydrating drinks as accompaniment.
As for the ceramic cups; I just throw them off of the balcony when I get sufficiently pissed-off at something - hearing things break calms me

@kpa: No emoticon for what I'm drinking now, so you'll have to make do with some german beer :beergrin
 
Don't make symlinks for the shared libraries, make a backup copy of the older version of the library instead with portmaster -w. The reason is the allthough the symlink trick works most of the time there is no guarantee that it will continue to work. For example in this case of libpng15.so.so, there is nothing that guarantees that this library actually implements the API of the older libpng.so.6 library, it usually does but the operating system does not require this kind of compatibility nor does the ports infrastructure.
 
[cmd=]portmaster -d -B -P -i -g --force-config --update-if-newer /var/db/pkg... /var/db/pkg/... && yell || yell[/cmd]

I've a fair number of "latter yell" failures (package creation, building with default clang, officially BROKEN ports ...) however one can start with ports containing 'lib' in their names... Just this morning wrote down a wrapper (idea) of sorts for portmaster to make it more automatic (logging etc..) but it would take a few weeks to fully test and implement here locally (If it is indeed helping to speed the process...)

Note: the --update-if-newer is so one can reuse the command line without typing it again.
 
Yeah I am having some problems trying to rebuild everything that depends on png. I have run # portmaster -d -w -r png- and was terminated with the following message:

Code:
totemplparser-marshal.h:10: Warning: TotemPlParser:
 symbol='totemplparser_marshal_VOID__STRING_STRING_STRING': Unknown namespace for symbol
 'totemplparser_marshal_VOID__STRING_STRING_STRING'
totemplparser-marshal.h:18: Warning: TotemPlParser: symbol='totemplparser_marshal_VOID__STRING_BOXED':
 Unknown namespace for symbol 'totemplparser_marshal_VOID__STRING_BOXED'
totem-disc.h:52: Warning: TotemPlParser: symbol='MEDIA_TYPE_NUM_TYPES': Unknown namespace for symbol
 'MEDIA_TYPE_NUM_TYPES'
/usr/bin/ld: warning: libpcre.so.0, needed by /usr/local/lib/libsoup-2.4.so, not found (try using -rpath
 or -rpath-link)
Shared object "libpcre.so.0" not found, required by "libsoup-2.4.so.1"
Command '['/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse/tmp-introspectTSKzjD/TotemPlParser-1.0',
 '--introspect-dump=/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse/tmp-
introspectTSKzjD/types.txt,/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse/tmp-
introspectTSKzjD/dump.xml']' returned non-zero exit status 1
gmake[4]: *** [TotemPlParser-1.0.gir] Error 1
gmake[4]: Leaving directory `/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3/plparse'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/ports/multimedia/totem-pl-parser/work/totem-pl-parser-2.32.3'
gmake: *** [all] Error 2
*** Error code 1

Stop in /usr/ports/multimedia/totem-pl-parser.
*** Error code 1

Stop in /usr/ports/multimedia/totem-pl-parser.

===>>> make failed for multimedia/totem-pl-parser
===>>> Aborting update

===>>> Update for totem-pl-parser-2.32.3 failed
===>>> Aborting update

===>>> Update for brasero-2.32.1_4 failed
===>>> Aborting update

Terminated
 
Well it was a royal pain in the ass but somehow I have fixed all this libpng libpcre dependency stuff. Basically had to take care of libpcre using portmaster -w -r -d pcre and then portmaster -w -r -d png. Then do a pkg_libchk and manually recompile anything that failed or didn't compile with the above two commands.
 
Back
Top