web-dev-qa-db-ja.com

Servnameはai_socktypeではサポートされていません

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に関連するのかさえわかりません。

ヒントはありますか?

8
Tavo

Tornado/Pythonアプリでこの問題が発生しました。どうやら、 これが原因である可能性があります ポートが整数ではなく文字列として解釈されることによって。したがって、私の場合は、起動スクリプトを変更して、整数として解釈されるようにする必要がありました。

application = tornado.web.Application(...)
application.listen(int(port))
11
z0r

クライアントに入ることができますか?ファイルを同期する前に、PERFORCEクライアントを作成してみてください。

p4 client

おそらく、問題はHost:portではなく、接続文字列内の他のフラグが中断することです。

個人的にはまったく同じエラーが発生しましたが、PERFORCEの問題でした。

その理由は、PERFORCEがP4USER/P4PORT/...構成を探すときに独自の優先順位を持っているためです。

  1. ENV変数(実行export
  2. 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構成を持っているかもしれません。

2
Ricky Levi