xpm
모든 유닉스 계열 배포판(맥OS 포함)용 통합 패키지 매니저. 또한 실험적인 윈도우 지원도 제공합니다.
모든 유닉스 계열 배포판용 통합 패키지 매니저 (이제 루스트로!)
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
A universal package manager for any unix-like distro including macOS. Rewritten in Rust for maximum performance and portability.
XPM is a package manager for unix systems like Linux, BSD, MacOS, etc. It can be a wrapper for native package managers or a package manager itself by using its way of installing packages. For the list of packages available, see xpm-popular.
These systems get full native package manager integration with intelligent search, metadata extraction, and clean formatted output.
For other systems, XPM provides script-based installation through the xpm-popular repository:
Linux Distributions:
macOS → Homebrew (brew) - via scripts
curl -fsSL install.cat/verseles/xpm
# Clone the repository
git clone https://github.com/verseles/xpm.git
cd xpm
# Build
cargo build --release
# Install to /usr/local/bin
sudo cp target/release/xpm /usr/local/bin/
cargo install --git https://github.com/verseles/xpm.git
# Check your system
xpm check
# Add the default repository (pulls from xpm-popular)
xpm refresh
# Search for packages (searches XPM + native PM)
xpm search neovim
# Install a package
xpm install neovim
# Remove a package
xpm remove neovim
| Command | Alias | Description |
|---|---|---|
search |
s |
Search for packages (XPM + native PM) |
install |
i |
Install a package |
remove |
rm |
Remove a package |
refresh |
- | Refresh package database |
upgrade |
- | Upgrade installed packages (coming soon) |
get |
- | Download a file |
file |
- | File operations (copy, move, delete, bin) |
repo |
- | Repository management |
checksum |
hash |
Compute file checksums |
shortcut |
- | Create desktop shortcuts |
log |
- | Show installed packages |
check |
- | Check system configuration |
make |
- | Create a package (coming soon) |
# Basic search
xpm search vim
# Multiple terms
xpm search text editor
# Limit results
xpm search rust --limit 10
# JSON output (for scripts)
xpm search go --json
XPM is built as a Rust workspace with two crates:
Packages are bash scripts with metadata headers:
#!/bin/bash
readonly xNAME="my-package"
readonly xVERSION="1.0.0"
readonly xTITLE="My Package"
readonly xDESC="Description of my package"
readonly xURL="https://example.com"
xARCHS=(x86_64 aarch64)
xDEFAULT=(any)
install_any() {
# Installation logic
echo "Installing..."
}
remove_any() {
# Removal logic
echo "Removing..."
}
validate() {
# Validation - return 0 if installed correctly
which my-package >/dev/null
}
Save as my-package/my-package.bash in your repository.
my-xpm-repo/
├── package1/
│ └── package1.bash
├── package2/
│ └── package2.bash
└── ...
# Development build
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test
# Run with verbose output
cargo run -- --verbose check
# Pre-commit checks (format + lint + test)
make precommit
Test xpm on different distributions using Podman:
# Build and test on Ubuntu
make test-ubuntu
# Build and test on Arch Linux
make test-arch
# Build and test all distros
make docker-test
# Clean container images
make docker-clean
Contributions are welcome! Please:
cargo test and cargo clippyBSD-4-Clause
Built with ❤️ by Verseles