Rich Freeman on 24 Mar 2011 05:41:01 -0700 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] Linux and package managers/repos |
On Thu, Mar 24, 2011 at 4:47 AM, JP Vossen <jp@jpsdomain.org> wrote: > Having said that, some of it *is* the technology, since the package system > knows what files and dirs it installed and it can remove them. That does not > cover cases where the program creates new files or dirs unilaterally, but > it's still better than the old Windows, sure stick DLLs anywhere method. > And yes, they've gotten a lot better about that, since XP or so... > Yup, I think the biggest single inprovement Windows could make to maintainability would be to take a page from what most linux distros try to do (imperfectly): 1. A software package is contained entirely in one directory tree under "Program Files" or whatever, and has one or two defined areas to store system-wide or user-specific configuration (like a registry hive). 2. A software package can write to neither of those places. 3. When it installs the software package can provide the OS with a bunch of files to install, and it will do so (after confirming with the user that this is OK), and initial system-wide state and a template for new user-specific configuration. 4. The OS will provide standard APIs for an app to modify system-wide or user-specific settings. The OS will enforce that all settings stay properly contained. Obviously system-wide changes may require some privilege mechanism to manipulate, completely handled by the OS. 5. When it is time to uninstall the software package can do things like update license servers or whatever, but all the cleanup/etc is up to the OS. Some of these elements are enforced by typical linux PMs. The main issues I see on linux are that apps manage their own settings and write to arbitrary world/user-writable locations, and sometimes even group-writable areas under /usr/share/... This makes true clean-up difficult. Android would be an example of an OS that pretty-much does everything in 1-5, except that it is single-"user" (where user is defined as a human, not an OS entity). Android apps might or might not be able to leave some mess if they are able to write to the SD card (or locations on the network). One thing I will also add is that even when packages are able for whatever reason to go putting files in non-ideal places, many PMs have some mechanism of detecting these files and removing them (if you're brave). I know that Gentoo at least has a database of every file installed by every package, along with timestamps and hashes. When removing packages the PM will remove the file if it hasn't changed. In fact, the Gentoo PM installs new versions of packages before removing old ones, and uses this logic to make this happen safely. > >> Ironically, I'd actually argue that Windows is better at managing packages >> that > >> do not come from Windows. > OK, interesting point. That's part of why I argue to stay inside the > package system. And almost anything you want is already in there. But... > When it isn't, it does get ugly. Yup, distros need to provide more graceful solutions to this. I know that some tools exist on Gentoo for creating packages out of file trees for single-use so that they are at least managed. That is, you manually install a package to /tmp/someplace (so that the binaries end up in /tmp/someplace/usr/bin or whatever), and then it snapshots this, installs it, and then manages it (minus automatic upgrades/QA/etc). I have no illusions that linux distros have it perfect. The fact that they control what goes in sometimes leads them to not try to provide workarounds for user-deployed packages. Both Windows and Linux distros would do well to learn from the strengths of the other. Rich ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug