3 votos

Cómo crear un pkg que instale archivos en /usr/local

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

Así que lo que me gustaría es un instalador que instale:

  • /Library/LaunchDaemons/mi_demonio.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.

Packages no me permite editar el destino de estos 2 archivos, y parece querer instalar 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 postinstall script que cree los directorios si es necesario y copie los archivos allí. Pero, ¿no hay una solución mejor/simplificada que estoy 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 un shell postinstalación script la única solución, o hay alguna forma de que Packages haga las cosas automáticamente, o hay alguna otra aplicación de creación de paquetes que sea más práctica para esto?

2voto

Nate Puntos 220

En lugar de utilizar un script para crear /usr/local y sus subcarpetas, inclúyalo como parte de la carga útil del paquete. Es decir, crea un prototipo de carpeta "local" con subcarpetas "bin" y "etc", y tu script y archivo conf en ellas. Establezca los permisos correctamente (Root:admin, 755 para todo excepto el archivo conf, 644 o quizás 664 para eso). Luego cree un paquete de instalación que coloque toda esa 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 usted quiere).

1voto

Goldorak84 Puntos 116

/usr/local no existe por defecto. Hay que crearla con Terminal para utilizarla como ruta de destino. Abrir Terminal e introduzca el siguiente comando (haga triple clic en él, cópielo y péguelo en el indicador). Introduzca su contraseña cuando se le pida:

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

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

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