Скрипт установки PackageMaker для rxtx

Я использую PackageMaker для создания установщика для своего приложения. Во время установки мне нужно запустить сценарий bash, чтобы правильно установить rxtx, библиотеку JNI для связи через последовательный порт. Эта библиотека должна иметь каталог /var/lock с пользователем «root» и группой «uucp». Сценарий установки также должен добавить текущего пользователя в группу «uucp», чтобы библиотека могла писать в /var/lock.

Теперь, когда я запускаю установщик приложения, сценарий предварительной установки запускается от имени пользователя root. Поэтому «whoami» возвращает root, а не пользователя, который на самом деле запускает установщик. В результате rxtx не может создавать файлы блокировки в /var/lock, потому что фактический пользователь не был добавлен в качестве участника "uucp".

Как я могу получить пользователя, пока мой скрипт запускается установщиком. Или, возможно, лучше установить разрешения для /var/lock для другой группы? Любые предложения приветствуются!


#!/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


person vinzenzweber    schedule 09.04.2010    source источник


Ответы (1)


Вместо

curruser=`whoami`

сейчас я использую

curruser=`users`

который дает мне список зарегистрированных в данный момент пользователей, что частично решает проблему. Оставшиеся проблемы:

  • В случае, если в момент установки на Mac действительно было два или более пользователей, мой скрипт не сможет добавить пользователей в группу uucp.

  • Если другой пользователь на Mac захочет запустить мое приложение, оно снова завершится ошибкой, потому что этот пользователь не был добавлен в группу uucp.

Может быть, кто-то подскажет по этим вопросам?

person vinzenzweber    schedule 13.04.2010