2014-04-15 67 views
6

Tôi đang chạy một máy ảo Centos sử dụng Vagrant. Chiếc máy có vẻ chạy đúng, nhưng khi tôi cố gắng để đồng bộ hóa cực chẳng đả tôi có thể thấy lỗi sau:Tên dịch vụ không được hỗ trợ cho ai_socktype

[[email protected]_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 

Tôi đã đọc http://www.ducea.com/2006/09/11/error-servname-not-supported-for-ai_socktype/ này và cố gắng để thiết lập các cảng ở /etc/services, nhưng nó đã không làm việc. Tôi thậm chí không chắc chắn nếu vấn đề là Perforce hoặc hệ điều hành liên quan.

Bất kỳ gợi ý nào?

+1

Bạn đã đặt P4PORT đúng chưa? – pitseeker

+0

Vâng, đó là phỏng đoán đầu tiên của tôi. Nó được đặt chính xác ngay từ đầu. Ngoài ra, tôi đã thay đổi P4CHARSET thành 'utf8' và 'none'. Không có kết quả nào cho đến nay ... – Tavo

+0

Công việc "telnet perforce.xxx.com 1666" có hoạt động không? (tức là thiết lập kết nối) – pitseeker

Trả lời

7

Tôi gặp sự cố này với ứng dụng Tornado/Python. Rõ ràng, this can be caused bởi cổng được hiểu là một chuỗi thay vì một số nguyên. Vì vậy, trong trường hợp của tôi, tôi cần phải thay đổi kịch bản khởi động của mình để buộc nó được hiểu là một số nguyên.

application = tornado.web.Application(...) 
application.listen(int(port)) 
2

Bạn có thể nhập khách hàng của mình không? trước khi cố gắng để đồng bộ hóa các tập tin, cố gắng tạo ra một khách hàng cực chẳng đả:

p4 client 

Có lẽ nó không phải là host:port đó là vấn đề, nhưng lá cờ khác trong chuỗi kết nối mà gián đoạn.

Cá nhân tôi đã nhận được cùng một lỗi chính xác nhưng đó là sự cố Perforce.

Lý do là, Perforce có ưu tiên riêng khi tìm kiếm cấu hình P4USER/P4PORT/... của mình.

  1. biến ENV (chạy export)
  2. nếu một biến P4CONFIG được quy định ở đâu đó nó có thể tìm kiếm trong một tập tin (như .perforce trong thư mục hiện/trên)

Vấn đề là, mặc dù nó tìm kiếm đầu tiên cho biến ENV - tệp P4CONFIG có thể ghi đè nó.

Vì vậy $P4PORT biến ENV tôi đã có một chuỗi kết nối X, nhưng các tập tin .perforce đã có một chuỗi kết nối Y.

Loại bỏ các P4PORT từ .perforce tập tin địa phương của tôi - giải quyết vấn đề này. trong ví dụ:

$~] 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" 

Cũng nên nhớ rằng chẳng đả sẽ tìm kiếm các tập tin $P4CONFIG (nếu cấu hình một) trong toàn bộ hệ thống phân cấp thư mục trở lên, vì vậy ngay cả khi bạn không có các tập tin trong thư mục hiện hành - nó có thể được tìm thấy trong thư mục phía trên và ở đó - bạn có thể có cấu hình $P4PORT mà bạn không mong đợi.

Các vấn đề liên quan