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
|