pman
is a small, portable, cross-platform package manager written in Python.
pman
is not ready for use yet (alpha, core features are buggy and advanced features are not implemented yet)
As far as I know, there are no truly "cross-platform" package managers. apt
, pacman
, zypper
, and the like only work well on Linux (although apt
is also used in iOS jailbreaking) and brew
only works on *nix OSes. pman
is not only cross-platform, but it's also portable - you can move your installation (including repos and installed packages) across two machines very easily, and it will just work. Any packages that are cross-platform (for example, packages written in Python or Java) will even work across operating systems.
Installation on *nix OSes does not require root permissions.
- Download and extract
pman
to a directory with write permissions. - Add the directory containing
pman
, as well as thepackages
subdirectory, to your PATH. - Create a new environment variable called
PMAN_PACKAGES
containing the path to thepackages
subdirectory. - (Optional) Rename
pman.py
topman
Installation on Windows requires administrator permissions.
- Download and extract
pman
to a directory with write permissions. - Run the command
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
in PowerShell as administrator. - Run the command
Test-Path $Profile
in PowerShell. - (if command returned
False
) Run the commandNew-Item –Path $Profile –Type File –Force
in PowerShell. - Run the command
notepad $Profile
in PowerShell. - In the Notepad window that opens, add the command
Set-Alias -Name pman -Value python3 <pman-path>\pman.py
to the end, replacing<pman-path>
with the path to yourpman
installation. - Add the
packages
subdirectory to your PATH. - Create a new environment variable called
PMAN_PACKAGES
containing the path to thepackages
subdirectory. - Restart PowerShell.
- Load repositories and package lists from disk.
- Download and import package lists from servers.
- Download and update packages from servers
- Uninstall installed packages
- Add repos from command line
- Only install packages meant for a certain OS/CPU architecture
- Option to update and then run packages (intended to update GUI of an embedded device before it finishes booting)
- Allow the same script to run on all supported OSes (Windows, GNU/Linux, etc...)
- Allow one repository to host packages for multiple OSes and CPU architectures at the same time
- System-wide (with root/administrator) or single-user (no root/administrator) package installation
- Only use libraries already in the Python standard library
pman
relies on HTTPS to ensure traffic is not tampered with. Routing traffic through HTTP only is not supported.
Also have pman
verify GPG signatures on files to help prevent server-side tampering. Ideally public keys should be downloaded once, when we first see the repo in repos.json