PerforceとWindows
この章では、Windows上でPerforceサーバのセットアップおよび保守を行う管理者向けの重要な情報を説明します。
Note
特に別記のない限り、この章の内容はWindows XP、Vista、および7にも同様に適用されます。
Perforceインストーラを使用する
Perforceのインストーラプログラム、perforce.exeにより、Perforceサーバ、Perforceプロキシ、またはPerforceコマンドラインクライアント各々のインストールまたはアップグレードを行うことができます。
P4Vなど、その他のPerforceアプリケーションには別のインストーラが用意されています。
管理者の権限を持っている場合は、通常、Perforceをサービスとしてインストールするのが最善の選択です。管理者の権限を持っていない場合は、サーバとしてインストールします。
アップグレードにおける留意点
Perforceインストーラは、97.3より前のバージョンも含め、あらゆるタイプのPerforceサーバ(またはサービス)を自動的にアップグレードします。このアップグレードはきわめて安全な方法で実行されます。途中で何らかの処理がうまく行えなかった場合、インストーラはアップグレードを停止します。そのような場合、従来のサーバ(またはサービス)を引き続き使用することができます。
スクリプト化された展開と自動インストール
Perforceインストーラはスクリプト化されたインストールをサポートしています。これにより、Perforceを多数のデスクトップに迅速に展開することができます。
スクリプトによるインストールは、スクリプト可能なバージョンのPerforceインストーラに付属している設定ファイルで制御します。このファイルを編集すると、Perforceの環境変数(P4PORT
など)の事前設定、サイトで使用するPerforceアプリケーションの自動選択などを行うことができます。
Perforceの展開を自動化する方法については、Perforceナレッジベースの「Automated Deployment of Perforce」を参照してください。
http://answers.perforce.com/articles/KB_Article/Automated-Deployment-of-Perforce
Perforceテクニカルサポートのスタッフは、Perforceの自動展開についてあらゆるご質問、お問い合わせにお答えすることができます。
WindowsサービスとWindowsサーバ
Windowsサーバとしてタスクを実行するには、ユーザアカウントでのログインが必要です。ユーザアカウントにログインしないと、ユーザのStartup
フォルダのショートカットを実行することができません。一方、Windowsサービスはマシン起動時に自動的に開始し、ユーザがそのマシンにログインしているかどうかに関係なく実行されます。
ここでいうPerforceサービスやp4dは、大半の文書で「データベースを管理し、Perforceのアプリケーションからの要求に応じるバックエンドのプロセス」を指す言葉として使われています。Windowsでは、このような表現では不明確かも知れません。このプロセスは、サービス(スレッドとして動作するp4s.exe)としても、サーバ(通常のプロセスとして動作するp4d.exe)としても実行されることがあるからです。Windowsの管理者の観点からは、これらの違いは重要です。そのためこの章では、そのような用語を厳密に区別して使用します。
Perforceサービス(p4s.exe)とPerforceサーバ(p4d.exe)の2つの実行ファイルはお互いのコピーです。ファイル名が違うだけで、この2つは全く同じものです。実行時、これらは起動に使用した名前の最初の3文字(p4sまたはp4d)で動作を決定します。例えば、p4smyserver.exeという名前のコピーを起動すればサービスとして、p4dmyservice.exeという名前のコピーを起動すればサーバとして起動します。
デフォルトでは、インストーラはPerforceをWindowsサービスとして構成します。
Perforceサービスを開始または停止する
Perforceがサービスとしてインストールされていれば、管理者の権限を持つユーザは
の アプレットを用いてそれを起動、停止することができます。また、コマンドラインの次のコマンドでサービスを停止することもできます。p4 admin stop
Perforceサーバを開始または停止する
サーバ実行ファイルp4d.exeは、通常はP4ROOT
のディレクトリにあります。サーバを起動するには、まず現在のP4ROOT
、P4PORT
、P4LOG
、P4JOURNAL
の設定が正しいことを確認してから、%P4ROOT%\p4dを実行します。
P4ROOT
、P4PORT
、P4LOG
、またはP4JOURNAL
の設定とは異なる設定でサーバを起動するには、p4dコマンドラインのフラグを使用します。例:
c:\test\p4d -r c:\test -p 1999 -L c:\test\log -J c:\test\journal
とすると、ルートディレクトリc:\test
、接続待ちポート1999
、エラーログc:\test\log
、ジャーナルファイルc:\test\journal
という設定でPerforceサーバプロセスが起動します。p4dコマンドラインのフラグでは大文字と小文字が区別されます。
Perforceサーバを停止するには、次のコマンドを使用します。
p4 admin stop
ネットワークドライブにPerforceサービスをインストールする
デフォルトでは、Perforceサービスは、ローカルSystem
アカウントのもとで動作します。ローカルSystem
アカウントには、ネットワークへのアクセス権がないので、メタデータとディポファイルがネットワークドライブに保存されている場合、Perforceサービスを機能させるには、正規のユーザIDとパスワードが必要です。
ネットワークドライブにサーバルートをインストールする場合、Perforceインストーラ(perforce.exe)はインストールの時点で有効なユーザIDとパスワードの組み合わせを要求します。ユーザは管理者の権限を持っていなければなりません。(サービスは、System
ではなく、このユーザの名前のもとに実行されます)
ネットワークドライブをサーバルートとして使用した場合でもPerforceサービスは信頼できる動作をしますが、ネットワークトラフィックの増加とファイルへのアクセス速度の低下により、パフォーマンスは著しく低下します。このため、ディポファイルとPerforceデータベースは、Perforceサービスが実行されているマシンのローカルドライブに配置することをお勧めします。
Windows環境下での複数のPerforceサービスの使用
デフォルトでは、Windows用のPerforceインストーラは単一のPerforceサーバを単一のサービスとしてインストールします。同一のマシン上で複数のPerforceシステムを実行させたい場合(例えば、1つを開発用として、1つをテスト用として実行する)には、コマンドラインから手動でPerforceサーバを起動するか、Perforceに付属のユーティリティsvcinst.exeで追加のPerforceサービスを設定することができます。
Warning
ユーザライセンスを追加購入せずにサポートできるユーザ数を増やす目的で複数のサービスをセットアップすることは、Perforceエンドユーザーライセンス契約の合意条項に違反します。
Perforceの構成を決定する際に環境変数が優先されることを理解していると、同一マシン上で複数のPerforceサービスを構成するときに役に立ちます。操作を始める前に、Windows環境下での構成パラメータの優先順位を読んで理解してください。
2つ目のPerforceサービスをセットアップするには以下を実行します。
-
Perforceサービス用に新たにディレクトリを作成します。
-
サーバ実行ファイル、サービス実行ファイル、およびライセンスファイルを作成したディレクトリにコピーします。
-
下記の例のように、svcinst.exeユーティリティを用いて新しいPerforceサービスを生成します。(svcinst.exeユーティリティはPerforceインストーラに付属しており、Perforceサーバルートに格納されています。)
-
環境変数を設定し、新しいサービスを開始します。
最初のPerforceサービスはPerforceインストーラを用いてインストールすることをお勧めします。この最初のサービスはPerforce
と呼ばれ、そのサーバルートディレクトリに、当該マシン上に生成する別のPerforceサービスによって必要とされるファイルが格納されています。
Example 29. 2つ目のPerforceサービスを追加する
2つ目のPerforceサービスを、C:\p4root2
にルートを置いて、Perforce2
というサービス名で作成するものとします。svcinst実行ファイルは、C:\perforce
にインストールした最初のPerforceシステムのサーバルートにあります。
p4d.exe実行ファイルがリリース99.1/10994以降であることを確認します。
p4d -V
(99.1/10994より前のリリースを使用している場合には、以下の手順を実行する前に、まずhttp://www.perforce.comからそれ以降のリリースをダウンロードし、サーバをアップグレードしなければなりません。)
次のコマンドで新しいサービス用のP4ROOT
ディレクトリを生成します。
mkdir c:\p4root2
サーバ実行ファイル、p4d.exe(サーバ)とp4s.exe(サービス)の両方、およびライセンスファイルを上記の新ディレクトリにコピーします。
copy c:\perforce\p4d.exe c:\p4root2 copy c:\perforce\p4d.exe c:\p4root2\p4s.exe copy c:\perforce\license c:\p4root2\license
次のようにPerforceのsvcinst.exe(サービスインストーラ)を使用してPerforce2
サービスを作成します。
svcinst create -n Perforce2 -e c:\p4root2\p4s.exe -a
Perforce2
サービスを生成したら、Perforce2
サービス用のサービスパラメータを設定します。
p4 set -S Perforce2 P4ROOT=c:\p4root2 p4 set -S Perforce2 P4PORT=1667 p4 set -S Perforce2 P4LOG=log2 p4 set -S Perforce2 P4JOURNAL=journal2
最後に、次のようにPerforceサービスインストーラを使用してPerforce2
サービスを開始します。
svcinst start -n Perforce2.
これで2つ目のサービスが稼動状態になりました。次回のリブートで、1つ目と2つ目の両方のサービスが自動的に開始します。
Windows環境下での構成パラメータの優先順位
Windowsでは、Perforce構成パラメータをさまざまな形で設定することができます。Perforceアプリケーション(例えばp4やp4v)、またはPerforceサーバプログラム(p4d)が起動されると、以下の優先順位にしたがって構成パラメータが読み込まれます。
-
PerforceアプリケーションまたはPerforceサーバ(p4d)の場合、コマンドラインのフラグ(最優先)。
-
Perforceサーバ(p4d)の場合、p4 configureによって設定される継続的な構成可能変数。
-
P4CONFIG
が設定されている場合、P4CONFIG
ファイル。 -
ユーザ環境変数。
-
システム環境変数。
-
p4 setによって設定されるWindowsユーザレジストリ(またはOS Xのユーザプリファレンス)。
-
p4 set -sによって設定されるWindowsシステムレジストリ(またはOS Xのシステムプリファレンス)。
Perforceサービス(p4s)が起動されると、以下の優先順位にしたがって構成パラメータが読み込まれます。
-
p4 configureによって設定される継続的な構成可能変数(最優先)。
-
p4 set -S
servicename
によって設定されるWindowsサービスパラメータ。 -
システム環境変数。
-
p4 set -sによって設定されるWindowsシステムレジストリ(またはOS Xのユーザプリファレンス)。
ユーザ環境変数は、以下のいずれかの方法によって設定します。
-
MS-DOSのsetコマンド
-
AUTOEXEC.BATファイル
-
コントロールパネルの
ダイアログボックス内の のタブ
システム環境変数は、以下のいずれかの方法によって設定します。
-
コントロールパネルの
ダイアログボックス内の のタブ
Windowsに関連した動作不安定を解消する
PerforceがWindows上で問題なく動作している大規模なサイトは、数多くあります。その一方で、Perforceサービスまたはサーバの動作が不安定なサイトもあります。サーバが不可解に停止したり、サービスが開始しなかったり、極端な場合は、システムがクラッシュしたりすることもあります。これは大半の場合、マシンに加えられた変更か、オペレーティングシステムの欠陥が原因になっています。
PerforceのエラーがすべてOSに起因するわけではありませんが、システムがクラッシュする、エラーログの記録やWindowsによるサーバクラッシュの表示もないままPerforceサーバが終了してしまう、Perforceサービスが正常に開始しないというような現象は、OSの欠陥を示すものと考えられます。
サービスパックのインストールの後に他のソフトウェアをインストールすると、サービスパックによってインストールされた重要なファイルが上書きされることがあります。そのような場合は、最後にインストールしたサービスパックを再インストールすることにより問題が解消することがしばしばあります。サービスパックのインストール後に別のアプリケーションをインストールしたらサーバの動作が不安定になったと思われる場合は、サービスパックの再インストールを検討してください。
P4EDITOR、P4DIFF使用上の問題点
Windowsユーザにとっては、P4EDITOR
またはP4DIFF
環境変数を使用している場合、Perforceコマンドラインクライアント(p4.exe)を使用しにくいことがあるかもしれません。
これは、ユーザ指定のエディタや差分ユーティリティなどのプログラムの起動にPerforceアプリケーションがDOSシェル(cmd.exe)を使用する場合があるためです。DOSシェルから実行されたWindowsコマンド(例えば、notepad.exeのようなGUIベースのエディタ)において、コマンドの実行完了を待たずにシェルが終了してしまうことがあります。このような場合に、PerforceクライアントはWindowsコマンドの実行が完了したと誤って判断して処理を進めようとします。その結果、Windowsのエディタや差分ユーティリティが使用していた一時ファイルが削除されてしまうことがあります。結果として、一時ファイルが見つからないというエラーメッセージが表示されたり、その他の異常な現象が発生することになります。
この問題は、以下の2つの方法で回避することができます。
-
環境変数
SHELL
の設定を解除します。Windowsで動作しているPerforceアプリケーションは、SHELL
が設定されているときのみcmd.exeを使用します。それ以外の場合は、spawn()
を起動して、Windowsプログラムの完了を待ちます。 -
P4EDITOR
またはP4DIFF
の変数の名前に、以下のコマンドが入っているバッチファイルの名前を指定します。start /wait
program
%1 %2ここで、
program
は起動したいエディタまたは差分ユーティリティの名前です。/wait
フラグの指定により、システムはエディタまたは差分ユーティリティの終了を待つようになり、Perforceアプリケーションは正常に動作することができます。Windows用エディタの中には、待機の指示があっても正常に動作しないものがあります(Wordpadが代表例)。現在、そのようなプログラムへの対策はありません。