.screens | ||
pkg_manager | ||
.gitignore | ||
go.mod | ||
go.sum | ||
main.go | ||
Makefile | ||
README.md |
Universal Package Manager (UPM)
Note: This project is in early development. It works well for xbps and apt, but may have issues with other package managers. Please report any bugs by creating an issue, and contributions via PRs are welcome!
A unified command-line interface for managing packages across different Linux distributions. UPM provides a consistent experience for package management operations regardless of the underlying package manager (apt, dnf, pacman, etc.).
✨ Features
- 🔄 Universal syntax across package managers
- 📦 Support for multiple package managers:
- apt (Debian/Ubuntu)
- dnf/yum (RHEL/Fedora)
- pacman (Arch Linux)
- zypper (openSUSE)
- apk (Alpine Linux)
- xbps (Void Linux)
- emerge (Gentoo)
- 🚀 Support for universal package managers:
- snap
- flatpak
- 🔍 Version-specific package installation
- 📋 Repository management
- 🧹 Cache cleaning
- 🔗 Dependency handling
📥 Installation
Prerequisites
- Go 1.22 or newer
- Git
Building from Source
-
Clone the repository and enter the directory:
git clone https://git.supernets.org/e/upm-universalpackagemanager cd upm-universalpackagemanager
-
Install dependencies:
go mod download
-
Build the binary:
go build -o upm
-
(Optional) Install system-wide:
sudo mv upm /usr/local/bin/
🚀 Usage
Basic Commands
Operation | Command | Example |
---|---|---|
Install packages | upm install <package> |
upm install nginx |
Install specific version | upm install <package>@<version> |
upm install nginx@1.18.0 |
Remove packages | upm remove <package> |
upm remove nginx |
Search for packages | upm search <query> |
upm search nginx |
Search for source code | upm source <query> |
upm source nginx |
Update package lists | upm update |
|
Upgrade installed packages | upm upgrade |
|
List installed packages | upm list |
|
Show package information | upm info <package> |
upm info nginx |
Repository Management
Operation | Command | Example |
---|---|---|
Add a repository | upm repo add <url> |
upm repo add https://repo.example.com |
Remove a repository | upm repo remove <name> |
upm repo remove example-repo |
List repositories | upm repo list |
Maintenance
Operation | Command |
---|---|
Clean package cache | upm clean |
Remove unused dependencies | upm autoremove |
Dependency Management
Operation | Command | Example |
---|---|---|
Check dependencies | upm check-deps |
|
Check dependencies for specific package | upm check-deps <package> |
upm check-deps nginx |
Show package dependencies | upm show-deps <package> |
upm show-deps nginx |
Using Universal Package Managers
Operation | Command | Example |
---|---|---|
Install using snap | upm -u snap install <package> |
upm -u snap install firefox |
Install using flatpak | upm -u flatpak install <package> |
upm -u flatpak install org.mozilla.firefox |
Source Code Search
Search for source code repositories:
upm source nginx
This command searches GitHub for source code repositories related to the specified package.
📁 Project Structure
upm-universalpackagemanager/
├── main.go # Main application entry point
├── pkg_manager/
│ └── pkg_manager.go # Core package manager implementation
├── go.mod
├── go.sum
└── README.md
📚 Dependencies
Required Go packages:
github.com/fatih/color
- For colorized terminal outputgithub.com/briandowns/spinner
- For progress indicators
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
👏 Acknowledgments
Supernets, PP4L, DigitalGangster
💬 Support
If you encounter any issues or have questions, please file an issue on the git.supernets.org repository.