NAME
ghc-pkg - GHC Haskell Cabal package manager
SYNOPSIS
ghc-pkg action [OPTION]...
DESCRIPTION
A package is a library of Haskell modules known to the compiler. The
ghc-pkg tool allows adding or removing them from a package database. By
default, the system-wide package database is modified, but
alternatively the user's local package database or another specified
file can be used.
To make a package available for ghc, ghc-pkg can be used to register
it. Unregistering it removes it from the database. Also, packages can
be hidden, to make ghc ignore the package by default, without
uninstalling it. Exposing a package makes a hidden package available.
Additionally, ghc-pkg has various commands to query the package
database.
Where a package name is required, the package can be named in full
including the version number (e.g. network-1.0), or without the
version number. Naming a package without the version number matches all
versions of the package; the specified action will be applied to all
the matching packages. A package specifier that matches all version of
the package can also be written pkg-*, to make it clearer that multiple
packages are being matched.
ACTIONS
register filename|-
Register the package using the specified installed package
description.
update filename|-
Register the package, overwriting any other package with the
same name.
unregister pkg-id
Unregister the specified package.
expose pkg-id
Expose the specified package.
hide pkg-id
Hide the specified package
list [pkg]...
List registered packages in the global database, and also the
user database if --user is given. If a package name is given all
the registered versions will be listed in ascending order.
Accepts the --simple-output flag.
dot Generate a graph of the package dependencies in a form suitable
for input for the graphviz tools. For example, to generate a
PDF of the dependency graph:
dot tred dot -Tpdf >pkgs.pdf
find-module module
List registered packages exposing module module in the global
database, and also the user database if --user is given. All the
registered versions will be listed in ascending order. Accepts
the --simple-output flag.
latest pkg-id
Prints the highest registered version of a package.
check Check the consistency of package dependencies and list broken
packages. Accepts the --simple-output flag.
describe pkg
Give the registered description for the specified package. The
description is returned in precisely the syntax required by ghc-
pkg register.
field pkg field
Extract the specified field of the package description for the
specified package. Accepts comma-separated multiple fields.
dump Dump the registered description for every package. This is like
ghc-pkg describe '*', expect that it is intended to be used by
tools that parse the results, rather than humans.
recache
Regenerate the package database cache. This command should only
be necessary if you added a package to the database by dropping
a file into the database directory manyally. By default, the
global DB is recached; to recache a different DB use --user or
--package-conf as appropriate.
OPTIONS
When asked to modify a database
(register, unregister, update, hide, expose, and also check), ghc-pkg
modifies the global database by default. Specifying --user causes it
to act on the user database, or --package-conf can be used to act on
another database entirely. When multiple of these options are given,
the rightmost one is used as the database to act upon.
Commands that query the package database
(list, latest, describe, field) operate on the list of databases
specified by the flags --user, --global, and --package-conf. If none
of these flags are given, the default is --global --user.
--user Use the current user's package database.
--global
Use the global package database.
-f FILE, --package-conf=FILE
Use the specified package config file.
--global-conf=FILE
Location of the global package config.
--force
Ignore missing dependencies, directories, and libraries.
--force-files
Ignore missing directories and libraries only.
-g, --auto-ghc-libs
Automatically build libs for GHCi (with register).
-?, --help
Display a help message and exit.
-V, --version
Output version information and exit.
--simple-output
Print output in easy-to-parse format for some commands.
--names-only
Only print package names, not versions; can only be used with
list --simple-output.
--ignore-case
Ignore case for substring matching.
ENVIRONMENT VARIABLES
GHC_PACKAGE_PATH
The GHC_PACKAGE_PATH environment variable may be set to a
:-separated list of files containing package databases. This
list of package databases is used by ghc and ghc-pkg, with
earlier databases in the list overriding later ones. This order
was chosen to match the behaviour of the PATH environment
variable; think of it as a list of package databases that are
searched left-to-right for packages.
If GHC_PACKAGE_PATH ends in a separator, then the default user
and system package databases are appended, in that order. e.g.
to augment the usual set of packages with a database of your
own, you could say:
export GHC_PACKAGE_PATH=$HOME/.my-ghc-packages.conf:
To check whether your GHC_PACKAGE_PATH setting is doing the
right thing, ghc-pkg list will list all the databases in use, in
the reverse order they are searched.
FILES
Both of these locations are changed for Debian. Upstream still keeps
these under /usr. Some programs may refer to that, but look in /var
instead.
/var/lib/ghc-6.12.1/package.conf
Global package.conf file.
/var/lib/ghc-6.12.1/package.conf.d/
Directory for library specific package.conf files. These are
added to the global registry.
SEE ALSO
ghc(1), runghc(1), hugs(1).
AUTHOR
This manual page was written by Kari Pahula <kaol@debian.org>, for the
Debian project (and may be used by others).
2010-01-27 ghc-pkg(1)