Berapa banyak version manager yang bersarang di laptop kamu sekarang? Ada nvm buat Node.js, pyenv buat Python, rustup buat Rust, belum lagi tumpukan binary global yang cuma kamu pakai sekali enam bulan lalu terus terlupakan. Sistem operasi kamu perlahan berubah jadi tempat pembuangan sampah digital. PATH berantakan, disk space bocor, dan potensi konflik dependensi tinggal menunggu waktu buat meledak.
Kondisi ini bikin frustrasi. Di sinilah pkgx masuk dan menampar cara lama kita mengelola perkakas development.
Bukan sekadar package manager biasa, pkgx adalah single standalone binary berukuran cuma 4 MiB. Filosofinya sangat radikal tapi masuk akal: jalankan tool apa pun, versi berapa pun, di mana pun, tanpa perlu mengotori sistem global kamu.
Jalankan Tanpa Jejak: Konsep Ephemeral Execution
Bayangkan kamu cuma butuh Deno buat ngetes satu baris script, atau butuh Node.js versi 14 buat nge-debug codebase legacy warisan kantor yang belum sempat dimigrasi. Cara lama menuntut kamu buat install, setup environment, baru bisa jalan.
Dengan pkgx, kamu tinggal panggil binary yang kamu mau di depan nama aplikasinya. Begitu eksekusi selesai, sistem kamu tetap bersih.
bash$ deno command not found: deno $ pkgx deno Deno 2.1.4 > ^D $ deno command not found: deno
Sihirnya ada di cara kerja isolasinya. pkgx bakal narik paket yang dibutuhkan dan menyimpannya di direktori terisolasi ~/.pkgx. Tidak ada symlink liar ke /usr/bin, tidak ada PATH global yang diacak-acak. Begitu command selesai, sistem OS kamu tetap murni seperti semula.
Mau gonta-ganti versi runtime yang berbeda jauh? Bukan masalah. Cukup sematkan tag versi di belakangnya:
bash$ pkgx node@14 --version Node.js v14.21.3 $ pkgx python@2 --version Python 2.7.18
Selamat tinggal setup pyenv atau nvm yang ribet dan bikin shell startup kamu ngelag gara-gara kebanyakan script inisialisasi.
Cara Pasang Cepat: 4 MiB yang Siap Tempur
Ukurannya yang cuma 4 MiB bikin proses instalasinya nyaris instan di berbagai platform.
Buat pengguna macOS via Homebrew:
bashbrew install pkgx
Atau jalur direct script buat Unix/Linux:
bashcurl https://pkgx.sh | sh
Pengguna Windows 10+ juga sudah bisa mencicipi lewat PowerShell (meskipun ekosistem paketnya masih eksperimental dan terbatas untuk saat ini):
powershellirm https://pkgx.sh | iex
Bagi yang pakai macOS tapi anti-Homebrew, dokumentasi resminya menyediakan panduan manual di docs.pkgx.sh/installing-w/out-brew.
Matriks Kompatibilitas Sistem
pkgx dibangun dengan portabilitas tinggi. Berikut adalah batasan minimal environment yang didukung:
| Sistem Operasi | Persyaratan Minimal & Arsitektur | Keterangan |
|---|---|---|
| macOS | >= 11, 64-bit Intel & Apple Silicon | Native support penuh |
| Linux | glibc >= 2.28, x86_64 & arm64 | Membutuhkan libatomic.so.1, libdl.so.2, libm.so.6, libgcc_s.so.1, libpthread.so.0, libc.so.6, ld-linux-x86-64.so.2 |
| Windows | Windows 10+ | Dukungan native eksperimental (paket terbatas) |
| WSL2 | Lingkungan Linux WSL2 | Mendukung semua yang didukung Linux |
| Docker | Multi-arch Linux | Image resmi via pkgxdev/pkgx |
Di Docker, kamu bahkan bisa langsung mengeksekusi versi tertentu tanpa build step yang panjang:
bash$ docker run pkgxdev/pkgx node@21.1 --version v21.1.0
Atau embed langsung ke dalam workflow Dockerfile kamu:
dockerfileFROM pkgxdev/pkgx RUN pkgx deno@1.35 task start
Mau dipasang di base image standar seperti Ubuntu juga tinggal tarik via curl:
dockerfileFROM ubuntu RUN curl https://pkgx.sh | sh RUN pkgx python@3.10 -m http.server 8000
Level Lanjutan: Scripting Super-Power dan CI/CD Tanpa Sakit Kepala
Kekuatan sebenarnya dari pkgx bakal terasa waktu kamu masuk ke automation dan pipeline scripting.
Sering kali pipeline CI/CD gagal cuma gara-gara tool linter atau utility kecil belum terinstall di runner container. Dengan pkgx, integrasi di GitHub Actions jadi seringkas ini:
yaml- uses: pkgxdev/setup@v4 - run: pkgx shellcheck
Untuk platform CI lain seperti GitLab CI atau Jenkins, polanya tetap konsisten:
bashcurl https://pkgx.sh | sh pkgx shellcheck
Shebang Magic: Dependency On-The-Fly
Ini fitur yang bakal bikin workflow scripting kamu naik kelas. Kamu bisa mendefinisikan environment runtime langsung di dalam shebang script menggunakan sintaks #! /usr/bin/env -S pkgx.
Contohnya, kamu butuh script Python 3.12 yang harus bisa memanggil utility Git:
bash#! /usr/bin/env -S pkgx +git python@3.12 # python 3.12 runs the script and `git` is available during its execution
Python 3.12 bakal otomatis dieksekusi, dan binary git disuntikkan secara instan selama script berjalan tanpa perlu kamu install manual di OS host.
Kamu bahkan bisa mengombinasikannya dengan tool modern seperti uv untuk dependency resolver PyPI:
bash#! /usr/bin/env -S pkgx +python@3.11 uv run # /// script # dependencies = [ # "requests<3", # "rich", # ] # /// import requests from rich.pretty import pprint resp = requests.get( "https://peps.python.org/api/peps.json" ) data = resp.json() pprint([(k, v["title"]) for k, v in data.items()][:10])
Semua library di atas diunduh dan dijalankan secara terisolasi. Tidak ada pip install global yang bakal merusak library bawaan sistem kamu. Untuk ekosistem scripting yang lebih terstruktur, ada juga mash, package manager khusus script yang memanfaatkan penuh kapabilitas pkgx.
Anatomi Ekosistem: dev, pkgm, pkgo, dan Recursive Run
pkgx bukan cuma satu alat yang berdiri sendiri, tapi fondasi dari sebuah ekosistem perkakas modular.
1. dev: Virtual Environment Otomatis Berbasis Keyfiles
Bosan bolak-balik ngetik command inisialisasi environment? Tool pendamping bernama dev membaca keyfiles di direktori proyek kamu (seperti Cargo.toml buat Rust atau package.json buat Node.js) dan langsung menyiapkan toolchain yang sesuai saat kamu masuk ke folder tersebut.
bash$ cd my-rust-proj && ls Cargo.toml src/ my-rust-proj $ cargo build command not found: cargo my-rust-proj $ dev +rust +cargo my-rust-proj $ cargo build Compiling my-rust-proj v0.1.0
2. pkgm: Kalau Kamu Butuh Instalasi Tradisional
Kalau kamu memang butuh sebuah tool terpasang permanen di /usr/local, kamu bisa pakai pkgm. Tool ini ikut terpasang bersama pkgx dan menyediakan fitur pembuatan shims bagi kamu yang menyukai kemudahan akses command langsung.
bash$ pkgm shim git created shim: ~/.local/bin/git $ cat ~/.local/bin/git #! /usr/bin/env -S pkgx -q! git
3. pkgo: Jalan Pintas Setup Rumit
Beberapa software open source punya panduan instalasi yang panjang dan bikin pusing, contohnya Stable Diffusion WebUI. Di sini pkgo bertugas memangkas seluruh instruksi njelimet itu jadi satu baris eksekusi simpel berbasis pkgx.
4. Recursive Run: Lompat Lintas Ekosistem Bahasa
Kamu bisa mengeksekusi tool dari package runner ekosistem lain secara seamless lewat pkgx:
bashpkgx uvx cowsay "Run Python (PyPi) programs with `uvx`" # atau pipx pkgx bunx cowsay "Run JavaScript (NPM) programs tools with `bunx`" # atau `npx`
Eksplorasi CLI & Query Paket
Mau tahu apa saja yang bisa dijalankan? Kamu bisa cek katalog web di pkgx.dev/pkgs atau langsung interogasi CLI bawaannya:
bash$ pkgx -Q git # Cek apakah git tersedia dan tampilkan nama fully qualified project-nya $ pkgx -Q # Tampilkan seluruh daftar paket yang didukung $ pkgx -Q | grep git- # Filter ekstensi git apa saja yang disediakan oleh pkgx
Catatan Penting: Migrasi dari pkgx^1
Buat yang sempat pakai versi terdahulu (pkgx^1), arsitektur sekarang sudah dipecah agar binary intinya tetap ramping:
- Shellcode: Tidak ada lagi shellcode di core binary pkgx. Logika environment sekarang dipindah ke tool dev. Jalankan migrasi shell kamu dengan:
bash
pkgx pkgx^1 deintegrate pkgx dev integrate - Perubahan Syntax
env +foo: Sekarang gunakan formateval "$(pkgx +git)". Gunakanset -adanset +ajika butuh export environment variable secara menyeluruh. - Instalasi Permanen: Perintah
pkgx installsudah sepenuhnya dialihkan ke pkgm.
Cara Kontribusi ke Proyek
pkgx adalah open source murni yang dibangun dengan Rust. Kalau kamu mau berkontribusi, flow pengembangannya cukup straightforward:
- Gunakan dev untuk bootstrap environment Rust secara otomatis.
- Cek
pantry READMEkalau ingin menambahkan formula paket baru. - Klon repositori utamanya, buka codebase, dan jalankan
cargo build. Area filehydrate.rsadalah fokus utama optimasi performa saat ini.
Sebelum submit Pull Request, pastikan lolos validasi linting lokal:
bashcargo fmt --all --check cargo clippy --all-features pkgx npx markdownlint --config .github/markdownlint.yml --fix .
Diskusi teknis dan troubleshooting aktif berjalan di server Discord serta GitHub Discussions komunitas mereka.
Keputusan Akhir: Layakkah Masuk Workflow Harian?
Kalau kamu developer yang sering berpindah-pindah repo dengan tech stack yang berbeda, atau engineer yang alergi melihat laptop penuh dengan sampah dependensi usang, pkgx adalah upgrade workflow yang nyata.
Ia membuktikan bahwa manajemen dependensi modern tidak harus mengorbankan kebersihan sistem operasi kita. Cukup satu binary 4 MiB, dan kamu punya akses ke seluruh ekosistem tooling modern tanpa beban.
Referensi:
- Repository Resmi:
https://github.com/pkgxdev/pkgx
