我正在使用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相关。
任何提示?
答案 0 :(得分:11)
我在Tornado / Python应用程序中遇到此问题。显然,端口this can be caused被解释为字符串而不是整数。所以在我的情况下,我需要更改我的启动脚本以强制它被解释为整数。
application = tornado.web.Application(...)
application.listen(int(port))
答案 1 :(得分:2)
你能进入你的客户吗?在尝试同步文件之前,尝试创建一个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
配置,你没有预料到..
答案 2 :(得分:0)
添加斜杠,例如:
http://perforce.xxx.com:1666/
代替:
http://perforce.xxx.com:1666