Vagrantを使用してCentos仮想マシンを実行しています。マシンは正常に動作しているようですが、PERFORCEを同期しようとすると、次のエラーが表示されます。
[vagrant@vagrant-c5-x86_64 ~]$ /perforce/p4 sync -f ...
Perforce client error:
Connect to server failed; check $P4PORT.
failed.TCP connect to perforce.xxx.com:1666
Servname not supported for ai_socktype
私はこれを読みました http://www.ducea.com/2006/09/11/error-servname-not-supported-for-ai_socktype/ そして/etc/services
にポートを設定しようとしましたが、それは動作しませんでした。問題がPERFORCEに関連するのか、OSに関連するのかさえわかりません。
ヒントはありますか?
Tornado/Pythonアプリでこの問題が発生しました。どうやら、 これが原因である可能性があります ポートが整数ではなく文字列として解釈されることによって。したがって、私の場合は、起動スクリプトを変更して、整数として解釈されるようにする必要がありました。
application = tornado.web.Application(...)
application.listen(int(port))
クライアントに入ることができますか?ファイルを同期する前に、PERFORCEクライアントを作成してみてください。
p4 client
おそらく、問題はHost:port
ではなく、接続文字列内の他のフラグが中断することです。
個人的にはまったく同じエラーが発生しましたが、PERFORCEの問題でした。
その理由は、PERFORCEがP4USER
/P4PORT
/...構成を探すときに独自の優先順位を持っているためです。
export
)P4CONFIG
変数がファイル内で検索できる場所に指定されている場合(現在/上位ディレクトリの.perforce
など)問題は、最初にENV変数を検索したにもかかわらず、P4CONFIG
ファイルがそれをオーバーライドする可能性があることでした。
したがって、私の$P4PORT
ENV変数には接続文字列Xがありましたが、.perforce
ファイルには接続文字列Yがありました。
ローカルのP4PORT
ファイルから.perforce
を削除すると、この問題が解決しました。例:
$~] echo $P4PORT;
rsh:ssh -2 -q -a -x -l p4ssh perforce.mydomain.com
$~] cat .perforce
# P4PORT="rsh:ssh -q -a -x -l perforce.mydomain.com /bin/true"
P4USER="my_user"
また、PERFORCEはディレクトリ階層全体で$P4CONFIG
ファイル(構成されている場合)を上向きに検索するため、現在のディレクトリにファイルがない場合でも、上位ディレクトリにある可能性があることに注意してください。そしてそこに-あなたはあなたが予期していなかった$P4PORT
構成を持っているかもしれません。