Install pkgx
packages to /usr/local
.
Caution
pkgm
is new software. Please report any issues you encounter and try it out
in parallel with your current package manager.
$ pkgm install node
# ^^ installs latest node to ~/.local. ie. you get ~/.local/bin/node
$ pkgm install [email protected]
# ^^ installs node^20.1 or switches out the installed node to 20.1
$ pkgm uninstall node
$ sudo pkgm install node
# ^^ installs node to /usr/local. ie. you get /usr/local/bin/node
$ pkgm shim node
# ^^ creates a shim for node at ~/.local/bin/node
# see the docs below for details about shims
$ pkgm list
# ^^ lists what’s installed
$ pkgm outdated
# ^^ lists outdated installations
$ pkgm update
# ^^ updates ~/.local packages to latest versions
$ sudo pkgm update
# ^^ updates /usr/local packages to latest versions
Tip
pkgm i
is an alias forpkgm install
pkgm rm
is an alias forpkgm uninstall
pkgm ls
is an alias forpkgm list
pkgm up
is an alias forpkgm update
Warning
You should probably sudo pkgm install
rather than install to ~/.local
.
This is because many other tools will not look in ~/.local
for packages
even if it’s in PATH
. Having said this—by all means—see how it goes!
Shims are files with a single line, eg
#!/usr/bin/env -S pkgx -q! node@22
.Thus using the shell to invoke the program via
pkgx
. You get all the benefits of an installed package—but only installed on-demand. Useful for self-healing setups, devops, containers and plenty more one-off or ephemeral tasks.Shims are pretty great—but have caveats. Some software might be surprised that a package is not fully “installed” which can lead to unexpected errors. In practice we have seen issues only rarely and for more complex package combinations.
brew install pkgxdev/made/pkgm || curl https://pkgx.sh | sh
brew rm pkgm || sudo rm /usr/local/bin/pkgm
- Packages are installed via
pkgx
to~/.pkgx
- We then
sudo
hard-link them to/usr/local/pkgs
- We then symlink the hard-links to
/usr/local
- Blazingly fast
- Install specific versions of any pkg
- You install by executable name—thus you don’t have to do a search first
- Installed packages can be installed as
root
dev
-aware installations- Optional self-healing shims