お客様専用ページ > お客様専用FAQ

OS X Yosemite(10.10)~Sierra(10.12)のライセンスマネージャ
の自動起動の設定方法

【OS X Yosemite(10.10) 以降の FLEXlmライセンスマネージャの自動起動】 OS X 10.10 Yosemite 以降において、従来使用されてきた「ブート時のプログラムデーモンの自動起動の設定方法」が使用出来なくなりました。その方法とは、/Library/Startupitems 配下に、プログラムを起動するためのスクリプト等をセットして行う方法でしたが、Yosemite 以降、この方法での自動起動ができなくなりました。それに代わり、これも以前の OS X バージョンから提供されていた方法ですが、launchd(8) (launchctl,launchd.plist) を使用する方法が正式に採用されています。
これに伴い、Yosemite 以降のバージョンでは、PGIのライセンスマネージャである FLEXlm の lmgrd デーモンの自動起動するための設定も変更する必要があります。(OS X 10.9 Mavericks 以前のバージョンでは、このページに説明している変更は必要ありません。インストールの方法を説明している従来の設定の方法で問題ありません)。ここでは、lmgrd デーモンの自動起動のための新しい launchd(8) の仕組みを利用する方法を説明します。なお、この説明は、ノードロック形式の PGI Workstation for OS X 製品のライセンスマネージャに対して適用するものです。
2016年11月更新 2015年8月初稿
© 株式会社ソフテック

一度、以下の設定が済んでいるシステム上でバージョンアップする場合は、すでに、上記1~4までの設定は過去に行われているはずですが、下記の 3 の手続き(/opt/pgi/PGI のファイルの内容変更)だけは必ず行ってください。新しいバージョン(リビジョン)をインストールする度に、/opt/pgi/PGI ファイルは上書きされます。従って、バージョンアップの場合は /opt/pgi/PGI ファイルの修正だけは必要です。その後、ライセンスマネージャを「手動」で停止、あるいは起動を行い動作の確認を行ってください。

Yosemite 以降の OS X において、初めて lmgrd デーモンの自動起動するための設定では、以下の操作、変更等を行います(ルート権限で操作する必要があります)。

  1. /Library/LaunchDaemons 配下に、com.pgi.flexlm.launcher.plist と言う新しいファイルを作成します。
  2. /opt/pgi/license.log のファイルのパーミッションを変更します。
  3. /opt/pgi/PGI のファイルの内容を一部変更します。
  4. launchctl コマンドで com.pgi.flexlm.launcher.plist ファイルをロードします。

【重要】
OS X 10.9 Mavericks 以前のシステムで PGI コンパイラを使用していた方が、OS X Yosemite(10.10) 以降にシステム・アップグレードした場合の注意です。

過去に、設定していた/Library/Startupitems 配下の PGI ライセンスデーモンを自動起動するためのスクリプトを「削除」してから以下の作業を行ってください。削除する directoryとfile は以下のものです。
ルート権限による以下の directory を削除してください。

  $ sudo rm -rf /Library/Startupitems/PGI

