How To Run Deb File

How To Run Deb File

Reading time1 min
#Linux#Software#Installation#DEB#dpkg#PackageManagement

Mastering the Art of Running DEB Files: Precision and Control in Debian Package Management

Opening a .deb file from the file manager? Serviceable for trivial workloads. Breaks down glaringly on anything more complex—nontrivial dependencies, version conflicts, or when you need to deploy across a fleet.

A proper workflow demands direct interaction with the package management tools provided by Debian and its derivatives. This means understanding not just how to install a DEB, but how to audit it, resolve its dependencies, and recover gracefully when something goes sideways.


DEB Files: More Than Archives

A .deb package is an ar archive with control scripts (preinst, postinst), dependency metadata, and the files to install. Upstream packages might rely on non-main repositories or assume a particular base system. Ignoring these details leads to breakage, contamination of system state, or elusive runtime errors.


Installation Methods: From Direct to Managed

dpkg — Direct Control, Minimal Assistance

The classic:

sudo dpkg -i ./sample-software_1.2.3_amd64.deb

Result: Installs immediately, ignoring any unmet dependencies. When it fails, you’ll see:

dpkg: error processing package sample-software (--install):
 dependency problems - leaving unconfigured

This doesn’t resolve missing requirements—just dumps you at the first error. Useful for debugging base filesystems or minimal docker images where you want exactly what’s installed, nothing more.

Recovery:

sudo apt-get install -f

APT will attempt to fetch and install whatever is missing.


apt install — Dependency-Managed Local Installation

Modern Ubuntu (16.04+) and Debian allow

sudo apt install ./sample-software_1.2.3_amd64.deb

Note the ./—APT distinguishes local files from repository packages. This approach automatically handles dependencies, pulls from all enabled repositories, and maintains proper state.

If you forget the leading ./, APT may look for sample-software in the configured repos, yielding a “Package not found” error.


gdebi — Lightweight, Purpose-Built Installation

For single-shot installs with dependency resolution (no need for full apt update cycle):

sudo apt-get install gdebi-core
sudo gdebi sample-software_1.2.3_amd64.deb

Under the hood, gdebi parses dependencies and only installs what’s missing. Quieter than apt install for isolated DEBs. Still: not perfect with highly custom or non-standard packages.


Audit Before Deploy: Extract, Inspect, Probe

Blindly installing a DEB? Risky. First, interrogate contents:

dpkg-deb -I ./sample-software_1.2.3_amd64.deb

Output: Control metadata, dependencies, maintainer scripts.

For file listing:

dpkg-deb -c ./sample-software_1.2.3_amd64.deb

Deploying to production? Untar to a temporary directory and check for overwrites or unexpected binaries.


Removal and Cleanup

Unstable state post-install is common when using dpkg alone.

Remove only binaries:

sudo dpkg --remove sample-software

Remove binaries and config files:

sudo dpkg --purge sample-software

APT-managed cleanup is more robust for dependency chains:

sudo apt-get remove sample-software
sudo apt-get autoremove

APT tracks orphaned dependencies; dpkg does not.


Nontrivial Scenarios

  • Dependency is not satisfiable: Typically, missing or out-of-date repositories. Check /etc/apt/sources.list and any files in /etc/apt/sources.list.d/.
  • Wrong architecture: Validate with dpkg --print-architecture. E.g., trying to install arm64 DEB on amd64 base. Occasionally, multiarch can resolve this, but don’t force.
  • Persistent ‘broken packages’: sudo apt --fix-broken install can clear most, but sometimes requires manual intervention (/var/lib/dpkg/status surgery—last resort).

Gotcha: Some vendor packages misuse dependencies (hard pins, vendored binaries). Never assume policy compliance—always verify.


Practical Example: Typical Vendor Provided Package

Suppose you want to install Google Chrome:

  1. Download package:
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    
  2. Inspect version and dependencies:
    dpkg-deb -I google-chrome-stable_current_amd64.deb
    
  3. Install with dependency resolution:
    sudo apt install ./google-chrome-stable_current_amd64.deb
    

Notice: Chrome pulls in a handful of libraries (libappindicator, fonts-liberation); failure to resolve results in a nonfunctional browser even if dpkg seems “successful”.


Advanced Tip: Extract Without Installing

Sometimes you want the files, not the install. For sandbox analysis:

dpkg-deb -x sample-software_1.2.3_amd64.deb ./tempdir/

Check for unexpected binaries or embedded scripts before deploying to sensitive systems.


Summary

DEB package installation isn’t monolithic. Use dpkg for direct manipulation, apt install for full integration, or gdebi for simple isolated installs. Always audit first, manage dependencies intentionally, and keep rollback strategies in mind.


Rough edges remain: Not all DEBs play nicely. Package management is controlled chaos—structuring it effectively makes the difference between a stable system and endless troubleshooting.