Come creare pkg che installa i file su / usr / local

3

Ho provato a utilizzare Pacchetti Whitebox per creare un programma di installazione per un LaunchDaemon. Il daemon chiama uno script di shell, che a sua volta fornisce un file di configurazione.

Quindi quello che mi piacerebbe è un programma di installazione che installa:

  • /Library/LaunchDaemons/my_daemon.plist. (Questo non è un problema).
  • /usr/local/bin/myscript.sh
  • /usr/local/etc/myscript.conf

Non riesco a trovare come specificare il percorso di destinazione di / usr / local.

I pacchetti non mi permettono di modificare la destinazione di questi 2 file, e sembra voler installare su "./myscript.sh" e "./myscript.conf", anche se mi ha permesso di definire la destinazione assoluta per il file .plist in / Library / LaunchDaemons.

Credo di poter scrivere uno script postinstall che crea le directory se necessario e copia i file lì. Ma non c'è una soluzione migliore / più semplice a cui sto guardando?

In altre parole, come posso creare un programma di installazione .pkg che mi permetta di specificare le directory assolute per alcuni file e che crea queste directory durante l'installazione, se necessario.

Uno script di shell postinstall è l'unica soluzione, oppure esiste un modo per fare in modo che i pacchetti facciano le cose automaticamente, o c'è qualche altra app per la creazione di pacchetti che sarebbe più pratica per questo?

    
posta mivk 20.06.2014 - 22:27
fonte

2 risposte

2

Piuttosto che usare uno script per creare / usr / local e le sue sottocartelle, includerli come parte del carico utile del pacchetto. Cioè, crea un prototipo di cartella "locale" con le sottocartelle "bin" e "etc" e il tuo script e il tuo file conf in esse. Imposta le autorizzazioni correttamente (root: admin, 755 per tutti tranne il file conf, 644 o forse 664 per quello). Quindi crea un pacchetto di installazione che collochi l'intera struttura di cartelle in / usr.

Si noti che se / usr / local (e alcune sottocartelle e file) esistono già, il programma di installazione semplicemente unirà il payload del pacchetto con ciò che già esiste (cioè fa esattamente ciò che si desidera).

    
risposta data 21.06.2014 - 18:53
fonte
1

/usr/local non esiste per impostazione predefinita. Devi crearlo utilizzando Terminale per utilizzarlo come percorso di destinazione. Apri Terminale e inserisci il seguente comando (fai triplo clic, copialo e incollalo nel tuo prompt). Inserisci la password quando richiesto:

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

La prima parte rende la directory e le sottocartelle, la seconda modifica le autorizzazioni e la terza modifica la proprietà.

    
risposta data 21.06.2014 - 14:25
fonte

Leggi altre domande sui tag