A cross-reference table of commands across different package managers, helping developers quickly find equivalent commands when switching between ecosystems.
View the comparison table:
- commands.csv - CSV for spreadsheets
- commands.md - Markdown table
This repository provides:
- Cross-reference table of package manager commands
- Structured data in JSON format for programmatic use
- Manpage archives for reference
Currently includes 61 package managers:
- JavaScript
- npm
- yarn
- pnpm
- bun
- deno
- Python
- pip
- uv
- poetry
- pipenv
- pdm
- hatch
- Rust
- cargo
- rustup
- Ruby
- gem
- bundler
- rbenv
- PHP
- composer
- Go
- go
- Java
- maven
- gradle
- Clojure
- leiningen
- .NET
- dotnet
- nuget
- Haskell
- cabal
- stack
- Elixir
- mix
- Erlang
- rebar3
- Dart
- pub
- OCaml
- opam
- Perl
- cpan
- cpanm
- Lua
- luarocks
- C/C++
- conan
- Containers
- docker
- podman
- Kubernetes
- helm
- System
- apk
- apt
- brew
- cards
- conda
- dnf
- emerge
- eopkg
- mamba
- nix
- pacman
- pixi
- pkg
- pkgcon
- pkgtools
- ports
- slackpkg
- slapt-get
- smart
- snap
- urpmi
- xbps
- yum
- zypper
- Infrastructure
- ansible-galaxy
- terraform
"Package" vs "Module" vs "Crate" vs "Gem"
- npm/yarn/pnpm: "package"
- Python: "package" or "module"
- Rust: "crate"
- Ruby: "gem"
- Go: "module" or "package"
- Docker: "image" or "container"
"Install" Semantics
- npm/yarn/pnpm:
installwithout arguments installs from lockfile; with package name adds new dependency - pip: Always requires package name
- cargo install: Installs binary executables globally; use
cargo addfor adding dependencies - go install: Installs binaries; use
go getto add dependencies - bundler:
bundle installinstalls from Gemfile; usebundle addto add new gems - docker:
pulldownloads images;runcreates and starts containers
Global Installation
- npm:
-gor--globalflag - yarn:
yarn global add - pnpm:
-gflag - pip:
--userflag (or system-wide with sudo) - cargo:
cargo installis always global - gem: Global by default
- brew: Global by default (system-wide)
pip search is disabled
pip searchwas disabled in 2021 due to abuse- Use https://pypi.org or third-party tools instead
cargo install vs cargo add
cargo installis for installing binary executables globallycargo add(newer) is for adding dependencies to your project
npm ci vs npm install
npm ci(clean install) is faster, stricter, and preferred for CI/CD- Deletes
node_modulesbefore installing - Requires
package-lock.json
bundler vs gem
gemis the low-level package managerbundlermanages application dependencies and ensures consistency- Always use
bundle execto run commands with correct gem versions
go get behavior changed
- In Go 1.18+,
go getno longer builds/installs packages - Use
go installfor installing binaries - Use
go getonly for adding dependencies
docker run vs docker exec
docker runcreates a NEW container from an imagedocker execruns a command in an EXISTING container
yarn 1.x vs yarn 2+ (Berry)
- Yarn 2+ is a complete rewrite with different behavior
- Uses Plug'n'Play (PnP) by default instead of
node_modules - Check version with
yarn --version
Some tools manage language versions, not packages:
- rustup: Manages Rust toolchains (compiler versions)
- rbenv: Manages Ruby versions
- nvm: Manages Node.js versions
- pyenv: Manages Python versions
These are included because they use similar command patterns.
brew
- macOS and Linux only
- Installing "casks" (GUI apps) uses different commands:
brew install --cask [app]
docker
- Requires Docker daemon to be running
- Platform-specific (Linux containers on macOS run in VM)
To add a new package manager:
- Add manpage:
<manager> --help > manpages/<manager>.txt - Create JSON file:
data/managers/<manager>.json - Regenerate tables:
ruby scripts/combine-json.rb ruby scripts/generate-table.rb > commands.md ruby scripts/generate-csv.rb > commands.csv
- Update README.md with the new count
package-manager-commands/
├── README.md # This file
├── commands.md # Full comparison table (generated)
├── commands.csv # CSV export (generated)
├── data/
│ ├── package-managers.json # All package managers in one file
│ └── managers/ # Individual JSON files (61 total)
├── manpages/ # Help output archives (50+ files)
└── scripts/
├── combine-json.rb # Combine individual JSON files
├── generate-table.rb # Generate commands.md
├── generate-csv.rb # Generate commands.csv
└── fetch-via-docker.rb # Fetch manpages via Docker
Individual package manager files:
{
"name": "npm",
"ecosystem": "JavaScript",
"description": "Node Package Manager",
"commands": {
"install": "npm install [package]",
"uninstall": "npm uninstall [package]",
...
}
}- Data (JSON files, generated tables): CC0 1.0 Universal (Public Domain)
- Code (Ruby scripts): MIT License
- Manpages: Subject to the licenses of their respective projects