## The problem Nowadays, we have a lot of diversity in the package management area, we have the greatest package managers, like: - [pacman](https://wiki.archlinux.org/title/pacman) (& [yay](https://github.com/Jguer/yay) & [paru](https://github.com/Morganamilo/paru)) - [ports & pkg](https://docs.freebsd.org/en/books/handbook/ports/) - [nix](https://nixos.org/) (also provides reproducible builds and promotes source distribution) - [apk](https://wiki.alpinelinux.org/wiki/Package_management) - [zypper](https://en.opensuse.org/Portal:Zypper) - [xbps](https://docs.voidlinux.org/xbps/index.html) - [flatpak](https://flatpak.org/) (which is also a runtime and oriented for binary distribution) - [eopkg](https://getsol.us/articles/package-management/basics/en/) - [Portage](https://wiki.gentoo.org/wiki/Portage) - [Entropy](https://sabayon.github.io/wiki-next/articles/entropy/) (~~I feel sad about this one, seems abandoned~~) - [cargo](https://github.com/rust-lang/cargo) (& [cargo-update](https://github.com/nabijaczleweli/cargo-update)). - [gem](https://guides.rubygems.org/command-reference/) - [opkg](https://openwrt.org/docs/guide-user/additional-software/opkg) - [Nimble](https://nimble.directory/) - [hex](https://hex.pm/) - [zigmod](https://github.com/nektro/zigmod) - ... The decent ones: - [apt](https://wiki.debian.org/AptCLI) - [yum](https://wiki.centos.org/PackageManagement/Yum) - [dnf](https://docs.fedoraproject.org/en-US/quick-docs/dnf/) - [pip](https://pip.pypa.io/en/stable/) - [npm](https://docs.npmjs.com/about-npm) - [Homebrew](https://brew.sh/) - [Chocolatey](https://chocolatey.org/) - [Scoop](https://scoop.sh/) - ... The almost decent ones: - [sdkman](https://sdkman.io/) - [docker](https://docker.com/) (sort of) - ... And the bad ones: - [snap](https://snapcraft.io/) - No, there is no other one, it is just snap. *They are not sorted in order of preference.* Okay, it's just my personal opinion (I'm lying, no, it's not, [snap](https://snapcraft.io/) is really the trashier one, the others are miles away better), but you get it, we have a lot of ways to install ~~malware~~ software in our machines. However, I always feel very uncomfortable with the fact that, it's not always that we can easily find a manpage for a package installed in a non-standard way, for example, if you install a package with [npm](https://docs.npmjs.com/about-npm) (which the packages rarely ships any manpages whatsoever), [cargo¹](https://github.com/rust-lang/cargo) or simply by downloading its binary, you wouldn't be able to read the manpages with `man`. There are some alternatives, like, if they are in fact shipped with manpages but the package manager just don't support automatic installation (like [cargo¹](https://github.com/rust-lang/cargo) and [snap~~trash~~](https://snapcraft.io/)), one can simply specify a custom directory for manpages. > ¹: Cargo is not meant to be a way for end-users to install packages in their system, although it's very > common for devs to use it to install some crates, in cases where they are not available in the distro repository, > or when they need special features not enabled by default (or any other reason, like, just because they can).