J'utilise PackageMaker pour créer un programme d'installation pour mon application. Pendant l'installation, j'ai besoin d'exécuter un script bash pour installer correctement rxtx, une bibliothèque JNI pour la communication de port série. Cette bibliothèque doit avoir le répertoire/var/lock en place avec l'utilisateur "root" et le groupe "uucp". Le script d'installation doit également ajouter l'utilisateur courant au groupe "uucp" pour que lib puisse écrire dans/var/lock. Maintenant, lorsque j'exécute mon programme d'installation de l'application, le script de préinstallation est exécuté en tant que root. Par conséquent, "whoami" renvoie la racine au lieu de l'utilisateur qui exécute réellement le programme d'installation. Le résultat est que rxtx n'est pas capable de créer des fichiers de verrouillage dans/var/lock car l'utilisateur réel n'a pas été ajouté en tant que membre à "uucp".Script d'installation de PackageMaker pour rxtx
Comment puis-je obtenir l'utilisateur pendant que mon script est exécuté par le programme d'installation? Ou est-il préférable de définir les autorisations pour/var/lock à un autre groupe peut-être? Toutes les suggestions sont les bienvenues!
#!/bin/sh curruser=`whoami` logger "Setting permissions for /var/lock for user $curruser!" if [ ! -d /var/lock ] then logger "Creating /var/lock!" sudo mkdir /var/lock fi sudo chgrp uucp /var/lock sudo chmod 775 /var/lock # MacOSX 10.5 and later use dscl if [ `sudo dscl . -read /Groups/uucp GroupMembership | grep $curruser | wc -l` = "0" ] then logger "Add user $curruser to /Groups/uucp!" sudo dscl . -append /Groups/uucp GroupMembership $curruser # to revert use: # sudo dscl . -delete /Groups/uucp GroupMembership $curruser else logger "User already member of group uucp!" fi