The library(prolog_pack) provides the SWI-Prolog package manager. This
library lets you inspect installed packages, install packages, remove
packages, etc. It is complemented by the built-in attach_packs/0 that
makes installed packages available as libraries.
- See also
- - Installed packages can be inspected using
- To be done
- - Version logic
- - Find and resolve conflicts
- - Upgrade git packages
- - Validate git packages
- - Test packages: run tests from directory `test'.
- pack_list_installed is det
- List currently installed packages. Unlike pack_list/1, only
locally installed packages are displayed and no connection is
made to the internet.
- See also
- - Use pack_list/1 to find packages.
- Print more detailed information about Pack.
- pack_search(+Query) is det
- pack_list(+Query) is det
- Query package server and installed packages and display results.
Query is matches case-insensitively against the name and title
of known and installed packages. For each matching package, a
single line is displayed that provides:
- Installation status
- p: package, not installed
- i: installed package; up-to-date with public version
- U: installed package; can be upgraded
- A: installed package; newer than publically available
- l: installed package; not on server
?- pack_list(''). lists all packages.
The predicates pack_list/1 and pack_search/1 are synonyms. Both
contact the package server at http://www.swi-prolog.org to find
- See also
- - pack_list_installed/0 to list installed packages without
contacting the server.
- pack_install(+Spec:atom) is det
- Install a package. Spec is one of
- Archive file name
- HTTP URL of an archive file name. This URL may contain a
star (*) for the version. In this case pack_install asks
for the directory content and selects the latest version.
- GIT URL (not well supported yet)
- A local directory name given as
- A package name. This queries the package repository
After resolving the type of package, pack_install/2 is used to
do the actual installation.
- pack_install(+Name, +Options) is det
- Install package Name. Processes the options below. Default
options as would be used by pack_install/1 are used to complete
the provided Options.
- Source for downloading the package
- Directory into which to install the package
- Use default answer without asking the user if there
is a default action.
true (default false), suppress informational progress
false), upgrade package if it is already
false unless URL ends with =.git=),
assume the URL is a GIT repository.
Non-interactive installation can be established using the option
interactive(false). It is adviced to install from a particular
trusted URL instead of the plain pack name for unattented
- pack_url_file(+URL, -File) is det
- True if File is a unique id for the referenced pack and version.
Normally, that is simply the base name, but GitHub archives
destroy this picture. Needed by the pack manager.
- ssl_verify(+SSL, +ProblemCert, +AllCerts, +FirstCert, +Error)
- Currently we accept all certificates. We organise our own
security using SHA1 signatures, so we do not care about the
source of the data.
- pack_rebuild(+Pack) is det
- Rebuilt possible foreign components of Pack.
- pack_rebuild is det
- Rebuild foreign components of all packages.
- environment(-Name, -Value) is nondet[multifile]
- Hook to define the environment for building packs. This
Multifile hook extends the process environment for building
foreign extensions. A value provided by this hook overrules
defaults provided by def_environment/2. In addition to changing
the environment, this may be used to pass additional values to
the environment, as in:
prolog_pack:environment('USER', User) :-
|Name||- is an atom denoting a valid variable name|
|Value||- is either an atom or number representing the
value of the variable.|
- pack_upgrade(+Pack) is semidet
- Try to upgrade the package Pack.
- To be done
- - Update dependencies when updating a pack from git?
- pack_remove(+Name) is det
- Remove the indicated package.
- pack_property(?Pack, ?Property) is nondet
- True when Property is a property of an installed Pack. This
interface is intended for programs that wish to interact with the
package manager. Defined properties are:
- Directory into which the package is installed
- Installed version
- Full title of the package
- Registered author
- Official download URL
README file (if present)
TODO file (if present)
- atom_version(?Atom, ?Version)
- Translate between atomic version representation and term
representation. The term representation is a list of version
components as integers and can be compared using
- pack_attach(+Dir, +Options) is det
- Attach a single package in Dir. The Dir is expected to contain
pack.pl and a
prolog directory. Options processed:
- What to do if the same package is already installed in a different
directory. Action is one of
- Warn and ignore the package
- Silently ignore the package
- Unregister the existing and insert the new package
- Determines the order of searching package library directories.
last, alternative is
- See also
- - attach_packs/2 to attach multiple packs from a directory.
The following predicates are exported, but not or incorrectly documented.