La magie des liens sous Windows Vista/7

Table des matières

Les liens, dans les systèmes de gestion de fichiers j'entends, tout le monde connait. Pourtant, nous allons quand même revenir sur deux cas, sous Windows, dans lesquels ils peuvent s'avérer utiles : avec Squid et avec Daemon Tools/Y.A.S.U. Pour aborder cet article, je vous conseille de savoir la différence qu'il y a entre un lien symbolique et un hard link (lien matériel en français).

Cas pratique n°1 : Squid

Pour télécharger une version de Squid pour Windows (et en même temps avoir les instructions d'installation :D ), je vous conseille ce site : Acme Consulting - Squid 2.7 for Windows. Suivons les instructions ensembles :

Extract the binary archive in the desired directory (default c:\squid)

Hum ... Je sais pas pour vous mais moi j'aime bien que mes programmes soient bien rangés. Ainsi je vais mettre Squid dans "C:\Program Files (x86)\Squid".

Copy and rename the follwing files:

Rien de compliqué ici ... Je vous attends pour passer à la suite :)

Edit the squid.conf and change if needed the c:/squid path (use path with '/' char, NOT '\')

Ça ne sert à rien de suivre cette consigne puisque, comme préciser plus bas sur le site :

Paths with spaces (like C:\Programs Files\Squid) are NOT supported by Squid

Continuons :

Manually create ALL the directories specified in squid.conf, except the contents of the cache directory

En fait, il n'y a qu'un seul dossier à créer : /var/cache. Mais au cas où cela changerai à l'avenir, je vous conseille de lire le fichier de configuration. Ce fichier contient beaucoup de commentaires. Qu'à cela ne tienne : voici un script PHP fait il y quelques années par Dodo et que je viens d'améliorer, qui affiche les lignes du fichier de configuration qui ne sont ni commentées ni vides :

<?php
	$fichierDeConfiguration = fopen('squid.conf', 'r');

	while ($ligne = fgets($fichierDeConfiguration))
	{
		if (($ligne[0] != '#') AND (bin2hex($ligne[0]) != '0a'))
		{
			$tableau[] = $ligne;
		}
	}

	foreach($tableau as $ligneOK)
	{
		echo $ligneOK . '<br /><br />';
	}

	fclose($fichierDeConfiguration);
?>

Ce script est sans prétention. Oui, nous aurions pu utiliser une regex pour chercher tous les répertoires mentionnés dans le fichier de configuration puis exclure les répertoires commentés. Mais nous avons fait autrement :D

squid -i [-f configfile] [-n servicename] (installs the servicename Squid service using the configfile configuration file, default configfile is "c:/squid/etc/squid.conf", default servicename is "Squid")

Rien de spécial ici.

squid -z [-f configfile] (creates the cache directories)

C'est là que commence les ennuis puisque nous obtenons un joli message :

FATAL: MIME Config Table c:/squid/etc/mime.conf: (2) No such file or directory
Squid Cache (Version 2.7.STABLE8): Terminated abnormally.
CPU Usage: 0.016 seconds = 0.000 user + 0.016 sys
Maximum Resident Size: 5732 KB
Page faults with physical i/o: 1523

abnormal program termination

Squid cherche le fichier mime.conf dans C:\Squid. Si nous modifions la variable mime_table dans le fichier de configuration, Squid la refusera car elle contiendra des espaces. En attendant, nous ne pouvons pas lancer Squid.

La solution est de créer un lien réel de C:\Squid vers C:\Program Files (x86)\Squid (dans la terminologie Windows/NTFS, on appelle cela une jonction de répertoire) :

c:\>mklink /D /H /J Squid "C:\Program Files (x86)\Squid"
Jonction créée pour Squid <<===>> C:\Program Files (x86)\Squid

Ce coup-là, Squid fonctionne :

2010/08/17 17:41:07| Creating Swap Directories

La fin de l'installation, à savoir la création d'un service, ne pose pas de problèmes particuliers. Je vous laisse donc continuer tout seul.

Nous avons donc bien rangé notre programme dans le répertoire prévu à cet effet. Seul un lien traine dans C:\ .

Cas pratique n°2 : Daemon Tools et Y.A.S.U.

Avant de commencer, je rappelle à tous les bien-pensants que Y.A.S.U. n'est pas utilisable que dans des activités illégales ;) . Il peut par exemple servir à contourner les protections Securom et Safedisc dans le cas où l'on utilise des mini-images afin de ne pas avoir à insérer le CD/DVD dans le lecteur à chaque fois que l'on souhaite jouer, dans le but de préserver la durée de vie du CD/DVD original du jeu et de notre lecteur CD/DVD.

Depuis les versions postérieurs à la version 4.30 de Daemon Tools, Y.A.S.U. ne semble plus fonctionner en mettant un message "Unable to locate the file "daemon.exe" or "dtpro.exe". Please copy "YASU.exe" to your DAEMON Tools Lite/Pro directory, then run the application again."

La première solution est de renommer le fichier DTLite.exe en daemon.exe. Je sais pas ce que vous en pensez, mais cette solution manque de piment ;) .

La deuxième solution est de créer un lien. Mais plutôt que de le faire depuis l'interface graphique, faisons le depuis la ligne de commande :

C:\Program Files (x86)\DAEMON Tools Lite>mklink daemon.exe DTLite.exe
Lien symbolique créé pour daemon.exe <<===>> DTLite.exe

ÉDIT du 14/05/2011 à 17h20 : Pour créer un lien réel sous XP, il faut utiliser la commande fsutil. Ainsi, pour l'exemple précédent, il suffit de faire :

C:\Program Files (x86)\DAEMON Tools Lite>fsutil hardlink create daemon.exe DTLite.exe

Aucun commentaire.

Ajoutez votre commentaire