Difference between revisions of "Cabal/How to install a Cabal package"

From HaskellWiki
Jump to navigation Jump to search
(People might not have found the package as of yet)
(Update now cabal-install has been released)
Line 4: Line 4:
 
# Check whether the package came with your Haskell implementation.
 
# Check whether the package came with your Haskell implementation.
 
# If your [[:Category:OS|operating system]] has a packaging system (e.g. most Linux or BSD distributions), check whether it is already packaged there.
 
# If your [[:Category:OS|operating system]] has a packaging system (e.g. most Linux or BSD distributions), check whether it is already packaged there.
# Otherwise, you'll have to build and install the package. A program to automate this process, called [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall ''cabal-install''], is under development. In the meantime, you'll have to do it manually:
+
# Otherwise, you'll have to build and install the package. By far the easiest way is to use [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall ''cabal-install''] to do everything automatically (note to build cabal-install for the first time, you'll need to use the manual method below). If you so wish, you can still install packages manually -- see the section below.
## First, ensure that all the packages it depends on are installed (by following these instructions recursively).
 
## Unpack the tar file (yes, this assumes a Unix system; sorry about that ([[how to unpack a tar file in windows]])):
 
##:<code>tar xzf PACKAGE-VERSION.tar.gz</code>
 
## Move into the directory this creates:
 
##:<code>cd PACKAGE-VERSION</code>
 
## This directory should contain a file <code>Setup.hs</code> or <code>Setup.lhs</code>. In order to install a package globally, perform the following commands for the appropriate file (see the [http://www.haskell.org/ghc/docs/latest/html/Cabal/builders.html Cabal documentation] for more details):
 
##:<code>runghc Setup.hs configure</code>
 
##:<code>runghc Setup.hs build</code>
 
##:<code>runghc Setup.hs install</code>
 
#: If instead of installing globally, you just wish to install a package for your normal user account, you could instead use the following <code>configure</code> command, which would register the install in the user-specific database and install binaries and libraries in $HOME/bin, $HOME/lib, and so forth:
 
#::<code>runghc Setup.hs configure --user --prefix=$HOME</code>
 
#: You can get more information about any of these commands by adding <code>--help</code> after the command. For example, to see all the options available for the <code>configure</code> step, you could use the following command:
 
#::<code>runghc Setup.hs configure --help</code>
 
#: Lastly, if you encounter unsatisfied dependencies when you run the configure step, that is when you recurse and first install the missing package.
 
   
  +
== Installing packages manually ==
'''Note''': If you have more than one Haskell compiler on your system,
 
 
# First, ensure that all the packages it depends on are installed (by following these instructions recursively).
use the <code>--with-compiler</code> option for the
 
 
# Unpack the tar file (yes, this assumes a Unix system; sorry about that ([[how to unpack a tar file in windows]])):
<code>configure</code> step. That will ensure that Cabal
 
 
#:<code>tar xzf PACKAGE-VERSION.tar.gz</code>
uses the correct compiler during the entire installation process.
 
 
# Move into the directory this creates:
For example:
 
 
#:<code>cd PACKAGE-VERSION</code>
 
# This directory should contain a file <code>Setup.hs</code> or <code>Setup.lhs</code>. In order to install a package globally, perform the following commands for the appropriate file (see the [http://www.haskell.org/ghc/docs/latest/html/Cabal/builders.html Cabal documentation] for more details):
 
#:<code>runghc Setup.hs configure</code>
 
#:<code>runghc Setup.hs build</code>
 
#:<code>runghc Setup.hs install</code>
   
  +
=== Notes ===
<code>
 
 
# If instead of installing globally, you just wish to install a package for your normal user account, you could instead use the following <code>configure</code> command, which would register the install in the user-specific database and install binaries and libraries in $HOME/bin, $HOME/lib, and so forth:
runghc Setup.hs configure --with-compiler=ghc-6.8.2
 
runghc Setup.hs build
+
#:<code>runghc Setup.hs configure --user --prefix=$HOME</code>
 
# You can get more information about any of these commands by adding <code>--help</code> after the command. For example, to see all the options available for the <code>configure</code> step, you could use the following command:
runghc Setup.hs install
 
 
#:<code>runghc Setup.hs configure --help</code>
</code>
 
 
# If you encounter unsatisfied dependencies when you run the configure step, that is when you recurse and first install the missing package.
 
  +
# If you have more than one Haskell compiler on your system, use the <code>--with-compiler</code> option for the <code>configure</code> step. That will ensure that Cabal uses the correct compiler during the entire installation process. For example:
'''Note 2''': If you have missing dependencies when running Setup.hs configure, you will get the following message:
 
 
#: <code>runghc Setup.hs configure --with-compiler=ghc-6.8.2</code>
 
 
#: <code>runghc Setup.hs build</code>
<code>
 
 
#: <code>runghc Setup.hs install</code>
...
 
Setup.hs: At least the following dependencies are missing:
 
zlib -any, plugins >=1.0, oeis -any
 
</code>
 
 
You may want to use [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall cabal-install] OR on debian systems (debian, ubuntu, etc.), alternatively you can try the following "hack" - please run this ONLY IF YOU KNOW WHAT YOU ARE DOING (understand the command, especially the "-y --force-yes" flags):
 
<code>
 
runghc Setup.hs configure 2>&1 | tail -n +3 | awk '{print $1}' | xargs -ijoe sudo apt-get -y --force-yes install libghc6-joe-dev
 
</code>
 

Revision as of 18:50, 21 August 2008

There's an interesting Haskell package on HackageDB you'd like to try. How do you install it on your system?

  1. Check whether the package came with your Haskell implementation.
  2. If your operating system has a packaging system (e.g. most Linux or BSD distributions), check whether it is already packaged there.
  3. Otherwise, you'll have to build and install the package. By far the easiest way is to use cabal-install to do everything automatically (note to build cabal-install for the first time, you'll need to use the manual method below). If you so wish, you can still install packages manually -- see the section below.

Installing packages manually

  1. First, ensure that all the packages it depends on are installed (by following these instructions recursively).
  2. Unpack the tar file (yes, this assumes a Unix system; sorry about that (how to unpack a tar file in windows)):
    tar xzf PACKAGE-VERSION.tar.gz
  3. Move into the directory this creates:
    cd PACKAGE-VERSION
  4. This directory should contain a file Setup.hs or Setup.lhs. In order to install a package globally, perform the following commands for the appropriate file (see the Cabal documentation for more details):
    runghc Setup.hs configure
    runghc Setup.hs build
    runghc Setup.hs install

Notes

  1. If instead of installing globally, you just wish to install a package for your normal user account, you could instead use the following configure command, which would register the install in the user-specific database and install binaries and libraries in $HOME/bin, $HOME/lib, and so forth:
    runghc Setup.hs configure --user --prefix=$HOME
  2. You can get more information about any of these commands by adding --help after the command. For example, to see all the options available for the configure step, you could use the following command:
    runghc Setup.hs configure --help
  3. If you encounter unsatisfied dependencies when you run the configure step, that is when you recurse and first install the missing package.
  4. If you have more than one Haskell compiler on your system, use the --with-compiler option for the configure step. That will ensure that Cabal uses the correct compiler during the entire installation process. For example:
    runghc Setup.hs configure --with-compiler=ghc-6.8.2
    runghc Setup.hs build
    runghc Setup.hs install