2 stable releases

new 1.1.0 Apr 14, 2025
1.0.0 Apr 7, 2025
0.1.5 Apr 7, 2025
0.1.4 Sep 13, 2024

#600 in Command line utilities

Download history 212/week @ 2025-04-05 137/week @ 2025-04-12

349 downloads per month

BSD-3-Clause

54KB
1.5K SLoC

Please Installer

Please Installer is a unified interface package manager for many OSes inspired by UPT. Even it has started as a fork from UPT, Please Installer was completely rewritten from scratch.

Please Installer is a beta release, not much is properly tested.

Such as UPT, Please Installer relies on the platform’s package manager to perform its tasks.

Installation

First install rustup using your system package manager, and then run:

rustup default stable
cargo install please-install

Note that, in order to use cargo and please on Posix systems, you need to put $CARGO_HOME/bin (usually $HOME/.cargo/bin) into PATH.

Development version

In order to install from HEAD (nightly version), use the command:

cargo install please-install --git=https://codeberg.org/cacilhas/please.git

Usage

❯ please help
A unified interface package manager for many OSes

Usage: please [OPTIONS] [DEFAULT_VENDOR] <COMMAND>

Commands:
  install        install package(s)
  reinstall-all  reinstall known installed package(s)
  remove         remove package(s)
  upgrade        upgrade package(s)
  search         search for package(s)
  info           get info for a package
  update         update database
  list           list installed packages
  list-vendors   list available vendors
  move           move package to another vendor
  help           Print this message or the help of the given subcommand(s)

Arguments:
  [DEFAULT_VENDOR]  [possible values: unknown, upt, cargo, go, npm, uv, pkgx, apt, yay, yum, pacman, rua, apk, emerge, guix, nix-env, slackpkg, cards, dnf, eopkg, opkg, urpm, xbps, zypper, flatpak, snap]

Options:
  -x, --skip-settings    skip settings
  -c, --config <CONFIG>  configuration file
  -d, --dry-run          dry run (do not actually execute commands)
  -y, --yes              assume yes for all prompts
  -s, --su               run as root (user must be sudoer)
  -v, --vendor <VENDOR>  set the installer command [possible values: unknown, upt, cargo, go, npm, uv, pkgx, apt, yay, yum, pacman, rua, apk, emerge, guix, nix-env, slackpkg, cards, dnf, eopkg, opkg, urpm, xbps, zypper, flatpak, snap]
  -h, --help             Print help
  -V, --version          Print version

You can call help on subcommands as well:

❯ please help install
install package(s)

Usage: please install [OPTIONS] [PACKAGE]...

Arguments:
  [PACKAGE]...  package(s) to be installed

Options:
  -x, --skip-settings    skip settings
  -c, --config <CONFIG>  configuration file
  -d, --dry-run          dry run (do not actually execute commands)
  -y, --yes              assume yes for all prompts
  -s, --su               run as root (user must be sudoer)
  -v, --vendor <VENDOR>  set the installer command [possible values: unknown, upt, cargo, go, npm, uv, pkgx, apt, yay, yum, pacman, rua, apk, emerge, guix, nix-env, slackpkg, cards, dnf, eopkg, opkg, urpm, xbps, zypper, flatpak, snap]
  -h, --help             Print help

Or even a bit more complex:

❯ please help move from to
Usage: please move from <ORIGIN> to [OPTIONS] <DESTINATION>

Arguments:
  <DESTINATION>  destination vendor [possible values: unknown, upt, cargo, go, npm, uv, pkgx, apt, yay, yum, pacman, rua, apk, emerge, guix, nix-env, slackpkg, cards, dnf, eopkg, opkg, urpm, xbps, zypper, flatpak, snap]

Options:
  -x, --skip-settings    skip settings
  -c, --config <CONFIG>  configuration file
  -d, --dry-run          dry run (do not actually execute commands)
  -y, --yes              assume yes for all prompts
  -s, --su               run as root (in case user must be sudoer)
  -v, --vendor <VENDOR>  set the installer command [possible values: unknown, upt, cargo, go, npm, uv, pkgx, apt, yay, yum, pacman, rua, apk, emerge, guix, nix-env, slackpkg, cards, dnf, eopkg, opkg, urpm, xbps, zypper, flatpak, snap]
  -h, --help             Print help

Supported vendors (backend package managers) are basically the same supported by UPT:

OS Tools
windows scoop, choco, winget
macos brew, port
ubuntu, debian, linuxmint, pop, deepin, elementary kali, raspbian, aosc, zorin, antix, devuan, bodhi, lxle, sparky apt, snap, flatpak
fedora, redhat, rhel, amzn, ol, almalinux, rocky, oubes, centos, qubes, eurolinux dnf, yum, flatpak
arch, manjaro, endeavouros, arcolinux, garuda, antergos, kaos pacman, yay, flatpak
alpine, postmarket apk
opensuse, opensuse-leap, opensuse-tumbleweed zypper, yum, flatpak
nixos nix-env, flatpak
gentoo, funtoo emerge, flatpak
void xbps, flatpak
mageia urpm, flatpak
slackware slackpkg, flatpak
solus eopkg, flatpak
openwrt opkg, flatpak
nutyx cards, flatpak
crux prt-get, flatpak
freebsd, ghostbsd pkg
android termux
haiku pkgman

Alternative vendors:

Settings

Please Installer can read settings from a configuration file in TOML format supplied by the option --config=<CONFIG>, by default $XDG_CONFIG_HOME/please.toml on GNU/Linux, macOS, and BSD, or %APPDATA%\please.toml on Windows.

Valid options and default values are:

assume-yes = false  # assume yes for all prompts if true
su = false          # run as root (user must be sudoer) if true
vendor = ""         # select a specific package manager from the available list
pager = ""          # use the supplied pager to paginate search and list; in search, $args is replaced by the query

The default pager is given by the PAGER environment variable.

You also may supply sections to add per-subcommand settings. Valid sections are [install], [remove], [update], [upgrade], [search], and [list].

Suggested configuration file:

assume-yes = true

[install]
su = true

[list]
pager = "bat --file-name='installed packages'"

[remove]
su = true

[search]
pager = "bat --file-name='search $args'"

[upgrade]
su = true

[update]
su = true

Note

Var data is stored in $XDG_DATA_HOME/info.cacilhas.please/ directory on GNU/Linux, macOS, and BSD, and %APPDATA%\info.cacilhas.please\ on Windows.

Known bugs

Check open issues for known bugs and feature requests.

License

This software is licensed under the 3-Clause BSD License.

Dependencies

~6–17MB
~248K SLoC