Re:Why inbreeding is bad for your community
by jmillikin on Sunday October 28, 2012 @03:24PM
(#4709719)
Cabal does not require editing $PATH to use newly-installed libraries.
The problem he reports is that when he upgrades the Cabal binary by running 'cabal install cabal-install', the sequence of events is:
1. The system runs /usr/bin/cabal
2. Cabal fetches and builds the new binary
3. The new binary is installed to $HOME/.cabal/bin/
4. When he runs 'cabal update' again, it still uses /usr/bin/cabal because $HOME/.cabal/bin/ is not on his $PATH
Sounds like pip (popular package manager for Python) avoids this problem because you don't use pip to install or upgrade itself. If using the package manager to install updated versions of itself is an intended use case, then I agree with others: it should check your path after the install and make sure the newly installed binary is the one that will get used. Otherwise the design is making it too easy to do the wrong thing.
2. Ivy/Maven. Dependencies are placed in ~/.ivy, and are available for use without changing environment variables.
3. rubygems. A ~/.gems directory is created that provides dependencies by ruby version, if you wish.
Now, running a clis still requires an addition to path. But package managers do exist that organize dependencies on the user path without explicit environment variable edition.