pkgx:任何软件均可直接运行无需安装的工具库


pkgx是一个速度极快、独立、跨平台的二进制文件,可以运行任何东西,这是来自brew创建者的项目

$ deno
command not found: deno

$ env +deno^1.35
added ~/.pkgx/deno.land/v1.36.1

$ deno --version
deno 1.36.1


好处:对系统零影响
pkgx不安装软件包,而是缓存它们。就像 npx 缓存和执行节点软件包一样,pkgx 也会缓存其他一切(包括 npx)。

$ pkgx rustc --version
rustc 1.72.1

$ which rustc
command not found: rustc
# ^^实际上rustc并没有安装到呢的linux系统中

pkgx 的工作原理
pkgx 所做的一切,最初都是为了创建软件包环境。然后,它要么在这些环境中运行命令,要么将这些环境注入到正在运行的 shell 中。

像这样的命令:
pkgx node start

事实上隐含的是:
pkgx +node node start

更准确地说†实际上是:
pkgx +nodejs.org node start

+pkg语法创建然后在其中运行的包环境node start。
事实上,如果您调用pkgxraw,您可以看到该 env:

$ pkgx +node
SSL_CERT_FILE=~/.pkgx/curl.se/ca-certs/v2023.5.30/ssl/cert.pem
PATH=~/.pkgx/unicode.org/v71.1.0/bin:~/.pkgx/unicode.org/v71.1.0/sbin:~/.pkgx/openssl.org/v1.1.1u/bin:~/.pkgx/nodejs.org/v20.5.0/bin
MANPATH=~/.pkgx/unicode.org/v71.1.0/share/man:~/.pkgx/zlib.net/v1.2.13/share/man:~/.pkgx/nodejs.org/v20.5.0/share/man:/usr/share/man
PKG_CONFIG_PATH=~/.pkgx/unicode.org/v71.1.0/lib/pkgconfig:~/.pkgx/openssl.org/v1.1.1u/lib/pkgconfig:~/.pkgx/zlib.net/v1.2.13/lib/pkgconfig
LIBRARY_PATH=~/.pkgx/unicode.org/v71.1.0/lib:~/.pkgx/openssl.org/v1.1.1u/lib:~/.pkgx/zlib.net/v1.2.13/lib
LD_LIBRARY_PATH=~/.pkgx/unicode.org/v71.1.0/lib:~/.pkgx/openssl.org/v1.1.1u/lib:~/.pkgx/zlib.net/v1.2.13/lib
CPATH=~/.pkgx/unicode.org/v71.1.0/include:~/.pkgx/openssl.org/v1.1.1u/include:~/.pkgx/zlib.net/v1.2.13/include:~/.pkgx/nodejs.org/v20.5.0/include
XDG_DATA_DIRS=~/.pkgx/unicode.org/v71.1.0/share:~/.pkgx/zlib.net/v1.2.13/share:~/.pkgx/nodejs.org/v20.5.0/share
DYLD_FALLBACK_LIBRARY_PATH=~/.pkgx/unicode.org/v71.1.0/lib:~/.pkgx/openssl.org/v1.1.1u/lib:~/.pkgx/zlib.net/v1.2.13/lib