Script de instalação do PackageMaker para RXTX
-
25-09-2019 - |
Pergunta
Estou usando o PackageMaker para criar um instalador para o meu aplicativo. Durante a instalação, preciso executar um script bash para instalar corretamente o RXTX, uma biblioteca JNI para comunicação por porta serial. Esta biblioteca precisa ter o diretório /var /bloqueio no lugar com o usuário "root" e o grupo "UUCP". O script de instalação também precisa adicionar o usuário atual ao grupo "UUCP" para que o LIB seja capaz de escrever para /var /bloqueio.
Agora, quando executo meu instalador de aplicativos, o script de pré -instalação é executado como root. Portanto, "Whoami" retorna root em vez do usuário que está realmente executando o instalador. O resultado é que o RXTX não pode criar arquivos de bloqueio em /var /bloqueio porque o usuário real não foi adicionado como um membro ao "UUCP".
Como posso obter o usuário enquanto meu script é executado pelo instalador. Ou é melhor definir as permissões para /var /bloquear para um grupo diferente, talvez? Quaisquer sugestões são bem -vindas!
#!/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
Solução
Ao invés de
curruser=`whoami`
Agora estou usando
curruser=`users`
O que me traz uma lista dos usuários atualmente conectados que está corrigindo parcialmente o problema. Os problemas restantes são:
Caso haja realmente dois ou mais usuários conectados ao Mac no momento da instalação, meu script não adicionará os usuários ao grupo UUCP.
Caso outro usuário no Mac deseja executar meu aplicativo, ele falhará novamente porque esse usuário não foi adicionado ao grupo UUCP.
Talvez alguém tenha dica sobre essas questões?