Aller au contenu

Linux

Linux est un système d'exploitation open source, puissant et polyvalent, largement utilisé dans de nombreux domaines :

  • Serveurs (où il domine très largement)
  • Supercalculateurs
  • Systèmes embarqués (smartphones, objets connectés, routeurs, etc.)
  • Ordinateurs personnels

Logo

linux-logo.png

Source image

FOSS (Free and Open Source Software)

Les logiciels libres et open source (FOSS) désignent des programmes dont le code source est accessible, modifiable et redistribuable par quiconque. Contrairement aux logiciels propriétaires, les FOSS garantissent aux utilisateurs :

  • La liberté d'exécuter le logiciel
  • La liberté d'étudier et de modifier son code source
  • La liberté de redistribuer des copies, modifiées ou non

Cette approche favorise la collaboration, la transparence et l'innovation, en permettant à des communautés internationales de contribuer.

Exemples emblématiques de FOSS

  • Systèmes d'exploitation : Linux
  • Serveurs web : Apache
  • Navigateurs web : Firefox
  • Suites bureautiques : LibreOffice

Ces logiciels représentent une alternative stratégique aux solutions propriétaires, avec des avantages en termes de coût, de sécurité, et surtout de liberté d'utilisation.

Logiciel Libre (Free Software)

Philosophie éthique et sociale

  • Mouvement initié par Richard Stallman et la Free Software Foundation (FSF).
  • Défend les quatre libertés fondamentales :
    1. Utiliser le logiciel à toute fin
    2. Etudier le code source
    3. Modifier le logiciel selon ses besoins
    4. Redistribuer le logiciel, modifié ou non

Licences strictes

  • Souvent distribués sous la GNU GPL (General Public License).
  • Objectif : garantir que les libertés des utilisateurs soient préservées même lors de modifications ou redistributions.

Open Source

Approche pragmatique

  • Terme popularisé à la fin des années 1990.
  • Met l'accent sur la collaboration et l'efficacité plutôt que sur l'éthique.
  • Objectif : améliorer la qualité, la rapidité d'innovation et l'interopérabilité des logiciels.

Licences permissives

  • Licences comme MIT ou Apache.
  • Offrent plus de flexibilité, y compris pour intégrer le code open source dans des logiciels propriétaires.

Note

La différence entre logiciel libre et open source réside surtout dans leur philosophie :

  • Logiciel libre → met en avant la liberté des utilisateurs (mouvement éthique et militant).
  • Open source → privilégie une approche pragmatique et collaborative (favoriser l'efficacité et l'innovation).

Les deux courants se rejoignent toutefois sur un principe fondamental : l'accès au code source et la participation collective à son amélioration.

Introduction à Linux

Qui utilise Linux ?

stats-os-desktop-worldwide.png

Source image

stats-os-mobile-worldwide.png

Source image

Android et ChromeOS

Android fait partie de la famille Linux car il est basé sur le noyau Linux, bien qu'il s'agisse d'une version modifiée, optimisée pour les appareils mobiles avec ses propres interfaces et frameworks.

ChromeOS, utilisé principalement sur les Chromebooks, est lui aussi construit sur le noyau Linux, ce qui l'intègre dans la grande famille des systèmes Linux.

Définition

Le terme Linux peut désigner :

  • Le noyau (kernel), cœur du système d'exploitation
  • Les distributions Linux, qui combinent le noyau avec divers logiciels pour former un système complet et utilisable

Le noyau Linux (Kernel)

  • Cœur du système d'exploitation : le noyau interagit directement avec le matériel.
  • Ses rôles principaux :
    • Gestion de la mémoire et des processus
    • Communication entre logiciels et périphériques
    • Sécurité et contrôle des accès
    • Allocation des ressources matérielles

kernel.png

Source image

kernel.png

Source image

Les distributions Linux

Une distribution Linux (ou distro) est un ensemble complet de logiciels construit autour du noyau Linux.

