From: Yohanes Santoso Date: 2002-11-09T08:58:08+09:00 Subject: Re: CPAN Style installer Austin Ziegler writes: > ALL packagers should know what was installed and where; if they > don't, then there's a problem (even RPM knows this stuff). Windows' I agree that all package manager should know what and where they install! But, like I said in the example with Debian's package manager, for the package manager to know all installed files, it requires some additional work from the package builder. If the package consists of exclusively ruby files, then the package builder can just assume that that's all in that package. Howeveer, if a package needs to be compiled, and the compilation produces a bunch of object files, then the person doing the packaging have to add manually/semi-automatically each created object files and/or config files into the list of files of that package. The sane response would be to compile at the packager's machine and bundle the produced binary. But then, now the packager have to handle many different platform. Not to mention that some packages compile differently depending on what libraries you have in your machine. If so, then how do you guarantee that the libraries in the packager's machine is similar to the libraries in your machine? What if you are missing a functionality because the packager's machine lack an optional library? So, binary packaging is, well, an awkward solution which require intensive work on the part of the builder. GNU stow is a solution towards this put-all-in-one-place thinking. You may not like it the way it works, but you gotta love the simplicity it produces. For example, in Debian, kde3 is still not officially included. So, you download and compile the kde3, and then install it in /usr/local/stow/kde-3.0.4. A week later, you want to upgrade to kde-3.0.5, so just install it in /usr/local/stow/kde-3.0.5, and perform 'stow -D kde-3.0.4' to remove the link from the old kde, and 'stow kde-3.0.5' to link the just-compiled kde. A year later, Debian finally include kde3 officially. So, you want to remove kde-3.0.5 in favour of the official kde package. No sweat. Finally, installing a package in your own home directory may work in some cases. But what if you're working with a group of people. In this case, the sensible solution is to install the package in a centrally accessible place. May be in Windows where only one person works on a machine, there is no difference between home directory installation vs. central installation. My point is, DOS had it right by putting each application in its own directory. Windows had it wrong. Unix, CPAN, etc. also had it wrong. There's no sense in continuing an otherwise bad practice. libcygwin, for all its faults, have managed to implement link in Windows filesystem. Even if libcygwin has more faults than goodness, there are many other UNIX emulations layer that implements file link in Windows. Furthermore, it should be noted that it is possible to pick just what you want from a library, especially one whose source code is open. YS.