# Shared Libraries after 'make delete-old(-libs)'



## dbuckhal (Feb 2, 2010)

Hello,

Current setup:
FreeBSD 8 Stable
GNOME Desktop 2.28

I am not a master of all that makes FreeBSD tick, but I sure love playing with it and how nice of an OS it is.  I have used it since 5.5 and before moving to Release 8 (from 7.2), I thought I would see about "cleaning up" the system without a full format/reinstall.

I explored the 'make delete-old' and 'make delete-old-libs' commands and have been coming up with "shared libraries not found" errors.  I had tried removing Gnome completely and reinstalling it through ports just to see if it would fix any shared library issues, but it did not.  

I went ahead with the source upgrade to 8 and rebuilt world (csup stable-supfile method not freebsd-update) and that did not fix the problem.

So, I would find out which "libfoo.so.x" was needed and link it to the newer version of the library, then create a link for it.  For example:

libcrypt.so.4 -> libcrypt.so.5

Seemingly, there are newer versions of such libraries, but executibles are no longer linked to them.

Is there a command, script, etc... to help link the correct version of shared libraries to their executibles?  I really would not like to just pkg_deinstall everything and start all over, because I would like to understand what happened and how to fix it.

Thanks for the assistance,

Derrick


----------



## SirDice (Feb 2, 2010)

dbuckhal said:
			
		

> I explored the 'make delete-old' and 'make delete-old-libs' commands and have been coming up with "shared libraries not found" errors.  I had tried removing Gnome completely and reinstalling it through ports just to see if it would fix any shared library issues, but it did not.


You have to keep in mind that the base OS and the ports are two seperate entities. Make delete-old(-libs) only works for the base OS. It does not remove any libraries or executables installed by ports.  



> So, I would find out which "libfoo.so.x" was needed and link it to the newer version of the library, then create a link for it.  For example:
> 
> libcrypt.so.4 -> libcrypt.so.5


To save yourself a world of problems, don't do that.



> Seemingly, there are newer versions of such libraries, but executibles are no longer linked to them.


You need to rebuild those executables.



> Is there a command, script, etc... to help link the correct version of shared libraries to their executibles?  I really would not like to just pkg_deinstall everything and start all over, because I would like to understand what happened and how to fix it.


It depends on how messy things got. Sometimes a `# pkg_delete -a` is needed to get everything in order again.


----------



## towelfox (Feb 2, 2010)

derrick, I think you need to install ports/misc/compat7x

This will place the older versions of the shared libraries into /usr/local/lib/compat/ so that your programs built against them will work.

Rob


----------



## DutchDaemon (Feb 2, 2010)

SirDice said:
			
		

> You have to keep in mind that the base OS and the ports are two seperate entities. Make delete-old(-libs) only works for the base OS. It does not remove any libraries or executables installed by ports.



Which is not to say that it may remove libraries _needed_ by installed ports. Running [cmd=]make delete-old-libs[/cmd] before rebuilding installed ports (or installing compat_x_) on a new major version will cripple a lot of your installed ports. This has always worked well for me.


----------



## dbuckhal (Feb 7, 2010)

Thanks for the suggestions, all.

I have unlinked those libraries links I had manually created, installed compat_7, and and just about done with a complete reinstall of all of my ports (currently at 961/967 ports).  We'll see how it goes!

A new strange thing I found in GNOME 2.28, along with my other little issues, is that I cannot shutdown the system through GNOME.  (System -> Shutdown..., etc...)  But, I am not going to worry about that because that's just the desktop environment, and I am more concerned with the FreeBSD 8 stable being in top working order.    "shutdown -p now" works just fine.

Thanks again!


----------

