2013-06-06 4 views
1

Red Hat EL6 서버 (프로덕션 용)가 있습니다. 나는 소스에서 루비와 루비 젬을 설치했다.Ruby가 하루에 한 번 손상됩니다.

# uname -a 
Linux servername 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux 
# ruby -v 
ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux] 

내 개발 컴퓨터에서이 프로덕션 서버로 배포 할 수 있습니다. 모든 것이 잘 작동합니다. 나는 그 다음날 승객 에러 페이지를 얻는다. 나는 그 실수가 무엇인지 잊었고, 그것은 지난 주에 일어난 일입니다. 하지만 난 심지어 명령을 실행할 수 없습니다 ruby -v.

나는 무슨 일이 일어 났는지 조사하려고하는데, 나는 오류의 원인을 찾을 수 없었다. 그래서 Ruby와 RubyGems (2.0.3)를 다시 컴파일합니다. 모든 것이 잘 돌아갑니다.

/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `require': closed stream (IOError) 
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `<module:Gem>' 
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:114:in `<top (required)>' 
from <internal:gem_prelude>:1:in `require' 
from <internal:gem_prelude>:1:in `<compiled>' 

이 시간 나는 그런 ruby -v로 루비 명령을 실행할 수 있습니다하지만 난 승객 페이지에있어 동일한 오류 때문에 내가 gem -v를 실행할 수 없습니다 : 나는 월요일에 와서, 승객 오류 페이지를 얻을 수 .

그래서 나는 rubygems.rb 파일로 이동

require "rubygems/specification" 

그래서 나는 폴더 젬로 이동이 ... 라인 1070 오류를 생성하는 코드 줄을 볼 수 있으며이 하나 specification.rb 파일입니다.

이 좋아, 그래서 다시 젬을 설치하려고하고 ruby setup.rb을 실행하고이 내가 가지고 무엇 UPDATE ...

# ruby setup.rb 
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `require': closed stream (IOError) 
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1070:in `<module:Gem>' 
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems.rb:114:in `<top (required)>' 
from <internal:gem_prelude>:1:in `require' 
from <internal:gem_prelude>:1:in `<compiled>' 

사람이 서버에 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까? 나는 루비 젬을 다시 컴파일하려고 노력할 것이다. 아마 오류를 해결할 것이지만 나는 내일 또 다른 오류가 발생할 것이라고 생각합니다.

+0

다시 같은 일을하고, 아무 것도 변경하지 않고는 다른 결과를하거나 문제를 해결하기 어렵다. http://superuser.com에서 질문하는 것이 좋습니다. –

+0

감사! 지금 Ruby 2.0.0p195를 설치 중이며, 문제가 사라지면 확인할 수 있습니다. 그렇지 않다면, 아마도 superuser.com에서이 질문을 할 것입니다. – leonel

+1

저는 이것이 루비 문제라는 것을 진지하게 생각합니다. Ruby 코드를 실행 한 후에가 아니라 주기적으로 발생하는 것처럼 들리므로 시스템 작업이 디스크 나 장치 또는 프로세스를 망가 뜨리고 권한이 변경되어 상황이 붕괴 될 수 있습니다. –

답변

0

prelink는 레일 응용 프로그램을 엉망으로했다 : 웹 http://www.tsheffler.com/blog/?p=491

두 기사는 리눅스 prelink 최적화 실제로 루비 바이너리를 손상되었다는 것을 제안했다. 해결책은 Ruby 바이너리에서 BAN prelinking을 시스템에 알려주는 것입니다. 제안 된대로 '-b/usr/bin/ruby'행을 /etc/prelink.conf 파일에 추가 한 후에 문제가 사라진 것 같습니다.

상세 정보 :

0

긴 샷의 비트이지만 전체 디스크가 없습니다. 그렇습니까?

+0

"완전한 디스크"란 무엇입니까? – leonel

+0

더 이상 사용할 수있는 저장 공간이없는 디스크입니다. – regularfry

+0

저장 용량이 충분합니다. – leonel

관련 문제