Skip to main content

How to Install Software on Linux: Pack Source Builds

Created: August 21, 2013 Larry Qu 4 min read

Introduction

ethod — and when to use it — is essential for any Linux user or system administrator.

Package managers are the easiest and safest way to install software. They handle dependencies, updates, and removal automatically.

apt (Debian, Ubuntu, Mint)

# Update package list
sudo apt update

# Install a package
sudo apt install nginx

# Install multiple packages
sudo apt install git curl wget vim

# Search for a package
apt search nginx

# Show package info
nx

# Remove a package
sudo apt remove nginx

# Remove package and config files
sudo apt purge nginx

# Remove unused dependencies
sudo apt autoremove

# Upgrade all packages
sudo apt upgrade

# Full system upgrade
l-upgrade

dnf / yum (RHEL, CentOS, Fedora)

tem from source ruby

Install a version

asdf install nodejs 20.0.0 asdf install python 3.12.0

Set global version

asdf global nodejs 20.0.0

Set local version (per project)

asdf local python 3.12.0


## Resources

- [apt Documentation](https://manpages.debian.org/apt)
- [dnf Documentation](https://dnf.readthedocs.io/)
- [GNU Autoconf (./configure)](https://www.gnu.org/software/autoconf/)
- [asdf Version Manager](https://asdf-vm.com/)
- [Linux From Scratch](https://www.linuxfromscratch.org/) — build a complete Linux sysges
apt-mark showhold

Verify Installation

# Check if a command is available
which nginx
command -v nginx

# Check version
nginx -v
python3 --version

# Check if a service is running
systemctl status nginx

# Find where a package installed files
dpkg -L nginx
rpm -ql nginx

Managing Multiple Versions

asdf (Universal version manager)

# Install asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf

# Add a plugin
asdf plugin add nodejs
asdf plugin add python
asdf plugin addcies

Error: “configure: error: OpenSSL not found”

sudo apt install libssl-dev # Debian/Ubuntu sudo dnf install openssl-devel # RHEL/Fedora

Error: “cannot find -lz” (zlib missing)

sudo apt install zlib1g-dev

Find which package provides a file

apt-file search libssl.so dpkg -S /usr/lib/libssl.so


### Version Conflicts

Install a specific version

sudo apt install nginx=1.18.0-0ubuntu1

Hold a package at current version (prevent upgrades)

sudo apt-mark hold nginx

Check held packa

Install from package.json

npm install

Update packages

npm update

Uninstall

npm uninstall express


### Ruby (gem/bundler)

Install a gem

gem install rails

Install from Gemfile

bundle install

Update gems

bundle update

List installed gems

gem list

### Go

Install a package (Go modules)

go get github.com/gin-gonic/gin

Install a CLI tool

go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

## Troubleshooting Common Issues

### Missing Dependenuests==2.28.0

# Install from requirements file
pip install -r requirements.txt

# Install in virtual environment (recommended)
python3 -m venv .venv
source .venv/bin/activate
pip install requests

# Upgrade a package
pip install --upgrade requests

# List installed packages
pip list

# Uninstall
pip uninstall requests

Node.js (npm/yarn)

# Install globally
npm install -g typescript

# Install locally (project dependency)
npm install express

# Install dev dependency
npm install --save-dev jest
g

Common Build Dependencies

# Install essential build tools (Debian/Ubuntu)
sudo apt install build-essential

# Install essential build tools (RHEL/CentOS)
sudo dnf groupinstall "Development Tools"

# Common dependencies
sudo apt install \
  gcc g++ make cmake \
  libssl-dev \
  zlib1g-dev \
  libreadline-dev \
  libffi-dev \
  pkg-config

Installing Language-Specific Packages

Python (pip)

# Install a package
pip install requests

# Install specific version
pip install req

Install to a custom directory (avoids conflicts with package manager)

./configure –prefix=/opt/myapp

See all available options

./configure –help

Common options

./configure
–prefix=/usr/local
–enable-ssl
–disable-debug
–with-openssl=/usr/local/ssl


### Checking for Errors

Check if the last command succeeded (0 = success)

echo $?

Run configure and check

./configure –prefix=/usr/local echo “Configure exit code: $?”

Capture errors

make 2>&1 | tee build.loource (Compile)

When a package isn’t available in your distro’s repositories, or you need a specific version, compile from source.

The Three-Step Process

# 1. Download and extract
wget https://example.com/software-1.0.tar.gz
tar -zxvf software-1.0.tar.gz
cd software-1.0/

# For .tar.bz2 files
tar -jxvf software-1.0.tar.bz2

# For .tar.xz files
tar -Jxvf software-1.0.tar.xz

# 2. Configure
./configure --prefix=/usr/local

# 3. Compile and install
make
sudo make install

Configure Options

Remove

flatpak uninstall org.gimp.GIMP


## Installing from a Downloaded Package

### .deb files (Debian/Ubuntu)

Download

wget https://example.com/package.deb

Install

sudo dpkg -i package.deb

Fix missing dependencies

sudo apt install -f

Or use apt directly (handles dependencies)

sudo apt install ./package.deb


### .rpm files (RHEL/CentOS/Fedora)

Install

sudo rpm -ivh package.rpm

Or with dnf (handles dependencies)

sudo dnf install ./package.rpm

## Installing from Ss
sudo pacman -Syu

# List installed
pacman -Q

snap (Universal, cross-distro)

# Install
sudo snap install code --classic

# List installed snaps
snap list

# Update all snaps
sudo snap refresh

# Remove
sudo snap remove code

flatpak (Universal, sandboxed)

# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# Install
flatpak install flathub org.gimp.GIMP

# Run
flatpak run org.gimp.GIMP

# Update all
flatpak update

Install

sudo dnf install nginx

Search

dnf search nginx

Show info

dnf info nginx

Remove

sudo dnf remove nginx

Update all

sudo dnf upgrade

List installed packages

dnf list installed

Check for updates

dnf check-update


### pacman (Arch Linux, Manjaro)

Sync and install

sudo pacman -S nginx

Search

pacman -Ss nginx

Remove

sudo pacman -R nginx

Remove with dependencies

sudo pacman -Rs nginx

Update all package

Comments

Share this article

Scan to read on mobile