Debian uses apt as the front-end command for managing repos/packages and dpkg as the backend command to actually install packages once they’re downloaded.

Aptitude is a graphical frontend for apt.

Red Hat uses rpm instead of dkpg for the actual package installation process.
Yum is the replacement for apt, dnf is an upgraded version of yum.

Package build process:
Download the code, configure the features you want built and other build options by running ./configure.
Find the right compiler to use and run it. You’ll usually have a makefile that contains build instructions. When you run make, it runs the makefile and compiles the source code into executable files.
Once you have the compiled executables, libraries, and assets, you need to copy those files to the right places on your system to use them. One common way is to run make install.
This whole process is often difficult to update or undo if you ever want to uninstall the software.

Package repos do the build process themselves, on their servers, and then put up the package files for download. You then use commands like apt to reach out to those repositories and download the packages they’ve built.

Flatpak, Snap, AppImage

AppImage:
Self-contained executable with all the dependencies it needs to run.
No repository, no auto updates unless the app updates itself, which is rare for AppImages.
If you download two apps with the same dependencies, you end up storing two copies of the dependencies. So if, for example, you have two 5mb apps that require a 100mb SSL library, you’ll have two 105mb app images on your hard drive.

Snap:
A lot like Docker but for native desktop apps.
Creates a lot of virtual filesystems.
Probably the most widely hated option

Flatpak:
Uses repositories, supports auto-updates, does some sandboxing (apps don’t immediately have full access to the entire system when you install them).
Used in the Steam Deck desktop.
Dependencies are downloaded once and shared across every app that needs them.