How To Install Rpm File

How To Install Rpm File

Reading time1 min
#Linux#OpenSource#Technology#RPM#PackageManagement#RedHat

Mastering RPM Installation: Pragmatic Strategies for Red Hat-Based Systems

Mismanaged RPM installations commonly trigger unstable deployments, dependency hell, or configuration drift. When rolling application updates across RHEL 7/8 nodes or maintaining legacy CentOS infrastructure, you need more than a single-line command.

Below: command syntax, gotchas, and tested workflows for robust RPM management on enterprise Linux.


The RPM Package Format

RPM ("Red Hat Package Manager") packages wrap binaries, configuration, version metadata, scripts, and dependency manifests into a single distributable file. Used across RHEL, CentOS, Fedora, Oracle Linux, and derivatives. Example RPM filename:

postgresql-server-14.9-1.el8.x86_64.rpm
  • postgresql-server: Package name
  • 14.9-1.el8: Version and release, built for EL8
  • x86_64: Architecture

Package Preflight: Inspect and Prepare

Before any install, inspect what you’re about to deploy. Too often, an unexamined RPM puts critical systems at risk.

rpm -qpi postgresql-server-14.9-1.el8.x86_64.rpm
  • Reveals summary, version, build date, and signature status.
rpm -qlp postgresql-server-14.9-1.el8.x86_64.rpm | grep /etc
  • Find config files or analyze install paths.
rpm -q postgresql-server
  • Detects if package (any version) already exists — essential before upgrades.

The Classic Trap: RPM Ignores Dependencies

Direct installation with rpm -i package.rpm will error out if libraries or required packages are missing:

error: Failed dependencies:
    libpq.so.5()(64bit) is needed by postgresql-server-14.9-1.el8.x86_64

This offers zero remediation or hints beyond the raw dependency name.


Proper Workflow: Use yum/dnf Frontends for Dependency Resolution

On modern Red Hat-family distributions (CentOS 7/RHEL 7: yum; RHEL 8, Fedora: dnf), leverage the package management frontends.

PlatformCommand Syntax
CentOS 7, RHEL 7sudo yum localinstall ./package.rpm
Fedora, RHEL 8, Rocky Linuxsudo dnf install ./package.rpm

Note: Always use ./ to specify a local file, preventing repository lookups for the filename.

These tools pull missing dependencies from configured repositories. Critically, if your system uses custom/private RPMs, ensure internal repositories are reachable. Offline servers will fail unless all dependencies are pre-staged.


Signature Verification and GPG Trust Chain

Security-conscious deployments should always verify package signatures:

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sudo rpm -K postgresql-server-14.9-1.el8.x86_64.rpm
  • Look for pgp in signature line for a valid signature.
  • Gotcha: Packages from third-party or bespoke vendors often aren't signed. Evaluate risk accordingly.

Upgrades and Rollback

To replace an existing package with a newer RPM, use:

sudo rpm -Uvh postgresql-server-14.9-1.el8.x86_64.rpm
  • -U upgrades if present, installs if not.

Alternatively, for full dependency management:

sudo dnf upgrade ./postgresql-server-14.9-1.el8.x86_64.rpm

Known issue: If downgrade is attempted (installing an older version), use --oldpackage with rpm. yum/dnf refuse to downgrade by default.


Removal, Inspection, and Recovery

  • Remove a package:

    sudo rpm -e postgresql-server
    

    Beware: This does not remove dependencies installed alongside, only the named package.

  • Extract files from an RPM without installation (for analysis or to recover configurations):

    rpm2cpio postgresql-server-14.9-1.el8.x86_64.rpm | cpio -idmv
    
  • Repair a corrupted RPM database (common after abrupt power loss on old systems):

    sudo rpm --rebuilddb
    

Pro Tips & Non-Obvious Pitfalls

  • Always test custom RPMs in a non-production clone first; poorly constructed spec files can overwrite critical system directories (seen this more than once).
  • Use dnf history list and yum history to audit past package operations. This assists in rollback or RCA after a failed upgrade.
  • Environment: On air-gapped nodes, dependency resolution with yum/dnf may require manually mirroring upstream repos via reposync. Otherwise, even localinstall can result in dependency dead-ends.
  • RPM supports --test for dry-run installation:
    sudo rpm -Uvh --test *.rpm
    
    Useful for preflight validation in CI pipelines.

(Partial) Visual: Upgrade Path

[old.rpm (installed)] ---> [rpm -Uvh new.rpm] ---> [new.rpm (active)]
         |----------(if --oldpackage, allows roll-back)----------|

Summary Table: Commands Reference

ActionCommand Example
Install w/ depssudo dnf install ./pkg.rpm
Install w/o depssudo rpm -ivh pkg.rpm
Check signaturerpm -K pkg.rpm
Verify contentsrpm -qlp pkg.rpm
Removesudo rpm -e pkgname
Extract files`rpm2cpio pkg.rpm
Repair DBsudo rpm --rebuilddb

RPM management in production isn’t fire-and-forget. Deploy with deliberate checks and leverage the right tools for dependency tracking and auditability. If you hit an obscure error or see unexpected file overwrites, start by checking the RPM spec scripts and use extraction to examine their effect. There’s always one more edge case.