7.3 Package Paths and Database

► |  | Package Management in Racket

1 | Getting Started with Packages
2 | Package Concepts
3 | Using raco pkg
4 | Package Metadata
5 | Source, Binary, and Built Packages
6 | Developing Packages with Git
7 | Package APIs
8 | Package Catalog Protocol
9 | PLane T Compatibility
10 | FAQ
11 | Future Plans
12 | How Package Installation and Distribution Works

▼ | 7 | Package APIs

7.1 | Functions for raco pkg
7.2 | Package Management Functions
7.3 | Package Paths and Database
7.4 | Package Source Parsing
7.5 | Package Catalog Database
7.6 | Package Directories Catalog
7.7 | Package Management Environment Variables

On this page:

pkg-info
sc-pkg-info
pkg-info/ alt
sc-pkg-info/ alt
path->pkg
path->pkg+ subpath
path->pkg+ subpath+ scope
path->pkg+ subpath+ collect
path->pkg+ subpath+ collect+ scope
get-pkgs-dir
read-pkgs-db
read-pkg-file-hash

8.18
top contents ← prev up next →

### 7.3 Package Paths and Database🔗ℹ

(require pkg/path) | package: base

The pkg/path library provides utilities for working with package paths and installed-package databases.

> > struct
> > (struct |  | pkg-info (orig-pkg checksum auto?)
> #:prefab)
> | orig-pkg |  | : |  |
> (or/c (list/c 'catalog string?)
> (list/c 'catalog string? string?)
> (list/c 'url string?)
> (list/c 'git string?)
> (list/c 'file string?)
> (list/c 'dir string?)
> (list/c 'link string?)
> (list/c 'static-link string?)
> (list/c 'clone string? string?))
> checksum : (or/c #f string?)
> auto? : boolean?

A structure type that is used to report installed-package information.

The orig-pkg field describes the source of the package as installed, where 'catalog refers to a package that was installed by consulting a catalog with a package name, and so on. The two-element 'catalog form records a URL for a Git or GitHub package source when the catalog reported such a source, and the URL is used for operations that adjust 'clone-form installations.

The 'git form is used for URLs that start git+https:// or git+http:// or where the 'git-url type was specified for parsing the URL. Other Git references (including ones that start git://) use 'url.

Changed in version 6.1.1.5 of package base: Added 'clone and two-level 'catalog variants for orig-pkg.
Changed in version 8.0.0.13: Added 'git.

> struct (struct sc-pkg-info pkg-info ())

A structure subtype that represents a package that is installed as single-collection.

> struct (struct pkg-info/alt pkg-info (dir-name))
> dir-name : string?
> struct (struct sc-pkg-info/alt sc-pkg-info (dir-name))
> dir-name : string?

Structure subtypes that are used when the installation directory for a package does not match the package name, but is instead dir-name. The directory name always includes a + (which is disallowed in a package name).

> procedure (path->pkg path [#:cache cache]) → (or/c string? #f)
> path : path-string?
> cache : (or/c #f (and/c hash? (not/c immutable?))) = #f

Returns the installed package containing path, if any.

If cache is not #f, then it is consulted and modified to cache installed-package information across calls to path->pkg (with the assumption that the set of installed packages does not change across calls that receive the same cache).

> procedure (path->pkg+subpath path [#:cache cache])
> | → |  |
> (or/c string? #f) |  | (or/c path? 'same #f)
> path : path-string?
> cache : (or/c #f (and/c hash? (not/c immutable?))) = #f

Like path->pkg, but returns a second value that represents the remainder of path within the package’s directory.

> > procedure
> > (path->pkg+subpath+scope |  | path |
> > | [ | #:cache cache]) |
> | → |  |
> (or/c string? #f)
> (or/c path? 'same #f)
> (or/c 'installation 'user (and/c path? complete-path?) #f)
> path : path-string?
> cache : (or/c #f (and/c hash? (not/c immutable?))) = #f

Like path->pkg+subpath, but returns a third value for the package’s installation scope.

> > procedure
> > (path->pkg+subpath+collect |  | path |
> > | [ | #:cache cache]) |
> | → |  |
> (or/c string? #f)
> (or/c path? 'same #f)
> (or/c string? #f)
> path : path-string?
> cache : (or/c #f (and/c hash? (not/c immutable?))) = #f

Like path->pkg+subpath, but returns a third value for a collection name if the package is a single-collection package, #f otherwise.

> > procedure
> > (path->pkg+subpath+collect+scope |  | path |
> > | [ | #:cache cache]) |
> | → |  |
> (or/c string? #f)
> (or/c path? 'same #f)
> (or/c string? #f)
> (or/c 'installation 'user (and/c path? complete-path?) #f)
> path : path-string?
> cache : (or/c #f (and/c hash? (not/c immutable?))) = #f

Like path->pkg+subpath+collect, but returns a fourth value for the package’s installation scope.

> procedure (get-pkgs-dir scope [user-version]) → path?
> | scope |  | : |  |
> (or/c 'installation 'user
> (and/c path? complete-path?))
> user-version : string? = (version)

Returns the path of the directory that holds installed packages in the given scope. The user-version argument is used to generate the result for 'user scope.

> procedure (read-pkgs-db scope) → (hash/c string? pkg-info?)
> | scope |  | : |  |
> (or/c 'installation 'user
> (and/c path? complete-path?))

Returns a hash table representing the currently installed packages in the specified scope.

> procedure (read-pkg-file-hash path) → hash?
> path : path?

Reads a hash table from path, logging any errors and returning an empty hash table if path does not exist or if an error is encountered.
top contents ← prev up next →