Package management
Table of contents
- What is a package manager?
- APT (Debian/Ubuntu)
- YUM/DNF (RedHat/CentOS/Fedora)
- Snap and Flatpak
- Compiling from source
- 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
| Distribution | Manager | Format |
|---|---|---|
| Debian/Ubuntu | APT (dpkg) | .deb |
| RedHat/CentOS/Fedora | YUM/DNF (rpm) | .rpm |
| Arch Linux | pacman | .pkg.tar.zst |
| Alpine | apk | .apk |
| Universal | Snap, Flatpak | - |
🔝 Back to table of contents
2 - APT (Debian/Ubuntu)
APT = Advanced Package Tool
Essential commands
| Command | Description |
|---|---|
apt update | Update the package list |
apt upgrade | Update the installed packages |
apt install | Install a package |
apt remove | Remove a package |
apt purge | Remove package + configuration |
apt search | Search for a package |
apt show | Information about a package |
apt autoremove | Remove 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 -
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
| APT | DNF/YUM | Description |
|---|---|---|
apt update | dnf check-update | Check for updates |
apt upgrade | dnf upgrade | Update |
apt install | dnf install | Install |
apt remove | dnf remove | Remove |
apt search | dnf search | Search |
apt autoremove | dnf autoremove | Clean 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
| Action | APT (Debian/Ubuntu) | DNF (Fedora/RHEL) |
|---|---|---|
| Update list | apt update | dnf check-update |
| System update | apt upgrade | dnf upgrade |
| Install | apt install pkg | dnf install pkg |
| Remove | apt remove pkg | dnf remove pkg |
| Search | apt search term | dnf search term |
| Info | apt show pkg | dnf info pkg |
| Clean up | apt autoremove | dnf 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
| Aspect | APT | Snap | Flatpak |
|---|---|---|---|
| Isolation | No | Yes | Yes |
| Automatic updates | No | Yes | Optional |
| Size | Small | Large | Large |
| Usage | System | Desktop apps | Desktop apps |
| Rollback | No | Yes | Yes |
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
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
Exercise 2: Package search
# 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 updatebeforeapt install apt upgradeto update the systemapt removevsapt purge(keeping configs)apt autoremoveto clean up- APT = Debian/Ubuntu, DNF = Fedora/RHEL
- Snap/Flatpak for isolated desktop applications
- Compiling from source = last resort