Skip to content

Repository files navigation

📝 Multi Package Manager (MPM)

Multi Package Manager (MPM) is a Bash script that enables centralized management of the installation, updating, reinstallation, and removal of selected applications on Debian/Ubuntu-based Linux systems. The script provides a checksum verification mechanism (unfortunately, not all packages officially support this), built-in auto-update (automatic backups during the process), and full support for two languages (Polish/English).


📦 Currently Supported Packages

Package Description Checksum Verification
Discord Voice chat app for gamers ❌ No checksums
Proton Authenticator 2FA app by Proton AG ✅ SHA512 (version.json)
Proton Pass Password manager by Proton AG ✅ SHA512 (version.json)
Yubico Authenticator YubiKey app ⚙️ Via an external script

✨ Features

Package Management

  • --install — Install package(s)
  • --update — Update to the latest version
  • --reinstall — Reinstall
  • --remove — Remove package(s)
  • --check — Check the current version
  • --check-self — Check for new versions of the script
  • --update-self — Download the latest version of the script from GitHub Releases

Additional script features

  • Backups — Automatically saves copies of the previous version of the script in the /old directory (currently, backups are supported only for MPM and install-yubico-authenticator.sh)
  • Logging — Logs generated by the script itself are available in the /var/lib/multi_package_manager_config_and_logs/ directory
  • 🔤 Dual-language support — Polish / English (Automatic detection of the system language or use of user settings)
  • ⚙️ Configurable — basic configuration via the mpm.conf file (I’ll try to expand the functionality of this file in the future)

🔒 Security

  • SHA512 verification for: Proton packages
  • SHA256 verification for: --update-self
  • “Fail-Closed” mode — installation blocked if verification fails for Proton and self-update

🛠 System Requirements

  • Distribution: A Debian/Ubuntu-based system, e.g., Ubuntu, Debian, Linux Mint, or other systems in this family (The script is currently being tested only on the latest version of Ubuntu. Due to time constraints, I am unable to test it on other distributions.)
  • Permissions: sudo (The script must be run without “sudo” in the terminal.)
  • Required tools: curl, dpkg, grep, awk, jq, sha512sum, sha256sum, sudo, find, realpath, tar (The script automatically checks whether they are installed on the system and installs them itself if necessary.)

📥 Installation

  1. Download the script: Multi_Package_Manager.sh
  2. Download the configuration file (Optional): mpm.conf (Place it in the same directory as the main script.)
  3. Then download the script for managing the Yubico package (optional): install-yubico-authenticator.sh (Place it in the same directory as the main script.)
  4. Run the script with the command: ./Multi_Package_Manager.sh (Before running it for the first time, you need to enter this command in the terminal: chmod +x ./Multi_Package_Manager.sh)
  5. Add to the PATH variable (optional):
  • Use the migration command:
    ./Multi_Package_Manager.sh --migrate-to-hidden && source ~/.bashrc
  • After migration, you can run the script without the ./ prefix

💻 How to Use

To display the help menu and view all available options, run: ./Multi_Package_Manager.sh --help. After migration, you can use: Multi_Package_Manager.sh --help.


📁 Project Structure

Multi_Package_Manager/
├── Multi_Package_Manager.sh             # Main script
├── mpm.conf                             # Configuration
├── install-yubico-authenticator.sh      # Yubico script
└── old/                                 # Backups folder

System directories:

  • /var/lib/multi_package_manager_config_and_logs/ — Logs and status directory (Generated by a script.)
    • multi_package_manager_logs.txt — Event log (Generated by a script.)
    • yubico_software_installed_version.txt — Yubico version tracking (Generated by a script.)

🤝 Collaboration and Support:

  • The command_for_massive_test.txt file contains a list of commands for troubleshooting issues with the script. (If a file was not created, it means that an error occurred during that phase of testing; in this case, check the .txt file that was created last.)
  • If you encounter a problem or want to suggest a new feature, please report it in this repository.
  • If you’d like to support me financially, you can buy me a coffee: https://cuplink.to/fabiangamer2215 (the script is completely free; financial support is optional).

About

A Bash script for managing packages (installation, update, reinstallation, removal): .deb, .tar.gz, and similar formats that do not add their own repository and do not have a built-in tool for self-updating, or in cases where such a tool is not very user-friendly. The script works exclusively on systems based on the Debian/Ubuntu family.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages