2010-04-09 3 views
0

PackageMaker를 사용하여 응용 프로그램의 설치 프로그램을 만듭니다. 설치하는 동안 직렬 포트 통신을위한 JNI 라이브러리 인 rxtx를 제대로 설치하기 위해 bash 스크립트를 실행해야합니다. 이 라이브러리는 사용자 "root"와 그룹 "uucp"와 함께/var/lock 디렉토리가 있어야합니다. 설치 스크립트는 lib가/var/lock에 쓸 수 있도록 "uucp"그룹에 현재 사용자를 추가해야합니다.rxtx 용 PackageMaker 설치 스크립트

이제 응용 프로그램 설치 프로그램을 실행할 때 사전 설치 스크립트가 루트로 실행됩니다. 따라서 "whoami"는 실제로 설치 프로그램을 실행중인 사용자 대신 root를 반환합니다. 결과적으로 rxtx는 실제 사용자가 "uucp"의 구성원으로 추가되지 않았으므로/var/lock에 잠금 파일을 만들 수 없습니다.

설치 프로그램에서 스크립트를 실행하는 동안 어떻게 사용자를 얻을 수 있습니까? 또는/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 

답변

0

대신

curruser=`whoami`

의 지금 나에게 부분적으로 문제를 해결한다 이십 기가 바이트 현재 로그인 한 사용자의 목록을 가져옵니다

curruser=`users`

을 사용하고 있습니다. 남은 문제는 다음과 같습니다 경우

  • 이 정말 둘 이상의 사용자가 설치의 순간에 맥에 로그인, 내 스크립트는 그룹 UUCP에 사용자를 추가 할 수 없게됩니다.

  • Mac에서 다른 사용자가 내 응용 프로그램을 실행하려고하는 경우이 사용자가 uucp 그룹에 추가되지 않았으므로 다시 실패합니다.

혹시이 문제에 대한 힌트를 얻었습니까?