ghc-pkg (1) - Linux Man Pages
ghc-pkg: GHC Haskell Cabal package manager
ghc-pkg - GHC Haskell Cabal package manager
SYNOPSISghc-pkg action [OPTION]...
DESCRIPTIONA 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.
- 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.
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
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 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 the registered description for every package. This is like
'*', expect that it is intended to be used by tools that parse the results, rather than humans.
- 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.
OPTIONSWhen asked to modify a database (register,
Commands that query the package database
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:
To check whether your
setting is doing the right thing,
will list all the databases in use, in the reverse order they are
Both of these locations are changed for Debian. Upstream still keeps
Some programs may refer to that, but look in
This manual page was written by Kari Pahula <kaol [at] debian.org>, for the
Debian project (and may be used by others).
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:
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.