3 ms·
1. npm When installing packages with the --local flag, the npm package manager moves up the pwd path, looking for a node_modules directory. Once installed there
by jackcviers3 14y ago
1. npm When installing packages with the --local flag, the npm package manager moves up the pwd path, looking for a node_modules directory. Once installed there, packages can be required by package name in dependent scripts. Common use case is to put a node_modules directory in your home directory to keep multi-project development dependencies out of your global system node install.
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.
- jmillikin 14y agoCabal 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
- graue 14y agoSounds 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.