3 votes

Pourquoi avoir des liens symboliques entre des fichiers dans des dossiers de même profondeur ?

J'ai remarqué que sous MacOS, le /usr/local/Cellar contient des binaires installés à l'aide de Homebrew, et que le dossier /usr/local/opt a des liens symboliques vers un certain nombre de ces binaires. Je n'ai pas beaucoup utilisé les liens symboliques, mais d'après ce que j'ai compris, leur but est de créer un lien à un emplacement pratique vers un fichier/dossier qui agit comme une copie de ce fichier/dossier, sans avoir à déplacer ce fichier/dossier de son emplacement d'origine.

Mes questions sont donc les suivantes :

  1. Ma compréhension des liens symboliques est-elle correcte ?

  2. Si oui, pourquoi créer des liens symboliques dans un dossier ( /usr/local/opt ) vers des binaires dans un autre dossier ( /usr/local/Cellar ) qui se trouve à un emplacement/une profondeur similaire dans la structure du fichier ? Dans quelles circonstances utiliseriez-vous ces liens symboliques alors que vous ne pourriez pas simplement utiliser les binaires ?

1voto

Nimesh Neema Points 44385

Ma compréhension des liens symboliques est-elle correcte ?

Oui. Le lien symbolique, comme son nom l'indique, agit comme un lien vers un fichier/dossier situé ailleurs. Accéder au lien équivaut généralement à accéder au fichier/dossier.

Si oui, pourquoi créer des liens symboliques dans un dossier ( /usr/local/opt ) vers des binaires dans un autre dossier ( /usr/local/Cellar ) qui se trouve à un emplacement/une profondeur similaire dans la structure du fichier ?

Si vous observez attentivement dans ce cas particulier, les binaires correspondant à toutes les différentes formules installées se trouvent dans des dossiers différents. Il y a un dossier séparé correspondant à chaque formule installée sous le nom de /usr/local/Cellar . Dans le dossier de la formule se trouve un dossier contenant le numéro de version, suivi des fichiers installés pour la formule.

Via un lien symbolique sous /usr/local/opt les lieux d'installation de toutes les formules sont réunis en un seul endroit.

Pour connaître le but exact du pourquoi /usr/local/opt est créé par Homebrew, vous pouvez vous référer à ce post sur Stack Overflow :

1voto

Robert Wilkinson Points 570

Je ne suis pas très familier avec Homebrew, mais le modèle que vous décrivez est celui que j'ai vu utiliser par d'autres installateurs de logiciels : il permet de rendre plusieurs binaires disponibles dans un seul répertoire, tout en permettant de savoir facilement de quel progiciel ils proviennent. La capture d'écran ci-dessous provient d'un article sur le Homebrew et montre une liste du répertoire "/usr/local/opt", avec les différents liens symboliques pointant vers des sous-répertoires de "/usr/local/Cellar". Alors que la plupart des binaires pointent vers un paquetage du même nom, ce n'est par exemple pas le cas de "npm", où le lien symbolique permet de dire facilement qu'il fait partie du même paquetage que "node" et "nodejs". Les liens symboliques sont utilisés ici à des fins d'organisation du système de fichiers : tous les fichiers d'un paquet sont conservés ensemble à un seul endroit, tout en les rendant disponibles à partir d'autres répertoires si nécessaire.

enter image description here

Vous pouvez également être intéressé par un exemple de la façon dont les liens symboliques sont parfois utilisés sans même pointer vers un répertoire différent. Jetez un coup d'œil à la sortie de ls -l /usr/bin | grep vim qui devrait montrer divers liens pointant vers "vim" dans le même répertoire, par exemple "ex" et "view". Comme l'explique la page de manuel de "vim" :

       Vim behaves differently, depending on the name of the command (the exe-
       cutable may still be the same file).

       vim       The "normal" way, everything is default.

       ex        Start in Ex mode.  Go to Normal mode with the ":vi"  command.
                 Can also be done with the "-e" argument.

       view      Start  in read-only mode.  You will be protected from writing
                 the files.  Can also be done with the "-R" argument.

0voto

BallpointBen Points 287

La raison la plus courante est de "canoniser" le fichier/binaire original. Cela peut signifier placer les binaires dans un emplacement canonique - dans ce cas, les liens symboliques sont placés dans le répertoire /usr/local/opt parce que votre ordinateur s'attend à y trouver des binaires mais pas nécessairement dans /usr/local/Cellar (probablement en fonction de votre shell $PATH variable). Il pourrait également être utilisé pour désigner un seul binaire dans un groupe de binaires connexes comme "officiel" tout en gardant les autres binaires connexes autour mais pas immédiatement disponibles - par exemple, vous pourriez avoir installé de nombreux paquets, chacun s'appuyant sur une version différente de Python, alors que vous avez spécifiquement installé la dernière version de Python pour vous-même. Dans ce cas, vous pourriez avoir des binaires python34 , python35 , python36 etc. dans votre dossier Cellar, et un python binaire en /usr/local/opt qui renvoie au binaire Python dont vous avez demandé l'installation, python36 .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X