Cómo crear un paquete que instala archivos en / usr / local

3

Intenté usar Packages de Whitebox para crear un instalador para LaunchDaemon. El daemon llama a un script de shell, que a su vez genera un archivo de configuración.

Entonces, lo que me gustaría es un instalador que instale:

  • /Library/LaunchDaemons/my_daemon.plist. (Esto no es un problema).
  • /usr/local/bin/myscript.sh
  • /usr/local/etc/myscript.conf

No encuentro cómo especificar la ruta de destino de / usr / local.

Los paquetes no me permiten editar el destino de estos 2 archivos, y parece querer instalarlos en "./myscript.sh" y "./myscript.conf", aunque me permitió definir el destino absoluto. para el archivo .plist en / Library / LaunchDaemons.

Supongo que podría escribir un script de postinstalación que cree los directorios si es necesario y copia los archivos allí. ¿Pero no hay una solución mejor / más simple que esté pasando por alto?

En otras palabras, ¿cómo puedo crear un instalador .pkg que me permita especificar directorios absolutos para algunos archivos, y que cree estos directorios durante la instalación si es necesario?

¿Es el script de shell postinstall la única solución, o hay una manera de que los Paquetes hagan las cosas automáticamente, o hay alguna otra aplicación de creación de paquetes que sea más práctica para esto?

    
pregunta mivk 20.06.2014 - 22:27

2 respuestas

2

En lugar de usar un script para crear / usr / local y sus subcarpetas, inclúyalos como parte de la carga útil del paquete. Es decir, cree una carpeta "local" de prototipo con las subcarpetas "bin" y "etc", y su script y el archivo conf en ellas. Establezca los permisos correctamente (root: admin, 755 para todos menos el archivo conf, 644 o quizás 664 para eso). Luego cree un paquete de instalación que coloque toda la estructura de carpetas en / usr.

Tenga en cuenta que si / usr / local (y algunas subcarpetas y archivos) ya existen, el instalador simplemente fusionará la carga útil de su paquete con lo que ya existe (es decir, hace exactamente lo que desea).

    
respondido por el Gordon Davisson 21.06.2014 - 18:53
1

/usr/local no existe de forma predeterminada. Tienes que crearlo usando Terminal para usarlo como una ruta de destino. Abra Terminal e ingrese el siguiente comando (haga doble clic en él, cópielo y péguelo en su indicador). Ingrese su contraseña cuando se le solicite:

sudo mkdir /usr/local/{,bin,etc}; chmod -R 775 /usr/local/; chown -R root:admin /usr/local; exit

La primera parte hace el directorio y las subcarpetas, la segunda modifica sus permisos y la tercera modifica la propiedad.

    
respondido por el njboot 21.06.2014 - 14:25

Lea otras preguntas en las etiquetas