Every way to install software on Ubuntu: a downloaded .deb (apt / dpkg / gdebi), official & vendor APT repos, PPA, Snap, Flatpak, AppImage, tarballs, source builds and language managers plus how to inspect, fix and remove packages.
apt install resolves dependencies automatically. The ./ prefix is required so apt treats the argument as a local file, not a package name.
dpkg -i is low-level and does not resolve dependencies — follow it with apt -f install. gdebi is a lightweight installer that does resolve them.
GUI option: right-click the .deb → Open With → App Center / Software Install.
Check what a package contains and that its architecture matches your machine before running it as root.
"dependency problems – leaving unconfigured" → sudo apt -f install
Never delete dpkg/apt lock files blindly — wait for the other process to finish.
First choice: signed, updated with apt upgrade.
Use when the vendor publishes its own repo (Docker, VS Code, Node…). You get auto-updates through apt.
apt-key add is deprecated. Always scope keys with signed-by= so a key only trusts its own repo.
Launchpad Personal Package Archive — newer versions maintained by a person or team.
Canonical's sandboxed, auto-updating packages.
Cross-distro sandboxed apps from Flathub.
Portable single file — nothing is installed.
| Method | Auto-updates | Sandboxed | Best for |
|---|---|---|---|
| APT official | yes | no | Default, servers |
| Vendor repo / PPA | yes | no | Newer versions (Docker, Node, VS Code) |
| .deb file | no (unless it adds a repo) | no | Vendor downloads (Chrome, Zoom) |
| Snap | automatic | yes | Desktop apps, IDEs |
| Flatpak | yes | yes | Desktop apps across distros |
| AppImage | no | no | Portable / try-before-install |
| Tarball / source | no | no | Custom or latest builds |
Decision order: official repo → vendor repo → .deb → Snap/Flatpak → AppImage/tarball/source.
Prefer sudo apt install ./file.deb over dpkg -i. Download only from the vendor's official site, verify the checksum, inspect with dpkg -I, and prefer a signed repo so you keep receiving security updates. Clean unused PPAs from /etc/apt/sources.list.d/.