PGIライセンスマネージャの自動起動の設定方法

  • (1) /Library/LaunchDaemons 配下に、com.pgi.flexlm.launcher.plist ファイルを作成。

     ターミナルを開きます。root 権限(sudo) に移行してください。その後、/Library/LaunchDaemons/ ディレクトリまで移動してください。この配下に、com.pgi.flexlm.launcher.plist と言うファイルを作成します。この配下に作成されるファイルの所有者は、デフォルトで root で、グループは wheel となります。

    $ sudo -s
    Password:
    bash-3.2# cd /Library/LaunchDaemons/
    bash-3.2# pwd
    /Library/LaunchDaemons
    bash-3.2# ls -l
    total 24
    -rw-------  1 root  wheel  485 Feb 10  2015 com.nvidia.cuda.launcher.plist (この行は一例です)
    

     com.pgi.flexlm.launcher.plist の内容は、以下の通りです。任意のエディターを開いて、この内容を貼り付けて、com.pgi.flexlm.launcher.plist ファイルを作成して下さい。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.pgi.flexlm.launcher</string>
        <key>ProgramArguments</key>
        <array>
            <string>/opt/pgi/PGI</string>
            <string>start</string>
        </array>
        <key>RunAtLoad</key>
        <true></true>
    </dict>
    </plist>
    

    com.pgi.flexlm.launcher.plist ファイルのオーナー属性/ファイルパーミッションを念のため、明示的に変更します。

    
    bash-3.2# pwd
    /Library/LaunchDaemons
    bash-3.2# chown root:wheel com.pgi.flexlm.launcher.plist
    bash-3.2# chmod 600 com.pgi.flexlm.launcher.plist
    bash-3.2# ls -l
    total 24
    -rw-------  1 root  wheel  485 Feb 10  2015 com.nvidia.cuda.launcher.plist
    -rw-------  1 root  wheel  417 Aug 26 18:38 com.pgi.flexlm.launcher.plist
  • (2) /opt/pgi/license.log のファイルのパーミッションを変更します。

     以下の操作も、root 権限(sudo) で行います。PGIコンパイラ・ソフトウェアが実装されている /opt/pgi 配下にある ライセンスマネージャの動作ログファイルである license.log のファイルパーミションを変更します。初めて PGI コンパイラをインストールした段階では、このファイルが存在しないため、touch コマンドで作成します。その後、以下のように chmod コマンドで「パーミション」を変更します。

    bash-3.2# cd /opt/pgi
    bash-3.2# pwd
    /opt/pgi
    bash-3.2# touch license.log   (もし、license.log が存在しない場合は、touch で作成する)
    bash-3.2# ls -l
    total 352
    -rw-r--r--  1 root  wheel  34192 Jul 10 05:05 INSTALL.rtf
    -rwxr-xr-x  1 root  wheel    719 Aug 27 10:57 PGI
    -rw-r--r--@ 1 root  wheel   1209 Aug 24 17:46 PGI2015.terminal
    -rwxr-xr-x  1 root  wheel    101 Aug 25 18:25 StartupParameters.plist
    -rw-r--r--  1 root  wheel    912 Aug 24 17:46 environment.plist
    -rw-r--r--  1 root  wheel   1390 Aug 24 17:45 license.dat
    -rw-r--r--  1 root  wheel      0 Aug 27 18:34 license.log
    drwxrwxr-x  7 root  wheel    238 Aug 24 17:46 osx86
    drwxrwxr-x  7 root  wheel    238 Aug 24 17:46 osx86-64
    drwxr-xr-x  3 root  wheel    102 Aug 24 17:46 pgdbg32.app
    drwxr-xr-x  3 root  wheel    102 Aug 24 17:46 pgdbg64.app
    drwxr-xr-x  3 root  wheel    102 Aug 24 17:46 pgprof.app
    
    bash-3.2# chmod 777 license.log (license.log ファイルの全ての書き込みパーミションを許す)
    bash-3.2# ls -l license.log
    -rwxrwxrwx  1 root  wheel  0 Aug 27 18:34 license.log
    
  • (3) /opt/pgi/PGI のファイルの内容を一部変更します。

     引き続き、/opt/pgi 配下の "PGI" と言うファイルを操作します。まず、最初に、OS X 上のご自身のユーザネームを確認してください。これは、sudo で root ユーザになる前のご自身のユーザネームを意味します。一度、root 権限セッションから exit して、whoami コマンドで確かめます。このユーザネームを "PGI" ファイルの中で使用します。

    bash-3.2# exit       (root から抜ける)
    Mac-mini:~ kato$ whoami     
    kato                 (これがユーザ名、一例です)
    

     再度、root 権限で、/opt/pgi/PGI ファイルをエディターで開きます。ファイル内の記述の中で、以下の部分を変更します。

    StartService()
    {
    $BIN_DIR/lmgrd -c $LICENSE_DIR/license.dat -l $LOG_DIR/license.log   
    }
    

    上記を以下のように変更して下さい。$BIN_DIRから始まる行を下に1行コピーして、このオリジナル行を # を使ってコメント化します。次に、コピーした行の先頭に、「su ユーザネーム -c」を付け加えます。ここの例では、ユーザネームが kato ですので、su kato -c と言う記述になります。それに続く、$BIN_DIR/.... の部分をダブルクォーテーション(" .... ") で囲みます。なお、シングルクォーテーションは使わないで下さい。

    StartService()
    {
    # $BIN_DIR/lmgrd -c $LICENSE_DIR/license.dat -l $LOG_DIR/license.log      この行を#でコメント化する
    su kato -c "$BIN_DIR/lmgrd -c $LICENSE_DIR/license.dat -l $LOG_DIR/license.log" 
    }
    

     変更した "PGI" ファイル内容(全部)を以下に記します。(以下は、PGI 15.7 に付属している"PGI" ファイルです。)以下の記述の中にある BIN_DIR=$PGI/osx86/15.7/bin 行の 15.7 を現在インストールしているリビジョン番号になっているはずです。この番号を変えると他のリビジョンでも使用できます。

    #!/bin/bash
    
    # Copy to /Library/StartupItems/PGI directory
    # chmod 0755 PGI
    
    . /etc/rc.common
    
    # PGI directory
    PGI=/opt/pgi
    
    # license, bin and log directories
    LICENSE_DIR=$PGI
    BIN_DIR=$PGI/osx86/15.7/bin
    LOG_DIR=$PGI
    
    StartService()
    {
    # $BIN_DIR/lmgrd -c $LICENSE_DIR/license.dat -l $LOG_DIR/license.log
    su kato -c  "$BIN_DIR/lmgrd -c $LICENSE_DIR/license.dat -l $LOG_DIR/license.log"
    }
    
    StopService()
    {
    $BIN_DIR/lmutil lmdown -q -c $LICENSE_DIR/license.dat
    }
    
    RestartService()
    {
    StopService
    StartService
    }
    
    RunService "$1"
    
    
  • (4) launchctl コマンドで com.pgi.flexlm.launcher.plist ファイルをロードします。

     launchd(8) 管理下では、デーモン起動用の plist ファイルをロードしておくことにより、システムブート時に、デーモン起動用のスクリプトファイル(プログラム)が動作します。以下のコマンドで、PGI lmgrd デーモン起動用の plist ファイルをロードします。これは、root 権限での操作が必要です。以下のコマンドは一度行っておけば、次回以降のブート時には行う必要はありません。(以下の launchctl load コマンドは、FLEXlm ライセンスマネージャのデーモンも起動してくれますので、ここでの明示的な「手動起動」は必要ありません)

    Mac-mini:~ kato$ sudo launchctl load /Library/LaunchDaemons/com.pgi.flexlm.launcher.plist
    Password:
    
    これにて、ファイルがロードされ、引き続き、lmgrd デーモン起動用のスクリプトが実行される。
    その後、以下のコマンドで、lmgrd プロセスと pgroupd プロセスの二つが動作していることを確認する。
    
    Mac-mini:~ kato$ ps ax | grep lmgrd
      583   ??  S      0:00.00 /opt/pgi/osx86/15.7/bin/lmgrd -c /opt/pgi/license.dat -l /opt/pgi/license.log
      584   ??  Ss     0:00.04 pgroupd -T localhost 11.10 5 -c /opt/pgi/license.dat --lmgrd_start 55dfcea4
      586 s005  S+     0:00.00 grep lmgrd
    

     以上の操作により、システムブート時に、FLEXlm ライセンスマネージャ(lmgrd) を自動で起動するための設定が可能となります。もし、コンパイラ使用時にライセンスマネージャの問題が現れた場合は、/opt/pgi/license.log ファイルを確認して、その原因を探す必要があります。この関連情報として、「OS X 上のライセンスマネージャの動作に関する不具合」をご覧ください。