Elle inclut généralement :

  • Le noyau Linux
  • Des bibliothèques système
  • Des utilitaires de base
  • Un gestionnaire de paquets
  • Un système de fichiers hiérarchique
  • Un environnement graphique (selon l'usage)
  • Des applications préinstallées

Chaque distribution a son orientation spécifique :

  • Usage serveur, bureautique, embarqué
  • Destinée au grand public ou aux utilisateurs avancés
  • Généraliste ou spécialisée (sécurité, calcul scientifique, routage, etc.)
  • Adaptée à un matériel particulier (certifications)

linux-distribution-timeline.png

Source image

linux-distribution-type.png

Source image

➡️ List des distributions Linux

Aux origines

  • 1991 : Linux est créé par Linus Torvalds, alors étudiant de 22 ans à l'Université d'Helsinki.
  • Son objectif initial : développer une alternative libre à MINIX, un système éducatif inspiré d'Unix.

    linus-torvalds.png

    Source image

  • Linux s'inspire fortement des principes d'Unix, reconnu pour sa robustesse, sa modularité et sa philosophie « tout est fichier ».

    unix-timeline.png

    Source image

  • Initialement un projet personnel, Linux devient rapidement un projet open source.

  • Grâce à la diffusion du code source, une communauté mondiale de développeurs s'est constituée, contribuant au noyau et aux distributions.
  • Ce modèle de développement collaboratif a fait de Linux un système en évolution permanente, robuste et largement adopté.

Git

En 2005, Linus Torvalds crée Git : un système de gestion de versions décentralisé.

  • Conçu pour suivre les modifications des fichiers et faciliter le travail collaboratif.
  • Motivé par les limites des outils existants lors du développement du noyau Linux.

Aujourd'hui, Git est l'outil incontournable du développement logiciel, utilisé dans d'innombrables projets à travers le monde.

Parts de marché

Linux occupe une place centrale dans l'écosystème informatique mondial, avec des parts de marché très variables selon les secteurs :

Systèmes embarqués

Le noyau Linux équipe la majorité des systèmes embarqués, civils comme militaires :

  • Box TV, routeurs, robots, automates industriels
  • Systèmes aérospatiaux et de défense
  • Domotique et électroménagers
  • Drones, consoles de jeux, automobiles
  • Equipements médicaux (ex. scanners IRM)

Son adaptabilité et sa légèreté en font le choix privilégié pour ces environnements spécialisés.

Mobile (Android est basé sur Linux)

Répartition mondiale :

  • ≈ 75% Android
  • ≈ 25% iOS

Android, bien que fortement modifié par Google, reste basé sur le noyau Linux, ce qui fait de Linux le système le plus déployé au monde via les smartphones.

Desktop

Répartition mondiale :

  • ≈ 5% Linux
  • ≈ 15% macOS
  • ≈ 70% Windows

Linux reste minoritaire sur le poste de travail, mais il dispose d'une forte adoption dans les milieux techniques, éducatifs et chez les développeurs.

Supercalculateurs

100% des supercalculateurs du TOP500 fonctionnent sous Linux.

top500-supercomputer-os.png

Source image

Cette domination s'explique par la flexibilité de Linux, sa stabilité et sa capacité à être optimisé pour des besoins très spécifiques.

Serveurs "publics" (web, mail, DNS, etc.)

Répartition mondiale :

  • ≈ 90% Linux
  • ≈ 10% Windows Server

os-web-server-market-share.png

Source image

Linux est largement privilégié pour l'hébergement web, la messagerie et les services Internet, grâce à sa robustesse, son coût nul en licences, et sa large communauté.

Serveurs privés (authentification, fichiers, bases de données, impression, etc.)

Linux : estimé entre 20% et 40%

Chiffre très difficile à établir avec précision, car les données sur ces infrastructures internes sont rarement publiées.

Hiérarchie du système de fichiers

Le système de fichiers des distributions Linux est organisé autour d'une hiérarchie unique, qui commence toujours par la racine /.

Différence avec Windows

  • Sous Windows, chaque disque ou partition reçoit une lettre de lecteur (C:, D:, etc.).
  • Sous Linux, il n'y a qu'un seul point de départ : la racine /.
  • Tous les fichiers, dossiers et périphériques (disques internes, clés USB, disques externes, ressources réseau) sont intégrés dans une arborescence unique.

Exemple concret

  • La racine / peut être vue comme l'équivalent de « Ce PC » ou « Ordinateur » sous Windows.
  • Mais au lieu de voir des lecteurs séparés, tout est organisé et monté dans un seul arbre de répertoires.
  • Lorsqu'un périphérique est branché (ex. clé USB, disque dur externe), il est « monté » dans la hiérarchie, généralement sous :
    • /media (automount par l'OS)
    • /mnt (montage manuel ou temporaire)

Avantages de ce modèle

  • Simplicité : un seul point d'entrée (/) pour tout le système.
  • Flexibilité : on peut choisir où « accrocher » un périphérique dans l'arborescence.
  • Uniformité : peu importe l'origine des fichiers (disque, réseau, périphérique externe), ils sont accessibles dans la même hiérarchie.

Systèmes de fichiers sous Linux

  • Le système de fichiers par défaut est généralement ext4, fiable et performant.
  • D'autres systèmes sont également utilisés selon les besoins :
    • btrfs : snapshots, haute résilience, gestion avancée des volumes.
    • XFS : optimisé pour les gros fichiers et hautes performances.
    • ZFS : système avancé avec gestion intégrée du RAID, snapshots et vérification d'intégrité.

linux-fhs.png

Source image

Explications détaillées (EN)

Quelques répertoires très utiles sous Linux

L'arborescence Linux est organisée de manière hiérarchique et normalisée, selon la FHS (Filesystem Hierarchy Standard). Voici quelques-uns des répertoires essentiels :

/

  • Le répertoire racine (root directory).
  • Point de départ de toute la hiérarchie.
  • Tous les fichiers, périphériques et systèmes de stockage sont accessibles sous ce répertoire.

/usr/bin

  • Contient les commandes binaires destinées aux utilisateurs ordinaires.
  • Inclut des outils utilisables par tous (ex. ls, cp, grep).
  • Présent par défaut dans la variable d'environnement $PATH, ce qui permet d'exécuter les commandes sans préciser leur chemin complet.

/usr/sbin/

  • Contient des commandes binaires pour l'administration système.
  • Exemples : iptables, apache2, sshd.
  • Nécessitent généralement des droits d'administration (sudo).
  • Egalement inclus dans $PATH pour les administrateurs.

/etc

  • Répertoire des fichiers de configuration système.
  • Exemples :
    • /etc/passwd → gestion des comptes utilisateurs.
    • /etc/hosts → table locale de résolution DNS.
    • /etc/fstab → configuration des systèmes de fichiers montés au démarrage.

/var

  • Contient les fichiers à contenu variable :
    • Logs dans /var/log
    • Emails dans /var/mail
    • Sites web dans /var/www
    • Bases de données ou fichiers temporaires de services.
  • C'est un répertoire souvent surveillé car il peut rapidement gonfler en taille.

/srv

  • Stocke les données propres aux services du système.
  • Exemples :
    • /srv/www → fichiers pour un serveur web,
    • /srv/ftp → fichiers accessibles via FTP.

/tmp

  • Répertoire de fichiers temporaires.
  • Utilisé par les applications pour y stocker des données provisoires.
  • Son contenu est généralement vidé à chaque redémarrage.

/home

  • Répertoire contenant les dossiers personnels des utilisateurs.
  • Chaque utilisateur dispose de son propre sous-répertoire (/home/nom_utilisateur) pour stocker ses fichiers, documents et configurations personnelles.
  • Equivalent des dossiers « Utilisateurs » ou « Mes documents » sous Windows.

Shell

Le shell Linux est une interface en ligne de commande qui permet aux utilisateurs d'interagir directement avec le système d'exploitation.

shell.png

Fonctionnement

  • Le shell interprète les commandes saisies par l'utilisateur et les transmet au système pour exécution.
  • Il permet aussi d'automatiser des tâches grâce à des scripts, c'est-à-dire des fichiers contenant une suite de commandes exécutées séquentiellement.

shell-workflow.png

Source image

Principaux types de shells

Au fil du temps, plusieurs shells ont été développés, chacun avec ses spécificités :

  • Bourne Shell (sh) : le shell d'origine, simple et efficace.
  • Bourne Again Shell (bash) : évolution de sh, le plus utilisé par défaut dans la plupart des distributions Linux.
  • C Shell (csh) : introduit une syntaxe inspirée du langage C.
  • Korn Shell (ksh) : combine des fonctionnalités de sh et csh, apprécié dans les environnements Unix traditionnels.
  • Z Shell (zsh) : très puissant et personnalisable, avec autocomplétion avancée.
  • Friendly Interactive Shell (fish) : axé sur la convivialité, avec suggestions automatiques et coloration syntaxique intégrées.

shell-history.png

Source image

Shell par défaut

  • bash est le shell le plus couramment utilisé par défaut dans Linux et dans macOS (jusqu'à la version 10.15).
  • D'autres distributions modernes adoptent zsh comme alternative (par exemple macOS depuis Catalina).

bash dans Windows

Grâce au Windows Subsystem for Linux (WSL), il est possible d'exécuter un shell bash directement dans Windows, offrant ainsi aux utilisateurs un environnement Linux complet sans machine virtuelle ni double démarrage.

Commandes courantes

L'utilisation de Linux repose en grande partie sur la ligne de commande, qui permet de gérer efficacement fichiers, répertoires et processus. Voici un aperçu des commandes essentielles :

linux-cmd.png

Source image

Ubuntu Manpage

Navigation et gestion des fichiers

  • ls → liste le contenu d'un répertoire.
  • pwd → affiche le répertoire courant (Print Working Directory).
  • cd → change de répertoire.
  • mkdir → crée un répertoire.
  • mv → déplace ou renomme des fichiers/répertoires.
  • cp → copie des fichiers/répertoires.
  • rm → supprime des fichiers/répertoires (⚠️ irréversible).
  • ln → crée des liens physiques ou symboliques.

Consultation de fichiers

  • cat → affiche le contenu d'un fichier texte.
  • less → affiche le contenu avec défilement interactif.
  • tail → affiche les dernières lignes.
    • Souvent utilisé pour suivre les logs en temps réel avec tail -f.

Editeurs de texte

  • nano → éditeur simple et intuitif.
  • vi → éditeur puissant, riche en fonctionnalités.
  • vim → version améliorée de l'historique vi.

Recherche

  • find → recherche de fichiers/répertoires selon divers critères (nom, taille, date).
  • grep → recherche de motifs dans des fichiers ou flux de données.

Gestion des droits et permissions

  • chmod → modifie les permissions d'un fichier/répertoire.
  • chown → modifie le propriétaire ou le groupe d'un fichier/répertoire.

Exécution et privilèges

  • man → affiche la documentation des commandes (man ls, man grep, etc.).
  • sudo → exécute une commande avec des droits d'administrateur.

Pipes et redirections

Le shell Linux permet de chaîner des commandes et de rediriger les flux d'entrée et de sortie. C'est un des points forts de l'utilisation en ligne de commande.

Flux standards

  • stdin (0) : entrée standard (par défaut, le clavier).
  • stdout (1) : sortie standard (par défaut, l'écran).
  • stderr (2) : sortie d'erreur (par défaut, l'écran).

Redirections

> : redirige la sortie vers un fichier (écrase le contenu).

echo "Hello" > fichier.txt # écrit "Hello" dans fichier.txt

>> : redirige la sortie vers un fichier (ajoute à la fin).

echo "World" >> fichier.txt # ajoute "World" à la fin du fichier

< : redirige l'entrée depuis un fichier.

sort < fichier.txt # trie le contenu de fichier.txt

2> : redirige les erreurs vers un fichier.

ls /dossier_inexistant 2> erreurs.log # enregistre l'erreur dans erreurs.log

&> : redirige stdout et stderr vers le même fichier.

commande &> sortie.log

Pipes (|)

Le pipe connecte la sortie d'une commande à l'entrée d'une autre :

cat fichier.txt | grep "mot" # affiche uniquement les lignes contenant "mot"

Exemples pratiques :

ps aux | grep ssh # filtre les processus contenant "ssh"
dmesg | less # affiche les logs noyau dans un pager
ls -l | wc -l # compte le nombre de fichiers dans un répertoire

Soft Link (Lien symbolique)

  • Comparable à un raccourci Windows.
  • Contient uniquement le chemin d'accès vers le fichier cible.
  • Si le fichier original est supprimé, le lien symbolique devient cassé (dangling link).

Exemple

ln -s /home/user/document.txt lien_symbolique.txt

lien_symbolique.txt pointe vers document.txt.

Si document.txt est supprimé, lien_symbolique.txt ne fonctionne plus.

Hard Link (Lien physique)

  • Comparable à plusieurs entrées dans l'index d'une bibliothèque qui renvoient toutes au même livre physique.
  • Pointe vers le même inode que le fichier original → c'est le même fichier avec plusieurs noms possibles.
  • Si l'un des fichiers est supprimé, les autres continuent d'exister tant qu'au moins un lien reste présent.

Exemple

ln /home/user/document.txt lien_physique.txt

document.txt et lien_physique.txt sont deux noms différents pour le même contenu.

Même inode → modification dans l'un se reflète dans l'autre.

inode

  • Identifiant unique attribué à chaque fichier/répertoire.
  • Contient les métadonnées (taille, permissions, propriétaire, horodatages, emplacement sur disque).
  • Les hard links partagent le même inode.
  • Les soft links ont leur propre inode, qui pointe vers l'inode cible.

linux-file-inode.png

Source image

linux-link-demo.png

Utilisateur root

L'utilisateur root est le superutilisateur des systèmes Linux et Unix. Il dispose de privilèges administratifs complets, lui offrant un accès total au système, y compris la possibilité de modifier des fichiers critiques. Ce pouvoir étendu implique une grande responsabilité : une mauvaise manipulation en tant que root peut compromettre la stabilité, la sécurité ou même la disponibilité du système. C'est pourquoi l'accès direct à ce compte est souvent restreint et réservé aux tâches d'administration essentielles.

  • Accès complet : Root a un accès illimité à tous les fichiers, répertoires et commandes du système. Il peut créer, modifier ou supprimer des fichiers système sensibles, installer des logiciels ou configurer des services critiques.

  • Privilèges administratifs : Root gère l'ensemble du système : ajout ou suppression d'utilisateurs, configuration du réseau, gestion des périphériques et services, surveillance des ressources, etc.

  • Accès sécurisé : Pour limiter les risques, l'accès direct au compte root est souvent désactivé ou restreint. A la place, les administrateurs utilisent les commandes su ou sudo pour obtenir temporairement les privilèges nécessaires.

  • Utilisation minimale : Il est fortement recommandé de limiter l'usage du compte root aux seules tâches administratives critiques. Les opérations quotidiennes doivent être réalisées avec un compte utilisateur standard afin de réduire les risques d'erreurs irréversibles.

Note

La commande su (switch user)

  • Permet de basculer vers un autre utilisateur, en particulier vers root.
  • Nécessite le mot de passe de l'utilisateur ciblé.
  • Ouvre une nouvelle session shell avec ses privilèges.
  • On en sort avec la commande exit.

La commande sudo (substitute user do)

  • Autorise un utilisateur du groupe sudoers à exécuter une commande ponctuelle avec des privilèges root.
  • L'utilisateur s'authentifie avec son propre mot de passe, pas celui de root.
  • Exemple : sudo apt update met à jour les dépôts sur Ubuntu/Debian.

Particularité Ubuntu et dérivés

  • Le compte root est désactivé par défaut (aucun mot de passe défini).
  • Les administrateurs doivent utiliser sudo pour obtenir des droits élevés, renforçant la traçabilité et la sécurité.

Permissions

Sous Linux, les permissions constituent un mécanisme fondamental de contrôle d'accès qui définit qui peut accéder à quelles ressources (fichiers, répertoires, programmes) et quelles actions ces utilisateurs sont autorisés à effectuer.

Utilisateurs, groupes et autres

Les permissions s'appliquent à trois catégories d'utilisateurs :

  • Propriétaire : l'utilisateur qui possède la ressource.
  • Groupe : les membres du groupe propriétaire du fichier ou répertoire.
  • Autres : tous les autres utilisateurs du système.

Types de permissions

Trois droits de base existent :

  • Lecture (r) → permet de lire le contenu (ex. : ouvrir un fichier texte, lister un répertoire).
  • Ecriture (w) → autorise la modification (ex. : modifier un fichier, ajouter/supprimer des fichiers dans un répertoire).
  • Exécution (x) → autorise l'exécution (ex. : lancer un script/programme ou entrer dans un répertoire).

Représentation des permissions

Les permissions apparaissent sous forme symbolique dans trois groupes de trois caractères :

Exemple → rwxr-xr--

  • rwx : droits du propriétaire (lecture, écriture, exécution).
  • r-x : droits du groupe (lecture, exécution).
  • r-- : droits des autres (lecture seule).

Le caractère - signifie absence de permission.

Commandes principales

  • chmod → change les permissions (ex. : chmod +r fichier.txt ajoute la lecture pour tous).
  • chown → change le propriétaire du fichier.
  • chgrp → change le groupe associé.

Permissions spéciales

  • Setuid (SUID) : permet à un exécutable de s'exécuter avec les privilèges du propriétaire du fichier (souvent root).
  • Setgid (SGID) : permet aux fichiers créés dans un répertoire d'hériter du groupe de ce répertoire.
  • Sticky bit : appliqué à un répertoire, empêche un utilisateur de supprimer un fichier qui ne lui appartient pas (ex. : /tmp).

Note

Pour visualiser les permissions → ls -al (ou ll sur certaines distributions).

shell-ll.png

shell-permission.png

Source image

shell-permission-calc.png

Source image

Exemple

chmod 765 script.sh # propriétaire : rwx / groupe : rw- / autres : r-x

Actions selon les permissions

Sur un fichier

  • r (lecture) → voir le contenu (cat, less, more).
  • w (écriture) → modifier, ajouter ou supprimer du contenu.
  • x (exécution) → exécuter un script ou un programme.

Sur un répertoire

  • r (lecture) → lister le contenu du dossier (ls).
  • w (écriture) → créer, supprimer ou renommer des fichiers/sous-répertoires.
  • x (exécution) → entrer dans le répertoire (cd).

Ubuntu

Ubuntu est une distribution GNU/Linux populaire, développée et maintenue par Canonical Ltd. Elle est largement reconnue pour sa convivialité, sa stabilité et son orientation vers la simplicité d'utilisation, ce qui en fait l'une des distributions les plus répandues auprès du grand public, mais aussi dans le monde professionnel.

Facilité d'utilisation

  • Ubuntu se distingue par son interface utilisateur intuitive, utilisant GNOME comme environnement de bureau par défaut (depuis 2017, après avoir abandonné Unity).
  • Il est pensé pour être accessible aux débutants tout en restant suffisamment puissant pour des utilisateurs avancés.

Cycle de publication régulier

  • Ubuntu suit un calendrier clair :

    • Versions LTS (Long Term Support) tous les deux ans, avec 5 ans de support officiel. Ces versions privilégient la stabilité.
    • Versions intermédiaires publiées tous les six mois, avec 9 mois de support, destinées aux utilisateurs qui veulent les nouveautés plus rapidement.

    ubuntu-release.png

    Source image

Gestion des logiciels

  • Ubuntu utilise le gestionnaire de paquets APT (Advanced Package Tool) basé sur les paquets .deb.
  • Les utilisateurs disposent aussi du Centre de logiciels Ubuntu, qui propose une interface graphique pour installer, mettre à jour ou supprimer facilement des applications.
  • Les dépôts officiels offrent des milliers de logiciels maintenus et sécurisés.

Sécurité et mises à jour

  • Ubuntu reçoit des mises à jour régulières, incluant des correctifs de sécurité et des patchs logiciels.
  • Le système intègre sudo pour limiter l'usage direct du compte root, renforçant ainsi la sécurité.
  • Canonical propose aussi des services payants comme Ubuntu Pro, qui étend le support de sécurité à 10 ans pour les environnements critiques.

Vaste communauté et support

  • Ubuntu bénéficie d'une communauté mondiale très active, avec forums, wikis, tutoriels et documentations abondantes.
  • Canonical fournit également un support professionnel pour les entreprises.

Compatibilité matérielle

  • Ubuntu prend en charge une large gamme de matériel et est certifié par de nombreux constructeurs (Dell, Lenovo, HP).
  • Il est disponible sur PC de bureau, serveurs, cloud, systèmes embarqués et même mobiles.

Engagement open source

  • Ubuntu est basé sur Debian et s'appuie sur la philosophie du logiciel libre.
  • Canonical encourage la transparence et contribue à de nombreux projets open source.

Personnalisation

  • Ubuntu offre une grande liberté : possibilité de changer d'environnement de bureau (KDE Plasma, XFCE, MATE, etc.) et d'adapter l'apparence, les extensions et les fonctionnalités selon les besoins.

Note

Ubuntu existe en plusieurs éditions adaptées à différents usages :

  • Desktop : pour les ordinateurs personnels.
  • Server : pour les serveurs et environnements professionnels.
  • Cloud : optimisée pour les infrastructures cloud.
  • Core : version minimaliste pour l'IoT et les systèmes embarqués.

Package

Dans le contexte de Linux, un paquet (ou package en anglais) est une unité logicielle qui regroupe l'ensemble des fichiers et informations nécessaires à l'installation, à la configuration et à la gestion d'un logiciel ou d'une bibliothèque.

Contenu d'un package

  • Fichiers exécutables (binaires du programme).
  • Fichiers de configuration.
  • Documentation et manuels.
  • Ressources supplémentaires (icônes, bibliothèques, etc.).

Métadonnées

Chaque package inclut des métadonnées décrivant :

  • Son nom et sa version
  • Ses dépendances (autres paquets requis)
  • Sa taille et son auteur
  • Une brève description de son utilité

Dépôts (repositories)

  • Les paquets sont stockés dans des dépôts officiels (repositories), maintenus par la distribution Linux.
  • Ils garantissent généralement la sécurité et la compatibilité des logiciels fournis.
  • Certains dépôts externes ou PPA (Personal Package Archives) permettent d'accéder à des versions plus récentes ou spécialisées.

Gestion des dépendances

  • Lorsqu'un paquet est installé, le gestionnaire de paquets vérifie automatiquement ses dépendances.
  • Exemple : installer nginx téléchargera aussi les bibliothèques nécessaires à son exécution.

Outils de gestion de paquets selon la distribution

  • Debian / Ubuntu : APT (apt, dpkg)
  • Red Hat / Fedora / CentOS : YUM, DNF, RPM
  • Arch Linux : Pacman
  • openSUSE : Zypper

Commande apt (Ubuntu/Debian)

Installation d'un logiciel

sudo apt install nginx

Recherche d'un paquet

apt search php

Informations détaillées sur un paquet

apt show nginx

Documentation : packages.ubuntu.com

Mises à jour du système

sudo apt update        # Met à jour la liste des paquets
sudo apt full-upgrade  # Met à jour les logiciels installés
sudo apt autoremove    # Supprime les paquets devenus inutiles

Mise à niveau vers une version majeure d'Ubuntu

sudo do-release-upgrade

Gestion des services

Sous Ubuntu (et la plupart des distributions modernes), la gestion des services est assurée par systemd, qui a remplacé l'ancien système SysV init.

Systemd offre une méthode plus rapide, flexible et centralisée pour gérer les services, processus et démons.

Info

Processus

Un processus est toute exécution d'un programme (application utilisateur ou tâche système).

C'est l'unité de base de l'activité dans un système d'exploitation.

Exemple : lancer firefox crée un processus Firefox.

Service

Un service est une fonctionnalité offerte de façon continue par le système (ex. serveur web, DNS, base de données).

Un service est donc représenté techniquement par un ou plusieurs processus qui tournent en arrière-plan.

Exemple : le service nginx est géré par un processus nginx.

Démon (daemon)

Un démon est un type particulier de processus :

  • Il tourne en arrière-plan, souvent dès le démarrage du système.
  • Il n'a pas d'interface directe avec l'utilisateur (pas de fenêtre graphique).
  • Les démons implémentent généralement des services.

Exemple : sshd est le démon qui fournit le service SSH.

En résumé

  • Tous les démons sont des processus.
  • Beaucoup de services sont fournis par des démons.
  • Mais tous les processus ne sont pas des démons (ex. : Firefox, LibreOffice, etc.).

Vérifier l'état d'un service

Permet de savoir si un service est actif, inactif ou en échec :

systemctl status nom-du-service

Exemple :

systemctl status nginx

Démarrer un service

Lancer un service qui est arrêté :

sudo systemctl start nom-du-service

Arrêter un service

Mettre fin à l'exécution d'un service :

sudo systemctl stop nom-du-service

Redémarrer un service

Redémarrer un service (souvent nécessaire après une modification de configuration) :

sudo systemctl restart nom-du-service

Activer un service au démarrage

Pour qu'un service démarre automatiquement au boot :

sudo systemctl enable nom-du-service

Désactiver un service au démarrage

Empêcher un service de se lancer automatiquement :

sudo systemctl disable nom-du-service

Afficher les journaux d'un service

Systemd utilise journald pour la journalisation. Pour afficher les logs d'un service :

journalctl -u nom-du-service

Liens utiles

Official Ubuntu Documentation

Documentation Ubuntu en français (par la communauté)

Méthodologie pour résoudre un problème

rtfm.png

Source image

1. Observer

  • Identifier ce qui se passe réellement.
  • Décrire précisément ce qui ne fonctionne pas.
  • Si un message d'erreur apparaît, le noter exactement (copier/coller ou capture).

2. Comprendre

  • Revenir sur les actions effectuées avant l'apparition du problème (commandes, configurations, mises à jour).
  • Déterminer les causes possibles : bug logiciel, erreur humaine, problème matériel, etc.
  • Poser la question : pourquoi cela ne fonctionne-t-il pas comme prévu ?

3. Rechercher

  • Consulter la documentation officielle.
  • Utiliser un moteur de recherche ou une IA pour trouver des cas similaires.
  • Explorer des forums techniques, tickets de bug ou communautés spécialisées.
  • Demander de l'aide à un collègue ou à la communauté si nécessaire.

4. Résoudre

  • Appliquer les solutions candidates de manière progressive.
  • Tester après chaque tentative pour valider l'efficacité.
  • Documenter la solution retenue pour référence future.

5. Documenter

  • Noter la solution trouvée pour ne pas répéter la recherche plus tard.