FreeBSD Ports Problem - Please help

Matthew Seaman m.seaman at black-earth.co.uk
Fri Feb 12 08:52:10 UTC 2010


On 12/02/2010 04:22, M M wrote:
> I followed the FreeBSD guidebook and tried to install the ports
> 'graphics/sane-backends' and 'graphics/sane-frontends', but when I did this,
> FreeBSD told me I needed the latest installation of graphics/jpeg (which
> happened to be jpeg-8, and I only had jpeg-7 installed on my machine).
> 
> So If I remember correctly, I ended up using *Portupgrade* for this process.
> I believe I ran 'Portupgrade -ai' which took quite a long time. Portupgrade
> worked great or whatever Port updating command I ran did a wonderful
> job....it updated the graphics/jpeg port on my machine.

The root of the problem you're seeing is due to the change in the
libjpeg.so ABI version: libjpeg.so.10 is installed by jpeg-8, but most
of your apps want to link against libjpeg.so.9 installed by jpeg-7.
Rebuilding all out of date ports (via portupgrade -a) should have been
the correct action to fix that.  However, some problems with the update
were discovered and subsequently fixed.  Have you seen this entry from
/usr/ports/UPDATING?

20100205:
  AFFECTS: users of qt 3 and kde 3
  AUTHOR: itetcu at FreeBSD.org

  When building qt33 and kdelibs3 (at least), while they are installed,
because
  of -L/usr/local/lib being passed too soon, the currently installed
libs are
  used instead of the ones from the build. This makes the build fail if you
  updated any of the libs this qt / kde libs are linked against (like
libjpeg).

  For the moment the workaround, when you get to this, is to move the
old lib
  out of the way, e.g.:
  mv /usr/local/lib/libqt-mt.so /usr/local/lib/libqt-mt.so.old && \
  cd /usr/ports/x11-toolkits/qt33/ && make && \
  mv /usr/local/lib/libqt-mt.so.old /usr/local/lib/libqt-mt.so && \
  portmaster -C x11-toolkits/qt33
  (or portupgrade -w qt-33\*), etc.

I suggest the best thing to try first is: update your ports tree to the
latest using csup(1) or portsnap(8) or however you'ld usually do it.

Forcibly delete whatever libjpeg you have installed, and then reinstall
jpeg-8:

    # pkg_delete -f jpeg-\*      (This will give you alarming warning
                                  messages, which you can ignore)
    # cd /usr/ports/graphics/jpeg
    # make install
    # pkgdb -F

Apply the advice above to move the incorrectly linked shlibs out of the
way and rebuild them properly.  This might make things work again.

If it doesn't try and identify any binaries in /usr/local/bin that link
against missing shlibs and re-install the ports that supply them.
Do that by running ldd(1) against the apps.  Eg. like this:

% ldd /usr/local/bin/psi
/usr/local/bin/psi:
	libz.so.5 => /lib/libz.so.5 (0x285ff000)
	libXss.so.1 => /usr/local/lib/libXss.so.1 (0x28611000)
	libaspell.so.16 => /usr/local/lib/libaspell.so.16 (0x28614000)
	libQtDBus.so.4 => /usr/local/lib/qt4/libQtDBus.so.4 (0x286cc000)
        [... etc ...]

What you're looking for are lines that say 'libfoo => not found (0x0)'
For any such, work out what port supplies that application, and
reinstall it:

    # pkg_which /usr/local/bin/psi
    # portupgrade -f `pkg_which /usr/local/bin/psi`

That's going to be long-winded and tedious, but should still be a bit
quicker than force-reinstalling everything that depends on jpeg, kde
and qt.

> Any advice would be greatly appreciated. At this point I am waiving the
> white flag and I would love to just get back to my original configuration
> and forget about installing the image scanner. Above all else, I am just
> trying to avoid a total reinstall of FreeBSD 8.0.

There's no need to go that far.  If you want to take a nuke-and-repave
approach, you can do it by deleting and reinstalling just the affected
ports.  In extremis, you could do something like this:

   * Make a note of all the ports you have installed already that
     depend on libjpeg:

        % pkg_info -Rx jpeg > ports-I-want-installed

   * Blow away libjpeg and everything that links against it:

        # pkg_deinstall -fr graphics/jpeg

   * Reinstall what you want from ports-I-want-installed.  If you
     choose the important leaf ports first (the ones that provide the
     apps you actually use) then most of the ports on that list will
     get automatically reinstalled as dependencies.

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.              7 Priory Courtyard, Flat 3
Black Earth Consulting                       Ramsgate
                                             Kent, CT11 9PW
Free and Open Source Solutions               Tel: +44 (0)1843 580647

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 267 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20100212/0f8d3551/signature.pgp


More information about the freebsd-ports mailing list