dedigo.fr

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.

Options
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.

DebianNomVersion de curl
13Trixie8.x
12Bookworm7.88
11Bullseye7.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.

curlwget
Ce qu'il fait par défautaffiche la réponseécrit un fichier
Suit les redirectionsnon, il faut -Loui
Méthodes HTTPtoutesGET et POST
En-têtes et authentificationoui, c'est son terrainlimité
Téléchargement récursifnonoui
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
OptionPourquoi 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.

Le jeton ne se met jamais en clair dans la commande

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

E: Unable to locate package curl

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.

bash: sudo: command not found

Vous êtes déjà root, dans un conteneur ou sur un système sans sudo installé. Retirez sudo de la commande.

curl: (60) SSL certificate problem

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.

La commande ne renvoie rien du tout

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

OptionEffet
-Lsuit les redirections
-iaffiche les en-têtes avec le corps
-In'envoie qu'un HEAD, en-têtes seuls
-o fichierécrit la réponse dans un fichier
-Ogarde le nom de fichier distant
-ssilencieux, sans barre de progression
-fcode de sortie non nul sur erreur HTTP
-Ximpose la méthode HTTP
-Hajoute un en-tête
-denvoie un corps, et bascule en POST
-Fenvoie un formulaire multipart
-uauthentification utilisateur:mot de passe
--max-timedurée totale maximale
-vdé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.