0 votes

Créer un lien symbolique pointant vers un chemin de fichier variable

J'utilise MacVim installé via homebrew. Le chemin absolu vers l'application est /usr/local/Cellar/macvim/xxxxxx/MacVim.app avec xxxxxx le numéro de version. Le numéro de version de MacVim est souvent mis à jour.

J'aimerais maintenant que mon application soit accessible par le Dock et le Launchpad. J'ai créé un lien symbolique dans /Applications pointant vers /usr/local/Cellar/macvim/8.2-163_2/MacVim.app (pour l'instant) afin que MacVim.app soit visible dans le Launchpad, et j'ai glissé le lien symbolique dans le Dock pour y accéder rapidement. Bien sûr, à la prochaine mise à jour de MacVim, la version changera et je devrai corriger le lien symbolique.

Que puis-je faire pour avoir une solution plus permanente qui ne nécessite pas de réparer le lien symbolique à chaque mise à jour de MacVim ?

La solution que j'ai trouvée pourrait fonctionner :

  1. Utilisez un crontab pour mettre à jour régulièrement le lien symbolique
  2. Ou utilisez launchctl pour faire la même chose
  3. Configurer homebrew, si possible, pour utiliser toujours le même répertoire
  4. Configurer homebrew pour accrocher un script après la mise à jour de MacVim pour mettre à jour le lien symbolique.
  5. Créer un nœud avec un pilote personnalisé qui open() , read() et close() le bon dossier

J'ai mis en œuvre les solutions #1 et #2 dans le passé, mais je trouve cela assez désordonné. Toutes les minutes, la commande de mise à jour du lien symbolique est exécutée, mais dans 99,99% des cas, elle ne fait rien. Cela ressemble plutôt à un hacky solution pour moi. Si possible, je préférerais exécuter la commande uniquement lorsqu'elle est nécessaire. Les solutions #3 et #4 sont bien meilleures, mais je n'ai rien trouvé sur crochet en homebrew. Et la solution n°5 semble un peu hardcore pour une tâche aussi triviale.

Ou est-ce que je rate quelque chose d'évident ?

Un peu plus d'explications comme demandé dans le commentaire

Solution 1

Une commande d'une ligne dans la crontab peut être utilisée :

* * * * * ln -fs "$(find '/usr/local/Cellar/macvim' -name 'MacVim.app' | head -n 1)" /Applications/MacVim.app

Solution 2

Identique à crontab, mais utilisant une tâche planifiée. Je ne trouve pas cette solution particulièrement meilleure que la crontab, sauf qu'elle utilise un planificateur plus "moderne".

Solutions 3 et 4

C'est une supposition, mais j'espérais qu'il y avait une fonctionnalité dans homebrew pour lancer une commande après la mise à jour d'un paquet. Je pourrais alors simplement exécuter la même commande que dans la crontab lorsque MacVim est mis à jour. Ce que j'aime dans cette solution, c'est que la commande n'est lancée que lorsqu'elle est nécessaire, et non pas toutes les minutes.

Solution 5

Je n'ai pas étudié cette solution en profondeur, car elle est certainement plus avancée. Je sais seulement qu'il est possible de créer un périphérique de caractères personnalisé avec un pilote personnalisé. La seule exigence est d'implémenter la fonction open , read et close commandement. Donc techniquement, à chaque fois que le système demande /Applications/MacVim.app ce qu'il fait réellement dans la scène est de lister le contenu du dossier. /usr/local/Cellar/macvim prenez le premier dossier de la liste, et lisez le contenu du fichier MacVim.app dans ledit dossier. Similaire à un lien symbolique, mais spécifique à mon besoin.

2voto

nohillside Points 82672

Il suffit d'établir un lien symbolique vers /usr/local/opt/macvim/MacVim.app Au contraire, cette voie reste stable ( /usr/local/opt/macvim est un lien symétrique maintenu par HomeBrew qui pointe vers la version actuellement installée à l'intérieur de /usr/local/Cellar/macvim ).

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