0 votos

Crear un enlace simbólico que apunte a una ruta de archivo variable

Estoy usando MacVim instalado a través de homebrew. La ruta absoluta de la aplicación es /usr/local/Cellar/macvim/xxxxxx/MacVim.app con xxxxxx el número de versión. El número de versión de MacVim se actualiza a menudo.

Ahora me gusta que mi aplicación sea accesible a través del Dock y el Launchpad. He creado un enlace simbólico en /Applications señalando /usr/local/Cellar/macvim/8.2-163_2/MacVim.app (por ahora) para que MacVim.app sea visible en el Launchpad, y he arrastrado el enlace simbólico en el Dock para acceder a él rápidamente. Por supuesto, la próxima vez que MacVim se actualice, la versión cambiará y tendré que arreglar el enlace simbólico.

¿Qué puedo hacer para tener una solución más permanente que no requiera arreglar el symlink cada vez que se actualiza MacVim?

La solución que pensé que podría funcionar:

  1. Utilice un crontab para actualizar regularmente el enlace simbólico
  2. O utilice launchctl para hacer lo mismo
  3. Configurar homebrew, si es posible, para utilizar siempre el mismo directorio
  4. Configurar homebrew para enganchar algún script después de actualizar MacVim para actualizar symlink
  5. Crear un nodo con controlador personalizado que open() , read() y close() el archivo correcto

En el pasado puse en práctica la solución nº 1 y nº 2, pero me parece bastante engorroso. Cada minuto se ejecuta el comando para actualizar el symlink, pero el 99,99% de las veces no hace nada Parece más bien un hacky solución para mí. Si es posible, preferiría ejecutar el comando sólo cuando sea necesario. La solución #3 y #4 son mucho mejores, pero no he encontrado nada sobre gancho en la cerveza casera. Y la solución #5 parece un poco dura para una tarea tan trivial.

¿O me estoy perdiendo algo obvio?

Un poco más de explicaciones como se pide en el comentario

Solución 1

Se puede utilizar un comando de una línea en el crontab:

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

Solución 2

Lo mismo que crontab, pero utilizando una tarea programada. No encuentro esta solución particularmente mejor que el crontab, excepto que está usando un planificador más "moderno".

Solución 3 y 4

Es una suposición, pero esperaba que hubiera alguna función en homebrew para ejecutar un comando después de que se actualice un paquete. Entonces simplemente ejecutaría el mismo comando que en el crontab cuando se actualice MacVim. Lo que me gusta de esta solución, es que el comando sólo se ejecuta cuando se necesita, no cada minuto.

Solución 5

No he mirado en profundidad en esta solución ya que es definitivamente más avanzada. Sólo sé que es posible crear un dispositivo de carácter personalizado con un controlador personalizado. El único requisito es implementar el open , read y close comando. Así que técnicamente, cada vez que el sistema pide /Applications/MacVim.app lo que realmente hace la escena es listar el contenido de la carpeta /usr/local/Cellar/macvim , tome la primera carpeta de la lista y lea el contenido de la carpeta MacVim.app en dicha carpeta. Similar a un symlink, pero específico para mi necesidad.

2voto

Sólo hay que hacer un enlace simbólico a /usr/local/opt/macvim/MacVim.app en cambio, esta vía se mantiene estable ( /usr/local/opt/macvim es un enlace simbólico mantenido por HomeBrew que apunta a la versión actualmente instalada dentro de /usr/local/Cellar/macvim ).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X