On Freitag 11 Dezember 2009, Daniel Troeder wrote: > On Fri, 2009-12-11 at 07:16 -0600, Dale wrote: > > Helmut Jarausch wrote: > > > On 11 Dec, Alan McKinnon wrote: > > >> On Friday 11 December 2009 11:11:41 Helmut Jarausch wrote: > > >>> Hi, > > >>> > > >>> I'm curious how portage solves its most difficult part (in my eyes). > > >>> > > >>> When installing a dynamic library (by "hand") I have often got an > > >>> error messages if the corresponding library is currently in use. > > >>> > > >>> How does portage succeed anyway. > > >>> (I have the suspicion that it does not succeed always, since > > >>> sometimes only rebooting solves some very strange problems) > > >>> > > >>> How to replace fundamental X11-libaries on a system running X11 > > >>> or even more suprising, how can I replace a running glibc ? > > >>> > > >>> Many thanks for enlightening me, > > >>> Helmut. > > >> > > >> Portage does nothing special, as dealing with this is a Unix thing. > > >> > > >> On Unix, the inode is the file, not the directory entry. If you want > > >> to replace an open file, the system simply does it and updates the > > >> dentry to point to a new inode. Any spp using the old file will > > >> continue to use it as it still has a handle to the inode. The inode is > > >> only fully deleted when the last app using it closes it > > >> > > >> If you update a library to a new version with an API break, the lib > > >> should get a new soname so the file is a different name, hence no > > >> collision (symlinks to libraries excepted). > > >> > > >> This is how it should work, any code that tries to do it a different > > >> way is by definition broken, that's why portage needs take no special > > >> measures. > > >> > > >> All of this is in complete contrast to other broken systems, such as > > >> Windows for example. On Windows, the filename IS the file, so upgrades > > >> are horrible. Installers must put the file somewhere else and have the > > >> final steps and registry updates done at next reboot before anything > > >> has a chance to open libs. This is why fairly deep updates on Windows > > >> often require multiple reboot - multiple apps installed multiple libs > > >> to be fiddled with multiple times .... > > > > > > Many thanks Alan, > > > > > > so I conclude that rebooting IS necessary to get the new libraries > > > used, isn't it? > > > On the other hand running applications should continue to run, which is > > > not always the case, e.g. recently using cvs as non-root user just > > > hanged. Rebooting the system solved it (since I update my system nearly > > > each day). > > > > > > Thanks again Alan, > > > Helmut. > > > > I'll add two cents here. Let's say I upgrade Seamonkey which is my web > > browser / email program. I sync and notice there is a update to > > Seamonkey available and I let emerge update it. When the install is > > complete, I don't have to reboot or even log out of KDE. All I have to > > do is close Seamonkey and start it again. It will then load the new > > updated version and run it. > > > > The same could be said for a service like cups. If you update cups, all > > you have to do is restart the service. It will stop the old service > > then load up the new service that was just installed. Just a simple > > "/etc/init.d/cupsd restart" will work just fine. > > > > If you upgrade something kde, say kdelibs or some other kde base > > package, then all you need to do is log out of KDE and log back in > > again. Sort of the same with updating xorg, logout, go to a console and > > restart xdm or whatever you use to start X. I usually use the ctrl alt > > backspace key but restarting the service is better, or so some have said > > anyway. > > > > Rebooting will also do all of this but it is not needed. From a > > technical stand point, the only time you must reboot is to load a new > > kernel. > > > > Hope that helps a little. > > > > Dale > > > > :-) :-) > > I absolutely concur with Alan and Dale, I just want to warn a bit about > complex X11-environments like gnome or kde. If you logout and login > again, it is NOT secure, that all gnome/kde/qt apps have been closed. > There are services (gconf, kded, pulse, etc) that take a time to quit, > or sometimes just don't :( > > Then, when an app was linked against a symlink, and that left-over-app > too, the dynamic loader may not load a newly installed library, but > reuses the one in memory (from the left-over-app). [1] > > It's still valid, that no reboot is needed, but you sure can be > unlucky :) > > Bye, > Daniel > > > [1] don't take this info for granted, I'm no expert in this - just what > I understood from reading... >
/etc/init.d/xdm stop killall -9 X /etc/init.d/xdm zap /etc/init.d/xdm start