π Web Page | π» Source Code | π Releases
π¦ ipm - Integrated Package Manager
A cross-platform tool that unifies CLI for various package managers, simplifies installation, updates, and removal of packages by standardizing commands.
π Table of Contents
- π¦ ipm - Integrated Package Manager
- π Table of Contents
- π About
- β¨ Key Features
- π¦ Supported Package Managers
- π οΈ Installation
- π Usage
- βοΈ Configuration
- π Important Documents
- π Acknowledgements
- π License
π About
ipm
- Integrated Package Manager is a powerful, cross-platform tool designed
to unify the command-line interface (CLI) commands for various package managers.
It acts as a universal frontend, working on top of other package managers to
provide a seamless and consistent experience for managing software packages
across different operating systems.
In todayβs diverse development environments, developers, software engineers, and system engineers often face the challenge of dealing with multiple package managers, each with its own set of commands and interfaces. This can lead to inefficiencies, errors, and a steep learning curve, especially when switching between different platforms.
ipm
aims to solve these issues by offering a single, unified CLI that
abstracts away the complexities of individual package managers. Whether youβre
working on Windows, Linux, or macOS, ipm
provides a consistent and intuitive
interface for installing, updating, and removing software packages. By
standardizing package management commands, ipm
simplifies the workflow,
reduces the potential for errors, and enhances productivity.
$ ipm
Usage:
ipm [command]
Available Commands:
manager Manage package manager configurations
info Execute info command for apt
install Execute install command for apt
list Execute list command for apt
search Execute search command for apt
uninstall Execute uninstall command for apt
update Execute update command for apt
upgrade Execute upgrade command for apt
upgrade-all Execute upgrade-all command for apt
apk Run apk commands
apt Run apt commands
brew Run brew commands
choco Run choco commands
dnf Run dnf commands
emerge Run emerge commands
eopkg Run eopkg commands
npm Run npm commands
pip Run pip commands
pip3 Run pip3 commands
winget Run winget commands
yum Run yum commands
zypper Run zypper commands
Flags:
-h, --help help for ipm
Use "ipm [command] --help" for more information about a command.
β¨ Key Features
- Cross-Platform Compatibility: Supports multiple operating systems including Windows, Linux, and macOS.
- Unified Interface: Provides a single, consistent CLI interface for managing packages across different platforms.
- Efficient Package Management: Simplifies the installation, update, and removal of software packages.
- Customizable Configurations: Allows users to define custom commands and configurations for different package managers.
- Extensible: Easily extendable to support additional package managers and custom commands.
π¦ Supported Package Managers
Package Manager | Enabled (default) | Disabled (default) |
---|---|---|
apk |
β | β |
apt |
β | β |
brew |
β | β |
cards |
β | β |
choco |
β | β |
dnf |
β | β |
emerge |
β | β |
eopkg |
β | β |
flatpak |
β | β |
guix |
β | β |
nala |
β | β |
nix-env |
β | β |
npm |
β | β |
opkg |
β | β |
pacman |
β | β |
pip |
β | β |
pip3 |
β | β |
scoop |
β | β |
slackpkg |
β | β |
snap |
β | β |
winget |
β | β |
xbps |
β | β |
yum |
β | β |
zypper |
β | β |
π οΈ Installation
π¦ Pre-built Binaries
Pre-built binaries for various platforms are available in the releases section. Download the appropriate binary for your platform and add it to your systemβs PATH.
β¬οΈ Download the Binary
Navigate to the releases page and download the binary for your operating system.
π Move the Binary to a Directory
Move the downloaded binary to a directory of your choice.
π«΅ Add the Binary to PATH
Add the directory containing the binary to your systemβs PATH. This allows you
to run ipm
from any terminal session.
π§ Linux
# Add the directory to your PATH
echo 'export PATH=$PATH:/path/to/ipm' >> ~/.bashrc
source ~/.bashrc
π macOS
# Add the directory to your PATH
echo 'export PATH=$PATH:/path/to/ipm' >> ~/.bashrc
source ~/.bashrc
πͺ Windows
# Add the directory to your PATH
[System.Environment]::SetEnvironmentVariable(
"Path",
$env:Path + ";path\to\ipm",
[System.EnvironmentVariableTarget]::Machine
)
ποΈ Building from Source
To build ipm
from source, you need to have Go
installed on your system.
π Clone the Repository
git clone https://github.com/your-repo/ipm.git
cd ipm
π¨ Make Build
To build ipm
, you can use the provided build scripts.
π§ Linux (Shell Script)
- Open a terminal.
- Run the build script:
./scripts/build/build.sh
π macOS (Shell Script)
- Open a terminal.
- Run the build script:
./scripts/build/build.sh
πͺ Windows (PowerShell Script)
- Open a PowerShell terminal.
- Run the build script:
.\scripts\build\build.ps1
.
These scripts will build the binaries for the multiple platforms and create
archives (ZIP for Windows and TAR.GZ for other platforms) in the dist/release
directory.
π³ Dockerfiles
Dockerfiles are provided to build Docker images for ipm
. These Dockerfiles are
located in the dockerfiles
directory.
ποΈ Building Docker Images
To build a Docker image for ipm
, run the following command from project root:
docker build -t ipm-<package-manager-name>:latest -f dockerfiles/<package-manager-name>/Dockerfile .
π Running Docker Container
To run ipm
Docker container:
docker run --rm -it ipm-<package-manager-name>:latest /bin/sh
π Usage
π Default Package Manager (auto-detected)
π Basic Commands
π List Installed Packages
ipm list
π Search for a Package
ipm search <package-name>
π Check Information about a Package
ipm info <package-name>
π₯ Install a Package
ipm install <package-name>
π Update Index of the Package Manager
ipm update
β¬οΈ Upgrade a Package
ipm upgrade <package-name>
β¬οΈ Upgrade all Packages
ipm upgrade-all
ποΈ Remove a package
ipm uninstall <package-name>
π‘ Example
To install the jq
package:
ipm install jq
π οΈ Custom Package Manager
π Basic Commands
π List Installed Packages
ipm <package-manager> list
π Search for a Package
ipm <package-manager> search <package-name>
π Check Information about a Package
ipm <package-manager> info <package-name>
π₯ Install a Package
ipm <package-manager> install <package-name>
π Update Index of the Package Manager
ipm <package-manager> update
β¬οΈ Upgrade a Package
ipm <package-manager> upgrade <package-name>
β¬οΈ Upgrade all Packages
ipm <package-manager> upgrade-all
ποΈ Remove a package
ipm <package-manager> uninstall <package-name>
π‘ Example
To install the fast-json-stringify
package using npm
:
ipm npm install fast-json-stringify
βοΈ Configuration
ipm
uses a JSON configuration file to define custom commands and settings for
different package managers. The configuration file is located in the config
directory.
πͺ Example Configuration
{
"enabled": true,
"commands": {
"info": "apt-cache show ",
"install": "apt-get install -y ",
"list": "dpkg --list",
"search": "apt-cache search ",
"uninstall": "apt-get remove -y ",
"update": "apt-get update",
"upgrade": "apt-get install --only-upgrade ",
"upgrade-all": "apt-get upgrade"
}
}
π Important Documents
- Changelog: Changelog of all notable changes.
- Code of Conduct: Code of Conduct for contributors.
- Commit Message Instructions: Commit message guidelines for contributors and Copilot.
- Contribution Guidelines: How to contribute to this project.
- License: License text.
- Pull Request Description Instructions: Pull request guidelines for contributors and Copilot.
- Roadmap: High-level strategic plan, long-term goals, milestones, and overall project vision.
- Security Policy: Security policy and reporting instructions.
- Todo: Day-to-day task tracking and immediate execution.
π Acknowledgements
I would like to extend my heartfelt thanks to all the developers and contributors whose work has made this project possible. Your dedication and contributions to the open-source community are invaluable, and I am grateful for the tools, libraries, and frameworks that you have created and maintained.
π Special Thanks
I would like to specifically acknowledge the developers of the following tools, frameworks and dependencies which are used in this project:
- Go Language Team: For providing a powerful and efficient programming language that forms the backbone of this project.
- Package Manager Developers: For creating and maintaining the various
package managers that
ipm
integrates with, includingapt
,yum
,brew
,choco
,npm
,pip
, and many others. - Library Authors: For the numerous libraries and tools that have been
utilized in this project, enhancing its functionality and performance,
specially:
- github.com/spf13/cobra: For creating a library for building powerful modern CLI applications.
- github.com/xeipuuv/gojsonschema: For providing a library to validate JSON schemas.
- github.com/inconshreveable/mousetrap: For helping detect when a Go program is run from a Windows shortcut.
- github.com/spf13/pflag: For providing a POSIX/GNU-style flag parsing library.
- github.com/xeipuuv/gojsonpointer: For implementing JSON Pointer (RFC 6901).
- github.com/xeipuuv/gojsonreference: For implementing JSON Reference (RFC 6901).
Your hard work and commitment to excellence have made it possible for me to
build ipm
and provide a unified package management experience for developers
across different platforms. Thank you for your contributions to the open-source
ecosystem.
π License
This project is licensed under the MIT License, allowing anyone to use, modify, and distribute it freely for personal or commercial purposes.