How do you install a local .rpm file directly, and what does rpm NOT do?
rpm -ivh package.rpm installs a local file (-i install, -v verbose, -h progress bar) — but rpm will not fetch or resolve dependencies; it fails if any are missing.
When you already have an .rpm file on disk, rpm -i installs it:
rpm -ivh podman-4.0.0-6.el9.x86_64.rpm
# Verifying... ################### [100%]
# Preparing... ################### [100%]
# Updating/installing...
# podman-2:4.0.0-6 ############## [100%]
The flags: -i install, -v verbose, -h print hash marks as a progress bar. Related verbs: rpm -Uvh upgrades (and installs if absent), rpm -e erases (removes) a package.
The crucial limitation: rpm is low-level and operates only on the file you hand it. It checks dependencies but does not satisfy them — if podman needs a library you don't have, the install simply fails with an "unresolved dependency" error. It won't reach out to any repository to get it.
So when do you use bare rpm? Only for querying (rpm -q...), or installing a self-contained local file with no missing dependencies. For anything real-world — pulling a package and everything it needs — you use DNF, which resolves and downloads dependencies automatically (next card).
Go deeper:
rpm(8) man page —
-i/-U/-eand the low-level (no dependency resolution) behaviour.