Getting Started
With pkgx it couldn’t be simpler to run anything from the Open Source
ecosystem:
$ pkgx openai --version
openai 1.59.6Search
Generally you don’t need to search since you already know what you want to run, so just type it! Sometimes though you want to browse.
We have a web based package listing atpkgx.dev/pkgs/. This is the most thorough resource at this time.
And from the CLI you can use query mode:
$ pkgx -Q git
# ^^ can we run git?
$ pkgx -Q | grep git-
# ^^ search for all git extensions
$ $ pkgx -Q
# ^^ list every program pkgx can runRun Any Version
$ pkgx postgres@12 --version
postgres (PostgreSQL) 12.14SemVer
Generally you probably want @ syntax, but if you need more specificity we
fully support SemVer:
Running the Latest Version
pkgx foo runs the latest “foo” that is installed.
If you want to ensure the latest version of “foo” is installed, usepkgx mash upgrade foo.
Adding Additional Packages to the Execution Environment
It can be useful to run a program with additional packages in the environment.
Here +pkg syntax added OpenSSL to Cargo’s environment. Thus the build will see
the OpenSSL headers and libraries.
Disambiguation
In some cases pkgx foo may be ambiguous because multiple packages providefoo.
In such cases pkgx will error and ask you be more specific by using
fully-qualified-names:
In general it's a good idea to specify fully qualified names in scripts, etc. since you want these to work forever.
Running System Commands
It can be useful to run system commands with a package environment injected. To do this either specify the full path of the system executable:
Or separate your commands with --:
If you only specified make rather than /usr/bin/make or separating with-- make then pkgx would install GNU make for you and use that.
Dumping the Environment
If you don’t specify anything to run, pkgx will install any +pkgs and then
dump the environment:
This can be useful in scripts or for adding tools to your shell:
For this mode we can also output JSON: pkgx +gum --json.
Quietening Output
Note that this only effects pkgx not the tools you run with pkgx.
Ensuring Packages
In some cases you don’t want to use a pkgx package if the user has that
package already installed to their system. For these cases we provide anensure script:
“Virtual Environments”
You can set PKGX_DIR to have pkgx install packages there. This can be useful
for creating “virtual environments” for various usages.
Other Common Needs
pkgx is not a package manager. Thus the command itself doesn’t typically offer
such operations you may expect, however the way pkgx works is simple and
standardized so we offer some mash scripts to help.
Longer term we will make a tool pkgq to help with these operations.
Listing Outdated Packages
Upgrading Packages
pkgx foo executes the latest version of foo that is downloaded. To ensure
you have (any) newer versions installed use this command:
You can specify args to upgrade only specific packages.
Pruning Older Versions of Packages
The pkgx download cache can get large over time. To prune older versions:
This may delete versions that you use—if so—this is fine. pkgx will just
reinstall them next time you need them.
Listing Available Versions for a Package
ie. what versions could be run by pkgx:
Listing What is Downloaded
Last updated