Próbowałem użyć pakietów Whitebox do stworzenia instalatora dla LaunchDaemon. Demon wywołuje skrypt powłoki, który sam pobiera plik konfiguracyjny.
Chciałbym więc instalatora, który instaluje:
- /Library/LaunchDaemons/my_daemon.plist. (To nie jest problem).
- /usr/local/bin/myscript.sh
- /usr/local/etc/myscript.conf
Nie mogę znaleźć sposobu określenia ścieżki docelowej / usr / local.
Pakiety nie pozwalają mi edytować miejsca docelowego tych 2 plików i wydaje się, że chcę je zainstalować w plikach „./myscript.sh” i „./myscript.conf”, chociaż pozwoliły mi zdefiniować bezwzględne miejsce docelowe dla plików. plist plik w / Library / LaunchDaemons.
Chyba mógłbym napisać skrypt poinstalacyjny, który w razie potrzeby tworzy katalogi i kopiuje tam pliki. Ale czy nie istnieje lepsze / prostsze rozwiązanie, które przeoczam?
Innymi słowy, w jaki sposób mogę utworzyć instalator .pkg, który pozwala mi określić bezwzględne katalogi dla niektórych plików i który tworzy te katalogi podczas instalacji, jeśli to konieczne.
Czy skrypt powłoki poinstalacyjnej jest jedynym rozwiązaniem, czy istnieje sposób, aby Pakiety wykonywały zadania automatycznie, czy jest też inna aplikacja do tworzenia pakietów, która byłaby bardziej praktyczna?
Odpowiedzi:
Zamiast używać skryptu do tworzenia / usr / local i jego podfolderów, dołącz je jako część ładunku pakietu. To znaczy, stwórz prototypowy folder „lokalny” z podfolderami „bin” i „etc”, a także w nim swój skrypt i plik conf. Ustaw uprawnienia poprawnie (root: admin, 755 dla wszystkich oprócz pliku conf, 644 lub może 664 dla tego). Następnie utwórz pakiet instalatora, który umieści całą strukturę folderów w / usr.
Zauważ, że jeśli / usr / local (i niektóre podfoldery i pliki) już istnieją, instalator po prostu połączy ładunek pakietu z tym, co już istnieje (tzn. Robi dokładnie to, co chcesz).
źródło
/usr/local
domyślnie nie istnieje. Musisz go utworzyć za pomocą terminalu , aby użyć go jako ścieżki docelowej. Otwórz Terminal i wprowadź następujące polecenie (kliknij trzy razy, skopiuj i wklej w monicie). Po wyświetleniu monitu wprowadź hasło:Pierwsza część tworzy katalog i podfoldery, druga modyfikuje jego uprawnienia, a trzecia modyfikuje własność.
źródło
sudo mkdir -m 775 -p /usr/local/{,bin,etc}
i akceptując, że root: wheel jest mniej więcej taki sam jak root: admin.sudo
), możesz i tak robić, co chcesz z tymi folderami; dla użytkowników niebędących administratorami („personel”) zarówno: wheel, jak i: admin są restrykcyjne w ten sam sposób. Główna różnica polega na tym, czy administrator musi wpisać swoje hasło, czy nie. Jeśli plik nie ma być dotknięty „przypadkiem” za pomocą root: wheel jest bezpieczniejszym sposobem, dlatego też większość aplikacji Apple jest konfigurowana jako root: wheel. Jeśli ma to być dotykane tylko przez administratorów, możesz sam być właścicielem.