CYGWIN
Sommaire
Généralités :
Cygwin est un projet dont le but est de faire tourner sous MS Windows les programmes Unix. C’est avant tout un portage sous Windows du compilateur GCC. De ce fait on dispose de la plupart des commandes shell classiques dans une "fenêtre DOS".
Cygwin a plus d’un attrait ; entre autres :
- Disposer d’un compilateur C/C++ pour Windows (cf infra l’option -mno-cygwin).
- Pouvoir tester simultanément un traîtement en invite de commande pour Windows et un script shell pour exécution sous Linux et Unix.
- Utiliser la formidable bibliothèque des outils libres GNU. Voir ci-dessous les exemples d’utilisation.
Installation :
Site de Cygwin : http://www.cygwin.com. On télécharge un programme setup.exe qu’on lance ensuite pour choisir le mode d’installation : installation directe des packages depuis le site de Cygwin, ou récupération préalable. Dans ce dernier cas, on procèdera ensuite à l’installation depuis les packages téléchargés (option "…from Local Directory").
On peut commencer par une installation minimale (groupe de packages BASE et SHELLS), qu’on accroîtra au fil des besoins. Si des packages supplémentaires doivent être installés pour cause de dépendance, le programme de setup les détectera et les incluera automatiquement.
On disposera alors d’un raccourci sur le "bureau" pour ouvrir un fenêtre "shell" mais cette ouverture n’est même pas indispensable, il suffit d’avoir "l’invite de commande" DOS et d’avoir fait quelques aménagements. Cygwin étant supposé installé dans c:\cygwin :
- Ouvrir une session donnant les droits d’administrateur
- Modifications dans les variables d’environnement : sous Windows 98, adapter le fichier autoexec.bat ; sous Windows 2000 ou NT : Démarrer > Paramètres > Panneau de configuration > Système > Avancé > Variables d’environnement
- Ajouter une variable système dont le nom est CYGWIN et la valeur ntsec tty
- Ajouter à la fin de la variable PATH la valeur " ;c:\cygwin\bin "
- Appliquer immédiatement cet ajout : set PATH=%PATH%;c:\cygwin\bin
- Les commandes UNIX peuvent maitenant être lancées directement !
Administration :
adduser n’est pas supporté, il faut utiliser la gestion d’utilisateur de Windows. Lancer /etc/group et /etc/passwd pour créer les groupes et psw.
Accès aux unités windows dans le Shell Unix : voir sous /cygdrive, par exemple cd /cygdrive/c puis ls -l liste les dossiers du volume C:\
Programmation :
- Compilation c
- gcc -c nom_programme.c crée un nom_programme.o
- gcc -o nom_programme nom_programme.o crée un nom_programme.exe
- Compilation c pour exécution sous Windows sans Cygwin
- gcc -c -mno-cygwin nom_programme.c
- gcc -o nom_programme -mno-cygwin nom_programme.o
- Commande de vérification de portabilité
- objdump -p nom_programme.exe | grep "DLL Name"
- Compilation c++
- c++ -c nom_programme.cpp
- c++ -o nom_programme nom_programme.o
Erreur à l’exécution "EOF in Backquote substitution" : on a lancé le premier module .o (compilé mais pas lié).
Exemples d’utilisation
À utiliser sans réserve
Avec Cygwin, les classiques et surpuissantes commandes bash deviennent accessibles sous le très répandu système Windows. Voir aussi notre page http://www.dg77.net/tekno/manuel/utilit.htm
Dans certains exemples, on utilise une valeur d’environnement pour indiquer le chemin d’accès aux fonctions de Cygwin. Initialisation : set CYGW=C:\cygwin\bin\ (adapter le chemin à votre propre système). Le but est d’utiliser Cygwin et non pas la commande « DOS » qui porte le même nom.
Horodatage
- %CYGW%date
- Résultat (exemple) : Mon Aug 7 12:41:22 2008
- %CYGW%date --rfc
- Résultat (exemple) : Mon, 07 Aug 2008 12:51:04 +0100
Tri et élimination de doublons dans un fichier texte
SSL
- Somme de contrôle (checksum)
- openssl md5 [fichier] > [sortie.txt]
- Résultat (exemple) : MD5(fichier.txt)= 54fff2e624298228e0717ea239538202
SSH
Liaisons cryptées : Voir la page ad-hoc. [http://www.dg77.net/tekno/securite/sshwin32.htm].
CURL
- Récupération de l’adresse internet sur le site https//ifconfig.me, puis affichage et sortie avec horodatage dans un fichier log quelconque :
- Traîtement de signatures GnuPG