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).
| 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 |
--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
- Backups — Automatically saves copies of the previous version of the script in the
/olddirectory (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.conffile (I’ll try to expand the functionality of this file in the future)
- SHA512 verification for: Proton packages
- SHA256 verification for:
--update-self - “Fail-Closed” mode — installation blocked if verification fails for Proton and self-update
- 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.)
- Download the script:
Multi_Package_Manager.sh - Download the configuration file (Optional):
mpm.conf(Place it in the same directory as the main script.) - Then download the script for managing the Yubico package (optional):
install-yubico-authenticator.sh(Place it in the same directory as the main script.) - 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)
- 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
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.
Multi_Package_Manager/
├── Multi_Package_Manager.sh # Main script
├── mpm.conf # Configuration
├── install-yubico-authenticator.sh # Yubico script
└── old/ # Backups folder
/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.)
- The
command_for_massive_test.txtfile 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).