2008-11-11 14 views
6

Máy chủ chia sẻ của tôi không cung cấp git, vì vậy tôi đã xây dựng và cài đặt nó vào ~/bin. Khi tôi chạy nó, tôi nhận được lỗi sau trên hầu hết các lệnh, mặc dù chúng đã thành công.Sử dụng capistrano khi git từ xa nằm trên đường dẫn không chuẩn

stdin: is not a tty

tôi có thể giải quyết vấn đề đó bằng cách thêm:

default_run_options[:pty] = true

để deploy.rb của tôi, nhưng sau đó tôi nhận được lỗi này, mà khối triển khai :

sh: git: command not found

Làm cách nào để giải quyết cả hai lỗi?

Tôi đã thử thêm tệp ~/.ssh/environment với "PATH=$PATH:$HOME/bin" (và thay đổi sshd_config để sử dụng nó) nhưng không có gì.

Có vẻ như bất kỳ trình bao nào đang được sử dụng bởi capistrano không sử dụng ~/.bashrc hoặc ~/.bash_profile trên máy chủ từ xa.

Bất kỳ ý tưởng nào về cách đặt đường dẫn trên máy từ xa?

thông tin khác: Tôi đang sử dụng OS X cục bộ và máy chủ được chia sẻ là linux trên Site5.

+0

Vui lòng đánh dấu câu trả lời nào đã giải quyết được vấn đề này. – cfx

Trả lời

2

Một cách giải quyết nhanh chóng là để thiết lập như sau trong tập tin deploy.rb của bạn:

set :deploy_via, :copy 

này sẽ làm cho thanh toán xảy ra trên máy tính của riêng bạn và sau đó được sao chép vào máy chủ triển khai.

3

Bạn sẽ có thể để xác định đường dẫn đầy đủ để git như vậy:

set :scm_command, "/home/your_cap_runner_user/bin/git"

Tôi đã không cố gắng này ra cho bản thân mình - tìm thấy nó trong các tài liệu trong mã nguồn cho git.rb trong bản thân Capistrano.

+0

hoạt động miễn là cả lệnh git cục bộ và từ xa đều nằm trong cùng một đường dẫn –

14

Xin cảm ơn, Chu - bạn đã đưa tôi đi đúng hướng.

chỉ sử dụng: set :scm_command, "~/bin/git"
vẫn cho tôi lỗi vì git địa phương của tôi không có ở địa điểm đó.

Tuy nhiên, sau đây dường như làm việc, và để giải quyết vấn đề của tôi:
set :scm_command, "~/bin/git"
set :local_scm_command, "/usr/local/bin/git"

1

Đây là một trợ giúp lớn, khi tôi đang chạy vào cùng một vấn đề như các poster ban đầu.

"Trước khi" triệu chứng:

  • chạy nắp triển khai: Thiết lập (thành công)
  • chạy nắp triển khai: kiểm tra (thất bại, với 'lệnh git không tìm thấy')

bây giờ đã thêm tập hợp: scm_command, "~/bin/git" vào tệp deploy.rb của tôi.

  • chạy nắp triển khai: Thiết lập (thành công)
  • chạy nắp triển khai: kiểm tra (thành công)
  • chạy nắp triển khai: lạnh (thất bại, với các lỗi sau)

    : 97: trong ' ` ': Không có tập tin hoặc thư mục - ~/bin/[email protected] thông tin git: quintar/eu reka.git -rHEAD (Errno :: ENOENT)

Vì vậy, nó trông giống như' git 'tôi s được công nhận, nhưng kho lưu trữ mà tôi đưa vào deployment.rb của tôi bị bỏ qua?

8

Vấn đề là bạn đã thiết

default_run_options[:pty] = true 

có nghĩa là .bash_profile của bạn hoặc file init vỏ thông thường của bạn sẽ không được chạy, mà không phải là trường hợp khi bạn đặt nó là sai - nhưng sau đó bạn sẽ gặp vấn đề khi muốn hỏi mật khẩu.

Để khắc phục vấn đề này, bạn có thể tự thiết lập biến môi trường PATH của bạn trong tập tin triển khai của bạn:

default_environment['PATH'] = "/your/path/to/git:/and/any/other/path/you/need" 
+0

Đề xuất mặc định của bạn đã khiến tôi vượt qua cơn đau đầu lớn cho Rails Rumble 2010. Cảm ơn! – Jared

3
stdin: is not a tty 

Đây có lẽ là vì CPanel cài đặt trên máy chủ chia sẻ của bạn. Nó thực hiện "mesg y" trong tập tin /etc/.bashrc toàn cục được bao gồm trong ~/.bashrc của bạn. Vì vậy, bạn chỉ có thể bình luận-out bao gồm.

Dưới đây là các nguồn: http://webhostingneeds.com/Git_stdin_is_not_a_tty

0

Các tập tin ~/.ssh/môi trường không được thực hiện bởi một vỏ. Đó là một tệp môi trường được mã hóa cứng. Nếu bạn muốn thiết lập đường dẫn theo cách này, bạn sẽ cần phải hardcode nó thay vì phụ thêm vào $ PATH. Các câu trả lời khác có thể chính xác hơn, nhưng thiết lập ~/.ssh/environment chính xác là một dự phòng đáng tin cậy nếu tất cả đều thất bại.