# Universal Package Manager (UPM) ![UPM Example Screenshot](./.screens/example.png) > **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 1. Clone the repository and enter the directory: ```bash git clone https://git.supernets.org/e/upm-universalpackagemanager cd upm-universalpackagemanager ``` 2. Install dependencies: ```bash go mod download ``` 3. Build the binary: ```bash go build -o upm ``` 4. (Optional) Install system-wide: ```bash sudo mv upm /usr/local/bin/ ``` ## ๐Ÿš€ Usage ### Basic Commands | Operation | Command | Example | |-----------|---------|---------| | Install packages | `upm install ` | `upm install nginx` | | Install specific version | `upm install @` | `upm install nginx@1.18.0` | | Remove packages | `upm remove ` | `upm remove nginx` | | Search for packages | `upm search ` | `upm search nginx` | | Search for source code | `upm source ` | `upm source nginx` | | Update package lists | `upm update` | | | Upgrade installed packages | `upm upgrade` | | | List installed packages | `upm list` | | | Show package information | `upm info ` | `upm info nginx` | ### Repository Management | Operation | Command | Example | |-----------|---------|---------| | Add a repository | `upm repo add ` | `upm repo add https://repo.example.com` | | Remove a repository | `upm repo remove ` | `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 ` | `upm check-deps nginx` | | Show package dependencies | `upm show-deps ` | `upm show-deps nginx` | ### Using Universal Package Managers | Operation | Command | Example | |-----------|---------|---------| | Install using snap | `upm -u snap install ` | `upm -u snap install firefox` | | Install using flatpak | `upm -u flatpak install ` | `upm -u flatpak install org.mozilla.firefox` | ### Source Code Search Search for source code repositories: ```bash 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 output - `github.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](https://git.supernets.org/e/upm-universalpackagemanager).