Installer curl sur Debian
Deux commandes suffisent, sur Debian 11, 12 comme 13. Le reste de cette page
traite ce qui coince vraiment : l'absence de sudo dans un conteneur,
le paquet introuvable après une installation minimale, et la construction
d'une requête qui fait autre chose qu'un simple GET.
sudo apt update
sudo apt install curl
Puis curl --version pour confirmer. Si la commande répond un numéro
de version, c'est terminé — passez au générateur.
Générateur de commande curl
Décrivez la requête, la commande se construit au fur et à mesure. Rien n'est envoyé nulle part : tout est calculé dans votre navigateur.
curl -L https://api.exemple.fr/v1/articles Installer curl selon le contexte
Debian 11, 12 et 13
La commande ne change pas d'une version à l'autre. Ce qui change, c'est la version de curl que vous obtenez, puisque chaque Debian fige la sienne pour toute sa durée de vie.
| Debian | Nom | Version de curl |
|---|---|---|
| 13 | Trixie | 8.x |
| 12 | Bookworm | 7.88 |
| 11 | Bullseye | 7.74 |
Une version plus récente que celle du dépôt se compile depuis les sources — au prix des mises à jour de sécurité, qui ne viendront alors plus toutes seules. Sur un serveur exposé, c'est rarement le bon échange.
En root, sans sudo
Dans un conteneur ou sur une installation neuve, sudo n'existe
souvent pas. Vous êtes déjà root : retirez-le.
apt update && apt install -y curl Dans une image Docker
Nettoyer le cache dans la même instruction évite de le figer dans une couche
de l'image, qu'un rm ultérieur n'allègera plus.
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/* Vérifier ce qui est installé
curl --version
curl -sI https://example.com | head -n 1 La première ligne donne la version et les protocoles compilés. La seconde prouve que la couche TLS fonctionne, ce que la version seule ne dit pas.
curl ou wget : lequel installer
Les deux téléchargent, et c'est à peu près le seul point commun. Sur une Debian minimale, aucun des deux n'est présent — autant installer celui dont vous avez réellement besoin.
| curl | wget | |
|---|---|---|
| Ce qu'il fait par défaut | affiche la réponse | écrit un fichier |
| Suit les redirections | non, il faut -L | oui |
| Méthodes HTTP | toutes | GET et POST |
| En-têtes et authentification | oui, c'est son terrain | limité |
| Téléchargement récursif | non | oui |
| Reprise après coupure | -C - | oui, par défaut |
En pratique : curl pour parler à une API, wget pour aspirer des fichiers. Si vous testez une réponse JSON, ajoutez un en-tête ou envoyez un corps, la question ne se pose pas.
curl dans un script : quatre réflexes
Une commande tapée au clavier et la même commande dans un fichier qui tourne à 4 h du matin n'ont pas les mêmes exigences. Voici ce que j'ajoute systématiquement, chacun pour une raison que j'ai apprise en le payant.
curl -fsSL --max-time 20 \
-H "Authorization: Bearer $JETON" \
https://api.exemple.fr/etat | Option | Pourquoi elle est là |
|---|---|
-f | Sans elle, curl rend le code de sortie 0 sur une 404 ou une 500. Le script enchaîne comme si tout allait bien, avec une page d'erreur dans la variable. |
-s | Coupe la barre de progression, qui pollue les journaux et n'a aucun lecteur. |
-S | Le complément indispensable de -s : il réaffiche les vraies
erreurs. Seul, -s rend un échec parfaitement silencieux. |
--max-time | Sans délai, un serveur qui ne répond plus laisse le script suspendu indéfiniment. C'est la panne la plus pénible à diagnostiquer : rien n'échoue, rien n'avance. |
Tout ce que vous tapez atterrit dans l'historique du shell, et sur beaucoup
de systèmes la ligne de commande complète est lisible par les autres
utilisateurs pendant l'exécution. Passez par une variable d'environnement,
ou par -H @fichier avec un fichier en droits 600. La même
remarque vaut pour -u utilisateur:motdepasse.
Ce qui bloque le plus souvent
La liste des paquets est vide ou périmée : c'est l'état d'une installation
minimale qui n'a jamais vu ses dépôts. apt update avant
apt install, dans cet ordre, résout le cas presque toujours.
Si le message persiste, vérifiez que /etc/apt/sources.list
contient bien les dépôts principaux et pas seulement le CD d'installation.
Vous êtes déjà root, dans un conteneur ou sur un système sans sudo installé.
Retirez sudo de la commande.
Le magasin de certificats racines manque ou est périmé — fréquent sur une
image minimale. La réponse est apt install ca-certificates,
pas -k : désactiver la vérification fait disparaître le message
en gardant le problème.
L'adresse répond probablement une redirection. Sans -L, curl
affiche le corps vide d'un 301 et s'arrête là. Ajoutez -L, ou
-i pour voir le code de statut réellement reçu.
Aide-mémoire des options
| Option | Effet |
|---|---|
-L | suit les redirections |
-i | affiche les en-têtes avec le corps |
-I | n'envoie qu'un HEAD, en-têtes seuls |
-o fichier | écrit la réponse dans un fichier |
-O | garde le nom de fichier distant |
-s | silencieux, sans barre de progression |
-f | code de sortie non nul sur erreur HTTP |
-X | impose la méthode HTTP |
-H | ajoute un en-tête |
-d | envoie un corps, et bascule en POST |
-F | envoie un formulaire multipart |
-u | authentification utilisateur:mot de passe |
--max-time | durée totale maximale |
-v | détaille la connexion et la négociation TLS |
Questions fréquentes
Faut-il sudo pour installer curl sur Debian ?
Oui, sauf si vous êtes déjà root. apt install écrit dans des dossiers système. Sur une image Docker ou un conteneur, vous êtes root par défaut : la commande passe sans sudo, et sudo n'existe souvent même pas.
Quelle différence entre apt et apt-get pour installer curl ?
Aucune sur le résultat. apt est l'interface conçue pour les humains, apt-get celle qui garantit un comportement stable dans les scripts. Utilisez apt au clavier, apt-get dans un fichier qui tourne sans vous.
curl est-il installé par défaut sur Debian ?
Non. Une installation Debian minimale, et la plupart des images Docker officielles, ne l'embarquent pas. C'est wget qui est parfois présent à la place — les deux ne se remplacent pas exactement.
Comment installer curl sur Debian sans connexion internet ?
Récupérez le paquet .deb correspondant à votre version depuis un poste connecté, ainsi que ses dépendances, puis installez-le avec dpkg -i suivi de apt install -f pour compléter ce qui manque.
Quelle version de curl sur Debian 12 et Debian 13 ?
Debian 12 (Bookworm) fournit curl 7.88, Debian 13 (Trixie) fournit curl 8.x. Pour une version plus récente que celle des dépôts, il faut compiler depuis les sources — ce qui vous prive des mises à jour de sécurité automatiques.
Qui écrit ici
Nicolas Berthier
administrateur système, en autodidacte
J'ai commencé par héberger un serveur de jeu pour une bande de copains, sur une machine de récupération. C'est en le cassant régulièrement que j'ai appris le reste : les paquets, les certificats, les journaux qu'on lit à 2 h du matin.
Aujourd'hui j'administre mes propres serveurs et j'écris ici ce que j'aurais voulu trouver : la commande d'abord, l'explication ensuite, et le piège qui m'a coûté une soirée.
Ce que vous trouverez sur ce site
Des notes sur les serveurs et la ligne de commande, au sens large : Linux et ses distributions, l'hébergement et ce qui le distingue d'un fournisseur à l'autre, le réseau, les certificats, les outils qu'on finit par utiliser tous les jours sans jamais les avoir vraiment appris.
Le site a longtemps accumulé des articles écrits pour occuper le terrain plutôt que pour servir à quelqu'un. Ils ont été supprimés — tous. Ce qui sera publié ici désormais partira d'un problème rencontré pour de bon, avec la commande qui le règle en haut de page et l'explication en dessous. Quand un outil se prête à autre chose qu'un texte, comme le générateur plus haut, il vaut mieux que le texte.
Une remarque, une erreur à signaler, une commande qui ne se comporte pas comme décrit ici : c'est utile, et ça finit corrigé sur la page.