Managing software on Ubuntu
By default, software is installed on Ubuntu as a snap or deb.
However, Ubuntu supports multiple software package formats.
Package Formats
Each package format has different characteristics, advantages, and use cases, which are summarized in the table below.
If you are a package developer or maintainer wanting to contribute to Ubuntu, you should refer to the official Ubuntu Project documentation.
Overview
| Format | Sandboxing | Auto-updates | Dependencies | Distribution |
|---|---|---|---|---|
| Deb/apt | No | Manual | System libraries | Repository |
| Snap | Yes | Automatic | Bundled | Snap Store |
| Flatpak | Yes | Manual/Automatic | Bundled runtimes | Flathub |
| AppImage | Optional | None | Bundled | Various sources |
| Binary | No | None | System libraries | Vendor sites |
Deb packages
Ubuntu is Debian-based and supports the traditional Debian package format.
Debs are managed by the APT package manager.
Installation:
sudo apt install <package-name>
# or install a .deb file directly:
sudo apt install ./<package>.deb
Characteristics:
- Default package format for Ubuntu
- Packages tested and curated by Ubuntu maintainers
- Deep system integration
- Shared libraries reduce disk usage
- May not have the latest versions
- Requires root privileges to install
Snap packages
Ubuntu's universal package format, developed by Canonical.
Installation:
sudo snap install <package-name>
Characteristics:
- Pre-installed on Ubuntu
- Automatic background updates
- Sandboxed for security
- All dependencies bundled (larger size)
- Access to latest software versions
- May have slower startup times due to compression
- Snap Store as a central repository
Common commands:
snap find package-name # Search
snap list # List installed
snap refresh # Update all
snap refresh package-name # Update specific
snap remove package-name # Uninstall
Flatpak packages
Cross-distribution package format, primarily using Flathub repository.
Installation:
# Install Flatpak support (if not already installed)
sudo apt install flatpak
# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install a package
flatpak install flathub com.example.Package
Characteristics:
- Strong sandboxing model
- Shared runtimes reduce duplication
- Large repository on Flathub
- Works across distributions
- Fine-grained permissions control
- Not installed by default on Ubuntu
- May require additional setup for themes
Common commands:
flatpak search package-name # Search
flatpak list # List installed
flatpak update # Update all
flatpak uninstall com.example.Package # Uninstall
flatpak run com.example.Package # Run application
Learn how to install applications from Flatpak
AppImage
Self-contained application bundles that run without installation.
Usage:
# Download AppImage file, then:
chmod +x Application.AppImage
./Application.AppImage
Characteristics:
- No installation required
- Fully portable (copy and run)
- No root privileges needed
- All dependencies bundled
- No automatic updates (manual download)
- No central repository
- Optional sandboxing with AppImageLauncher
- Limited integration with system tools
Binary/Tarball Packages
Pre-compiled binaries distributed directly by software vendors.
Installation:
# Extract tarball
tar -xzf software.tar.gz
cd software
# Often requires manual setup
./install.sh
# or simply run
./binary-name
Characteristics:
- Provided directly by developers
- Useful for proprietary software
- No standardized installation
- Manual dependency management
- Manual updates required
- May require adding to PATH
- Significant variation
Mixing Package Formats
You can use multiple formats on the same system, although things can get messy:
- Multiple installations of the same app can cause confusion
- Different formats may have different configuration locations
- Command names may conflict
Additional ways of managing software
There are many other additional ways to install software:
- Python Pip - Python packages with
pip install - Node NPM - Node.js packages with
npm install - Ruby Gems - Ruby packages with
gem install - Cargo - Rust packages with
cargo install - Docker Containers - Containerized applications with
docker compose up - Steam client - As well as games, tools and utilities can be installed with Steam