ghc-pkg
Section: User Commands (1)
Updated: 2010-01-27
Page Index
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/package.conf
-
Global package.conf file.
- /var/lib/ghc/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).