手動によるPGIライセンスマネージャの起動、停止方法について

 明示的にPGIライセンスマネージャを手動で起動、あるいは、停止する方法を説明します。なお、FLEXlmライセンスマネージャ(lmgrdとpgroupd) のプロセスを確かめる方法は、以下のコマンドで行います。以下の例では、Process ID 640 が lmgrd デーモンプロセス、Process ID 641 が pgroupd デーモンプロセス(PGI用デーモン)です。

Mac-mini:~ kato$ ps ax | grep lmgrd
  640   ??  S      0:00.00 /opt/pgi/osx86/15.7/bin/lmgrd -c /opt/pgi/license.dat -l /opt/pgi/license.log
  641   ??  Ss     0:00.04 pgroupd -T localhost 11.10 5 -c /opt/pgi/license.dat --lmgrd_start 55dfe88f
  643 s005  S+     0:00.00 grep lmgrd

 FLEXlmライセンスマネージャ(lmgrdとpgroupd) を明示的に停止するには、以下のコマンドを実行してください。これは、root 権限を必要としません。

Mac-mini:pgi kato$ /opt/pgi/PGI stop

lmutil - Copyright (c) 1989-2011 Flexera Software, Inc. All Rights Reserved.

   Port@Host            Vendors
1) 27000@localhost      pgroupd
    1 FLEXnet License Server shut down

 FLEXlmライセンスマネージャ(lmgrdとpgroupd) を手動で起動するには、以下のコマンドを実行してください。これは、root 権限を必要とします。

Mac-mini:pgi kato$ sudo /opt/pgi/PGI start
Password: