The only thing I want to add here is that while gentoo is incredibly flexible during install time, and once installed usually runs great permanently, it is a real bitch upgrade.
AppA-1.023 was compiled against Libx-4.86 during install time. After an upgrade LibX-4.86 is updated to LibX-5.08. AppA-1.023 is still linked against LibX-4.86 and must be recompiled against LibX-5.08 Portage doesnt do this for you.. And without specifically knowing which programs are compiled against which libraries, this cant be done easily.
There is a utility called revdep-rebuild, but it is completely fucking backwards. Instead of recompiling the application, it recompiles the library, which has already been compiled during the update and doesnt actually need it.
As far as I can tell the only sure fire way to fix these types of problems on gentoo is to do an emerge -e system && emerge -e world This unfortunately takes the better part of 2 days on my computer, and recompiles everything whether it is needed or not.
No, revdep-rebuild would recompile AppA in your example.
Originally Posted by duby229
That is how it should work I agree but it definitely doesnt. Set up an example to test it yourself. Upgrade a library for which you know some application depends on the older version, then run revdep-rebuild it always attempts to recompile the library.
Originally Posted by StringCheesian
Your application would continue to work, because Portage would preserve the older version of the library, so rebuild wouldn't be immediately needed anyway.
Thats only rarely true. There are only a few cases where portage will slot a package, and in those cases there is usually an *-config or a config-* or an eselect plugin to switch between the slotted versions. Besides portages slotting capability is too crude to be much use. It is necessary for some packages like gcc, others like python, or java are slotted, but I've come into problems where the switching application doesnt symlink something at all, or it symlinks to the wrong files. These scripts are better now then they were 5 years ago, but still not perfect.
Originally Posted by ferreira
Slotting is a solution, but it isnt the best solution.
revdep-rebuild recompiles library users. It is not always accurate, but cases where it fails are usually caught and documented long before the package becomes stable. duby229's characterization of revdep-rebuild is incorrect.
The library preservation feature which ferreira talked about is new to portage 2.2. It is not the same as slotting.
Upgrading Gentoo works fine for me. If it is possible that you are the first one with a configuration that upgrades will break, but like with all distributions, that is when you file a bug report.
If you dont believe me then test it. I'm sure it is supposed to work the way you think it does, but it doesnt.
Originally Posted by chithanh
As far as preserved libs go, it is known to be broken in 2.2. Please dont recommend that people use it right now unless you tell them it is for bug testing only. I looked at the code, but I cant figure out the structure. I'm just not sure what they are trying to do with it.
I used to think that there wouldn't be much use to phoronix running gentoo tests, but actually it might be useful for one reason: it's not ubuntu. Running everything off ubuntu results in a heavy reliance upon the way that ubuntu does things - which may cause various conclusions to be ultimately flawed.
Gentoo, Fedora, openSUSE, something else to compare the tests against would provide much more useful information than only running tests against ubuntu.