문제

빌드 중에 RCOV를 실행하기 위해 cruisecontrol.rb를 얻으려고합니다. 현재 다음 오류로 실패하고 있습니다.

sh: rcov: not found 

내가 달릴 수 있기 때문에 rcov 로그인 할 때 쉘에서 이것이 경로 문제라고 생각합니다. (또한 두 가지를 모두 실행할 수 있습니다 rake test:rcov 그리고 rake cruise 오류가없는 쉘에서). 나는 추가했다 p 'echo $PATH' 진술 (명령을 실행하기위한 올바른 백 티크와 함께, 마크 다운 감사합니다).

"/usr/local/bin:/usr/bin:/bin\n"

RCOV 실행 파일은 /var/lib/gems/1.8/bin/rcov에 있으므로 CC.RB가 그것을 찾을 수 없다는 것은 놀라운 일이 아닙니다.

그러나 경로를 올바르게 설정하는 방법을 알 수 없습니다. 이 세트는 내 .profile의 맨 아래에 있습니다.

PATH="$PATH:/var/lib/gems/1.8/bin/"

이것이 대화식으로 작동하는 이유이지만 CC는 픽업되지 않습니다.

나는 Cruisecontrol.rb를 승객 포기 (따라서 Apache) 아래에서 실행하고 있습니다. 내가 생각할 수있는만큼 많은 파일을 확인했지만 나에게 길처럼 보이는 것은 없습니다.

경로를 어디에서 설정하고/또는 경로가 설정되는 위치를 결정할 수 있습니까?

도움이 되었습니까?

해결책

우선, 당신의 .profile은 잘못되었습니다. 다른 프로세스로 표시되기 전에 환경 변수를 내보내야합니다. 이와 같이:

export PATH=....

또는

PATH=...
export PATH

예비 환경 변수 값은 동일한 쉘 프로세스 내에서만 액세스 할 수 있습니다.

그러나 Phusion 승객을 운영하고 있기 때문에 그것은 당신의 문제가 아닙니다. .profile은 쉘에 의해서만 읽히고, 아파치가 쉘에서 시작되지 않았기 때문에, 시스템 init 프로세스에서 .profile에 넣은 것은 무시됩니다. Phusion 승객의 경우 Mod_env 및 Setenv 지침으로 경로를 설정해야합니다.

<VirtualHost *:80>
    ServerName something.test
    DocumentRoot /somewhere/to/cruisecontrol/public
    SetEnv PATH /usr/bin:/usr/local/bin:/bin:/var/lib/gems/1.8/bin    # <---- add this
</VirtualHost>

다른 팁

나는 마침내 모든 것을 작동시켰다.

첫째, Apache 내에서 길을 설정하는 것에 대한 @Hongli의 조언은 정확했습니다. Setenv는 승객 기반 사이트의 경로를 설정할 수있었습니다.

cruisecontrol.rb 코드를 통해 파고들 때 나는 2 차 문제를 발견했습니다 (홍리의 답변에 대한 내 의견으로 언급 한). 시작하는 동안 CC.RB는 각 프로젝트에 대한 빌더 프로세스를 포크합니다. 각 프로세스는 부모의 경로를 얻습니다 당시에는 그것이 만들어졌습니다. 내 문제는 내가 아파치를 다시 시작하고 있다는 것이었지만, 이것은 어떤 이유로 든 빌더 프로세스를 다시 시작하지 않았다. 따라서 건축업자는 내 경로 업데이트를 얻지 못했기 때문에 Apache에서 경로를 얻지 못하는 것처럼 보였습니다. 그로 인해 그들의 길은 다른 곳으로 설정되었다고 믿게되었습니다. 그러나 이것은 사실이 아닙니다.

시스템을 재부팅하면 속임수가 발생했습니다. 새로운 건축업자는 Apache에서 새로운 길을 얻었고 이제 모든 것이 예상대로 작동합니다. 아마도 건축업자를 다시 시작하는 다른 방법이있을 것입니다. 그러나 나는 그것을 조사하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top