diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ea73fe --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# RPMI: Graphical Utility for Managing RPM Packages + +![rpmi-screenshot](./screenshot.png) + +RPMI is a simple graphical utility, developed in Rust using EGUI, designed for installing, upgrading, and removing RPM packages on Linux operating systems. It provides an intuitive interface for interacting with packages, using `dnf` as its backend. + +## Features + +* **Install RPM Packages:** Easily install new RPM packages. +* **Upgrade RPM Packages:** Upgrade existing packages to newer versions. +* **Remove RPM Packages:** Remove unwanted packages from your system. +* **Graphical User Interface:** Intuitive user interface built with EGUI. +* **Detailed Package Information:** View package name, version, architecture, size, summary, URL, and description before installation. +* **Process Logging:** Monitor the progress of `dnf` operations in real-time. + +## Installation + +### Cargo +You can install `egui_rpm_installer` directly from crates.io using `cargo`: + +```bash +cargo install egui_rpm_installer +``` + +### COPR +For Fedora and RHEL-based systems, you can install RPMI from the COPR repository: + +```bash +sudo dnf copr enable arabianq/rpmi +sudo dnf install rpmi +``` + +### Pre-built Binaries +You can download pre-built binaries for various platforms from the [GitHub Releases page](https://github.com/arabianq/rpmi/releases). + +## Build and Run + +### Dependencies + +To build and run RPMI, you will need: + +* Rust (version 1.70 or higher) +* `dnf` (for package management) +* `pkexec` (for executing commands with elevated privileges) + +### Build + +Clone the repository and build the project: + +```bash +git clone https://github.com/arabianq/rpmi.git +cd rpmi +cargo build --release +``` + +The executable will be located at `target/release/rpmi`. + +### Run + +You can run RPMI by passing the path to one or more RPM files: + +```bash +./target/release/rpmi /path/to/your/package.rpm +``` + +If you pass multiple files, a separate RPMI instance will be launched for each. + +## Usage + +1. **Launch:** Start RPMI by specifying the path to an RPM file. +2. **Package Information:** The RPMI window will display detailed information about the package. +3. **Action:** Depending on the package's state (new, older version, newer version of installed), you will be offered "Install", "Upgrade", or "Remove" buttons. +4. **Execute:** Click the appropriate button to begin the process. The execution log will be displayed in the window. +5. **Completion:** After the process is complete, you can close the application. + +## License + +This project is distributed under the MIT License. See the `LICENSE` file for details. \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..d38a360 Binary files /dev/null and b/screenshot.png differ