Skip to main content

Package management


Table of contents

  1. What is a package manager?
  2. APT (Debian/Ubuntu)
  3. YUM/DNF (RedHat/CentOS/Fedora)
  4. Snap and Flatpak
  5. Compiling from source
  6. Hands-on exercises


1 - What is a package manager?

Definition

A package manager automates:

  • Software installation
  • Updates
  • Removal
  • Dependency management

Without a package manager

# Installation manuelle (complexe)
wget https://example.com/logiciel.tar.gz
tar xzf logiciel.tar.gz
cd logiciel
./configure
make
sudo make install
# + installer chaque dépendance manuellement...

With a package manager

# Installation simple
sudo apt install logiciel
# Tout est géré automatiquement !

Main package managers

DistributionManagerFormat
Debian/UbuntuAPT (dpkg).deb
RedHat/CentOS/FedoraYUM/DNF (rpm).rpm
Arch Linuxpacman.pkg.tar.zst
Alpineapk.apk
UniversalSnap, Flatpak-

🔝 Back to table of contents



2 - APT (Debian/Ubuntu)

APT = Advanced Package Tool

Essential commands

CommandDescription
apt updateUpdate the package list
apt upgradeUpdate the installed packages
apt installInstall a package
apt removeRemove a package
apt purgeRemove package + configuration
apt searchSearch for a package
apt showInformation about a package
apt autoremoveRemove orphaned dependencies

System update

# Mettre à jour la liste des packages disponibles
sudo apt update

# Mettre à jour tous les packages installés
sudo apt upgrade

# Mettre à jour + gérer les nouvelles dépendances
sudo apt full-upgrade

# Tout en une commande
sudo apt update && sudo apt upgrade -y

Install packages

# Installer un package
sudo apt install nginx

# Installer plusieurs packages
sudo apt install nginx vim curl git

# Installer sans confirmation
sudo apt install -y nginx

# Installer une version spécifique
sudo apt install nginx=1.18.0-0ubuntu1

# Réinstaller un package
sudo apt reinstall nginx

Remove packages

# Supprimer un package (garde la configuration)
sudo apt remove nginx

# Supprimer package + fichiers de configuration
sudo apt purge nginx

# Supprimer les dépendances inutilisées
sudo apt autoremove

# Nettoyage complet
sudo apt purge nginx && sudo apt autoremove

Search for packages

# Rechercher par nom
apt search nginx

# Rechercher avec description
apt search "web server"

# Informations détaillées
apt show nginx

# Lister les versions disponibles
apt list nginx -a

# Lister les packages installés
apt list --installed

# Lister les packages upgradables
apt list --upgradable

Repository management

Repositories are configured in /etc/apt/sources.list and /etc/apt/sources.list.d/

# Ajouter un dépôt PPA (Ubuntu)
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# Ajouter un dépôt manuellement
echo "deb https://repo.example.com/apt stable main" | sudo tee /etc/apt/sources.list.d/example.list

# Ajouter une clé GPG
curl -fsSL https://repo.example.com/gpg | sudo apt-key add -
tip

Always run apt update after adding a new repository!

🔝 Back to table of contents



3 - YUM/DNF (RedHat/CentOS/Fedora)

DNF is the modern successor to YUM.

Essential commands

APTDNF/YUMDescription
apt updatednf check-updateCheck for updates
apt upgradednf upgradeUpdate
apt installdnf installInstall
apt removednf removeRemove
apt searchdnf searchSearch
apt autoremovednf autoremoveClean up

DNF examples

# Mettre à jour le système
sudo dnf upgrade

# Installer un package
sudo dnf install nginx

# Supprimer un package
sudo dnf remove nginx

# Rechercher
dnf search httpd

# Informations
dnf info nginx

# Lister les packages installés
dnf list installed

Repository management (DNF)

# Lister les dépôts
dnf repolist

# Activer/désactiver un dépôt
sudo dnf config-manager --enable epel
sudo dnf config-manager --disable epel

# Ajouter le dépôt EPEL
sudo dnf install epel-release

Correspondence table

