0

PackageMaker を使用してアプリケーションのインストーラーを作成しています。インストール中に bash スクリプトを実行して、シリアル ポート通信用の JNI ライブラリである rxtx を正しくインストールする必要があります。このライブラリには、ユーザー "root" とグループ "uucp" を含むディレクトリ /var/lock が必要です。lib が /var/lock に書き込みできるようにするには、インストール スクリプトで現在のユーザーをグループ "uucp" に追加する必要もあります。

これで、アプリケーション インストーラーを実行すると、プレインストール スクリプトが root として実行されます。したがって、「whoami」は、実際にインストーラーを実行しているユーザーではなく、ルートを返します。その結果、実際のユーザーが「uucp」のメンバーとして追加されていないため、rxtx は /var/lock にロック ファイルを作成できません。

スクリプトがインストーラーによって実行されている間にユーザーを取得するにはどうすればよいですか? それとも、/var/lock のパーミッションを別のグループに設定したほうがよいのでしょうか? どんな提案も大歓迎です!

#!/ビン/sh

curruser=`whoami`
logger "ユーザー $curruser の /var/lock のパーミッションを設定しています!"

もしも [ !-d /var/ロック]
それから
  logger "/var/lock を作成しています!"
  sudo mkdir /var/lock
フィ

sudo chgrp uucp /var/lock
sudo chmod 775 /var/lock

# MacOSX 10.5 以降では dscl を使用
if [ `sudo dscl . -read /Groups/uucp グループメンバーシップ | grep $curruser | wc -l` = "0" ]
それから
  logger "ユーザー $curruser を /Groups/uucp に追加してください!"
  sudo dscl . -append /Groups/uucp GroupMembership $curruser
  # 使用を元に戻す:
  # sudo dscl . -delete /Groups/uucp GroupMembership $curruser
そうしないと
  logger "ユーザーはすでにグループ uucp のメンバーです!"
フィ

4

1 に答える 1

0

それ以外の

curruser=`whoami`

私は今使用しています

curruser=`ユーザー`

これにより、現在ログインしているユーザーのリストが表示され、問題が部分的に修正されます。残りの問題は次のとおりです。

  • インストール時に実際に 2 人以上のユーザーが Mac にログインしている場合、私のスクリプトはユーザーをグループ uucp に追加できません。

  • Mac 上の別のユーザーが私のアプリケーションを実行したい場合、このユーザーはグループ uucp に追加されていないため、アプリケーションは再び失敗します。

多分誰かがそれらの問題についてヒントを得たでしょうか?

于 2010-04-13T09:15:17.847 に答える