我正在使用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或操作系统有关。
有什么提示吗?
我在使用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。
从我的本地.perforce
文件中删除P4PORT
- 解决了这个问题。例如:
$~] 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
配置。
放置尾部斜杠,例如:
http://perforce.xxx.com:1666/
而不是:
http://perforce.xxx.com:1666
就我而言,我在 golang 语言中遇到了这样的错误,我将端口类型从字符串更改为 int 并且工作正常