ActionAPT (Debian/Ubuntu)DNF (Fedora/RHEL)
Update listapt updatednf check-update
System updateapt upgradednf upgrade
Installapt install pkgdnf install pkg
Removeapt remove pkgdnf remove pkg
Searchapt search termdnf search term
Infoapt show pkgdnf info pkg
Clean upapt autoremovednf autoremove

🔝 Back to table of contents



4 - Snap and Flatpak

Snap (Canonical)

Universal packages with sandboxing.

# Installer snap (si pas présent)
sudo apt install snapd

# Rechercher une application
snap find vscode

# Installer
sudo snap install code --classic
sudo snap install docker

# Mettre à jour
sudo snap refresh

# Supprimer
sudo snap remove code

# Lister les snaps installés
snap list

Flatpak

An alternative to Snap, more desktop-oriented.

# Installer flatpak
sudo apt install flatpak

# Ajouter le dépôt Flathub
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# Installer une application
flatpak install flathub org.gimp.GIMP

# Lancer
flatpak run org.gimp.GIMP

# Mettre à jour
flatpak update

Comparison

AspectAPTSnapFlatpak
IsolationNoYesYes
Automatic updatesNoYesOptional
SizeSmallLargeLarge
UsageSystemDesktop appsDesktop apps
RollbackNoYesYes
note

For servers, favor APT/DNF. Snap and Flatpak are better suited to desktop applications.

🔝 Back to table of contents



5 - Compiling from source

Sometimes you need to compile software from source.

Typical workflow

Prerequisites

# Installer les outils de compilation
sudo apt install build-essential
# Inclut : gcc, g++, make, etc.

# Outils supplémentaires courants
sudo apt install autoconf automake libtool

Complete example

# 1. Télécharger les sources
wget https://example.com/logiciel-1.0.tar.gz

# 2. Extraire
tar xzf logiciel-1.0.tar.gz
cd logiciel-1.0

# 3. Configurer (vérifie les dépendances)
./configure --prefix=/usr/local

# 4. Compiler
make

# 5. Installer
sudo make install

# 6. Vérifier
which logiciel
logiciel --version

Common configure options

# Installer dans un répertoire personnalisé
./configure --prefix=/opt/logiciel

# Activer/désactiver des fonctionnalités
./configure --enable-feature --disable-autre

# Voir toutes les options
./configure --help

checkinstall - Create a .deb package

# Installer checkinstall
sudo apt install checkinstall

# Au lieu de "make install", utilisez :
sudo checkinstall
# Crée un .deb et l'installe
# Permet de désinstaller proprement avec apt
warning

Compiling from source should be a last resort. Use package managers when possible.

🔝 Back to table of contents



6 - Hands-on exercises

Exercise 1: Basic management with APT

# 1. Mettez à jour la liste des packages
sudo apt update

# 2. Vérifiez les packages à mettre à jour
apt list --upgradable

# 3. Installez htop (moniteur de processus)
sudo apt install htop

# 4. Vérifiez l'installation
htop --version

# 5. Affichez les informations du package
apt show htop

# 6. Supprimez htop
sudo apt remove htop

# 7. Nettoyez les dépendances orphelines
sudo apt autoremove
# 1. Recherchez les packages liés à "json"
apt search json | head -20

# 2. Recherchez les packages "python"
apt search ^python3 | head -20

# 3. Comptez les packages installés
apt list --installed | wc -l

Exercise 3: Repository management

# 1. Listez les sources configurées
cat /etc/apt/sources.list

# 2. Listez les fichiers de sources additionnels
ls /etc/apt/sources.list.d/

Quiz

Q1. Which command refreshes the list of available packages?

Answer

sudo apt update

Q2. What is the difference between remove and purge?

Answer

remove deletes the package but keeps the configuration files. purge deletes the package AND the configuration files.

Q3. How do you install a package without confirmation?

Answer

sudo apt install -y package

🔝 Back to table of contents



Key takeaways

  • Always apt update before apt install
  • apt upgrade to update the system
  • apt remove vs apt purge (keeping configs)
  • apt autoremove to clean up
  • APT = Debian/Ubuntu, DNF = Fedora/RHEL
  • Snap/Flatpak for isolated desktop applications
  • Compiling from source = last resort

🔝 Back to table of contents


← Previous chapter | Next chapter: Processes and tasks →