PkgEnv

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

PkgEnv

Session Example

We start creating a new package environment:

hypermac:trash paolo$ pkgenv binary.env
Using GHC 6.10.1 (full path: /opt/local/bin/ghc-6.10.1)
Using cabal-install 0.6.2 (full path: /Users/paolo/.cabal/bin/cabal)
Installing package environment in /Users/paolo/trash/binary.env.
Done!

Usage:

  bash> source /Users/paolo/trash/binary.env/bin/activate
  (binary.env)bash> deactivate
  bash>
hypermac:trash paolo$  

We activate the new environment (the bash prompt is changed accordingly):

hypermac:trash paolo$ source binary.env/bin/activate 
(binary.env)hypermac:trash paolo$

All tools run now by default on the system package DB and the newly created/empty user package DB:

(binary.env)hypermac:trash paolo$ ghc-pkg list
/opt/local/lib/ghc-6.10.1/./package.conf:
    Cabal-1.6.0.1, HUnit-1.2.0.3, QuickCheck-1.2.0.0, array-0.2.0.0,
    base-3.0.3.0, base-4.0.0.0, bytestring-0.9.1.4, containers-0.2.0.0,
    directory-1.0.0.2, (dph-base-0.3), (dph-par-0.3),
    (dph-prim-interface-0.3), (dph-prim-par-0.3), (dph-prim-seq-0.3),
    (dph-seq-0.3), editline-0.2.1.0, filepath-1.1.0.1, (ghc-6.10.1),
    ghc-prim-0.1.0.0, haddock-2.3.0, haskell-src-1.0.1.3,
    haskell98-1.0.1.0, hpc-0.5.0.2, html-1.0.1.2, integer-0.1.0.0,
    mtl-1.1.0.2, network-2.2.0.1, old-locale-1.0.0.1, old-time-1.0.0.1,
    packedstring-0.1.0.1, parallel-1.1.0.0, parsec-2.1.0.1,
    pretty-1.0.1.0, process-1.0.1.0, random-1.0.0.1,
    regex-base-0.72.0.2, regex-compat-0.71.0.1, regex-posix-0.72.0.3,
    rts-1.0, stm-2.1.1.2, syb-0.1.0.0, template-haskell-2.3.0.0,
    time-1.1.2.2, unix-2.3.1.0, xhtml-3000.2.0.1
/Users/paolo/trash/binary.env/ghc-packages.conf:

Let's install a package inside the new environment:

(binary.env)hypermac:trash paolo$ cabal install --verbose=0 binary
Reading package info from "dist/installed-pkg-config" ... done.
Writing new package config file... done.
(binary.env)hypermac:trash paolo$ ghc-pkg list
/opt/local/lib/ghc-6.10.1/./package.conf:
    Cabal-1.6.0.1, HUnit-1.2.0.3, QuickCheck-1.2.0.0, array-0.2.0.0,
    base-3.0.3.0, base-4.0.0.0, bytestring-0.9.1.4, containers-0.2.0.0,
    directory-1.0.0.2, (dph-base-0.3), (dph-par-0.3),
    (dph-prim-interface-0.3), (dph-prim-par-0.3), (dph-prim-seq-0.3),
    (dph-seq-0.3), editline-0.2.1.0, filepath-1.1.0.1, (ghc-6.10.1),
    ghc-prim-0.1.0.0, haddock-2.3.0, haskell-src-1.0.1.3,
    haskell98-1.0.1.0, hpc-0.5.0.2, html-1.0.1.2, integer-0.1.0.0,
    mtl-1.1.0.2, network-2.2.0.1, old-locale-1.0.0.1, old-time-1.0.0.1,
    packedstring-0.1.0.1, parallel-1.1.0.0, parsec-2.1.0.1,
    pretty-1.0.1.0, process-1.0.1.0, random-1.0.0.1,
    regex-base-0.72.0.2, regex-compat-0.71.0.1, regex-posix-0.72.0.3,
    rts-1.0, stm-2.1.1.2, syb-0.1.0.0, template-haskell-2.3.0.0,
    time-1.1.2.2, unix-2.3.1.0, xhtml-3000.2.0.1
/Users/paolo/trash/binary.env/ghc-packages.conf:
    binary-0.4.4

We can now use the new package:

(binary.env)hypermac:trash paolo$ ghci
GHCi, version 6.10.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Prelude> import Data.Binary
Prelude Data.Binary>

and leave the environment:

(binary.env)hypermac:trash paolo$ deactivate 
hypermac:trash paolo$ 

and when you're done with the environment, simply remove it:

hypermac:trash paolo$ rm -rf binary.env