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