4 ms·
> It's an interesting problem. Live updates without requiring a restart is going to be a complex task, how do you reload a library in use by a program without c
by dozzie 9y ago
> It's an interesting problem. Live updates without requiring a restart is going to be a complex task, how do you reload a library in use by a program without crashing it?
Well, how do Linux and other unices do that?
- pawadu 9y agosoftware: can upgrade binaries and libraries without affecting already running programs services: they are specifically designed to be updated and restarted kernel: https://en.wikipedia.org/wiki/Ksplice https://en.wikipedia.org/wiki/Ksplice
- dozzie 9y ago> services: they are specifically designed to be updated and restarted I write plenty of daemons (you call them "services"). What exactly do I write specifically for them to be able to continue to run when a library is upgraded?
- Xylakant 9y agoNothing. They just keep using the old version of the lib and thus potentially vulnerable.
- dozzie 9y agoYes, but they continue to run while the library is being updated. That's the point. They can get restarted once the update process finishes, which takes a lot less time than be shut down, wait for update, and be started again. From what I know, Windows doesn't allow a library to be replaced until it's not used by anything, which is more intrusive and is IMO the root cause (though indirect) why people hate updating Windows.
- pawadu 9y agoSorry, I meant things like dependency management among services. I don't think systemd supports what you are asking but it shouldn't be too hard to write a service that restarts other services if their shared libraries change?
- Rondom 9y agohttps://github.com/liske/needrestart https://github.com/liske/needrestart is quite useful. It even has heuristics for updates to Python code, Java classes...
- astrobe_ 9y agogcc --static
- cesarb 9y agoThey don't, the program keeps using the old library until it's restarted. Some Linux distributions restart daemons when they or their dependent libraries are updated, but that can't be done for desktop software. Firefox sometimes notices it's been updated and pops up a warning with a "Restart Firefox" button (which keeps the session state), though AFAIK it's only for updates to Firefox itself, not for any of the libraries it might have loaded. If you never restart a Linux desktop (or at least log out), you will be running outdated libraries, even if you run updates in the background. (The best solution would be what Android does, where every program is supposed to know how to checkpoint itself, and they are forcefully restarted on a upgrade, transparently to the user. But even there, updates to system libraries still require a full reboot.)
- Qwertious 9y agoI believe this is solved by NixOS, by the way.