gemspec의 잘못된 날짜 형식 사양


111

Windows에서 gem을 사용하려고 할 때 다음과 같은 오류가 발생합니다. 또한 이 stackoverflow 게시물을 참조 하고 rubygems 및 rails를 업데이트했습니다. 그러나 그 어떤 것도 문제를 해결할 수 없습니다.

다음은 완전한 오류입니다.

    D : \> 보석 환경
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/tilt-1.3.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-08-25 00:00:00
.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/execjs-1.2.4.gemspec] : 사양에 잘못된 날짜 형식 : "2011-08-03 00:00 :
00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/temple-0.3.3.gemspec] : 사양에 잘못된 날짜 형식 : "2011-08-26 00:00 :
00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/guard-0.6.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-09-01 00 : 00 : 0
0.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/guard-livereload-0.3.1.gemspec] : 사양의 잘못된 날짜 형식 : "2011-09
-01 00 : 00 : 00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/rack-cache-1.0.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-08-27 00
: 00 : 00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/tilt-1.3.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-08-25 00:00:00
.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/execjs-1.2.4.gemspec] : 사양에 잘못된 날짜 형식 : "2011-08-03 00:00 :
00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/temple-0.3.3.gemspec] : 사양에 잘못된 날짜 형식 : "2011-08-26 00:00 :
00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/guard-0.6.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-09-01 00 : 00 : 0
0.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/guard-livereload-0.3.1.gemspec] : 사양의 잘못된 날짜 형식 : "2011-09
-01 00 : 00 : 00.000000000Z "
[D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications에서 잘못된 gemspec
/rack-cache-1.0.3.gemspec] : 사양의 잘못된 날짜 형식 : "2011-08-27 00
: 00 : 00.000000000Z "
RubyGems 환경 :
  -RUBYGEMS 버전 : 1.7.2
  -RUBY 버전 : 1.8.7 (2011-06-30 패치 레벨 352) [i386-mingw32]
  -설치 디렉토리 : D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  -RUBY 실행 가능 : D : /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  -실행 가능한 디렉토리 : D : /RailsInstaller/Ruby1.8.7/bin
  -RUBYGEMS 플랫폼 :
    -루비
    -x86-mingw32
  -보석 경로 :
     -D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     -C : / 문서 및 설정 /jeygokul/.gem/ruby/1.8
  -보석 구성 :
     -: update_sources => 참
     -: verbose => 참
     -: benchmark => 거짓
     -: 역 추적 => 거짓
     -: bulk_threshold => 1000
  -원격 소스 :
     -http://rubygems.org/

답변:


45

RubyGems를 1.8.10 으로 업그레이드 하여이 문제를 해결했습니다.

gem update --system

편집 : 시도 할 수도 있습니다 (ZeissS에서 제안한대로).

gem install rubygems-update
update_rubygems

16
나는 1.8.10을 가지고 있고 여전히 이것을 받고 있습니다
DGM 2011 년

3
이러한 경고를 발생시키는 보석에 대해 "gem pristine [gemname]"을 실행 해보십시오.
Michael

2
이것은 나에게도 효과가 없었습니다. "gem update --system"명령은 똑같은 문제를 일으키고 "gem pristine"은 아무것도하지 않았기 때문입니다. 나는 Romain_Tribes의 솔루션 @ 따라하기 전에 손으로 gemspec 파일을 삭제했다 다시 실행하는 보석 업데이트
타린 동쪽

4
이것은 우분투에서 특히 캐주얼 한 루비 사용자에게는 좋은 옵션이 아닙니다.
Phillip Whelan 2012

2
아래 GaborKomaromi의 대답 (또는 주석에서 찾은 것 중 하나)이 작동합니다. 이것은 그렇지 않습니다.
gotofritz

132

궁극적 인 해결책은 다음과 같습니다.

Ruby 디렉토리에서 "spec"파일 검색 : * C : \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specifications *

gemspec 파일에 다음과 같은 내용이 포함 된 경우 : s.date = % q {2011-10-13 00 : 00 : 00.000000000Z } 그런 다음 00 : 00 : 00.000000000Z 부분을 삭제합니다 . s.date = % q {2011-10- 13}

해당 gemspec 파일을 저장하면 문제가 해결됩니다.


2
이것은 나를 위해 일했습니다 (루비 1.8.7 / win7), 다른 솔루션은 그렇지 않았습니다
Felix Alcala 2011

3
루비 1.8.7, 보석 1.7.2로 우분투에서 매력처럼 작동했습니다. 감사!
Dan

9
그러면 사양 파일에서 문자열이 제거됩니다. "find. -type f | xargs perl -pi -e 's / 00 : 00 : 00 \ .000000000Z //'"
Rainer Blessing

17
find /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00 : 00 : 00 \ .000000000Z //'in Ubuntu
kubek2k

4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo 2012 년

46

이 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 이 문제를 해결하기 위해 언급 된 디렉토리 (some / path / to / specification /)의 모든 내용을 제거한 다음 필요한 gem을 설치했습니다 (실제로는 Bundler를 사용한 다음 번들 설치).


이것은 간단하고 빠르며 효과적입니다. 다른 사람보다 먼저 시도하십시오.
Tim Scollick 2011

1
나에게도 효과가 있었던 유일한 솔루션. 그러나 이것이 올바른 해결책인지 확실하지 않습니다.
Suren 2012-01-23

이것은 나를 위해 일했습니다. 이 문제를 해결하기 위해 gem udpate --system을 실행하고있었습니다!
Dave Isaacs 2012 년

12

실행하는 gem update --system것 외에도 gem install <gem with bad gemspec>각 항목 gem env가 불량으로보고되었습니다. 이것은 내 컴퓨터의 오류를 정리했습니다.


5
"gem pristine [gemname]"으로 다시 설치하거나 "gem pristine --all"을 수행하여 다시 다운로드하지 않고 캐시에서 gem을 다시 설치할 수 있습니다.
Michael


6

Ubuntu 11.10에 GEM을 설치하려고 할 때 동일한 문제가 발생했습니다.

Invalid gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: invalid date format in specification: "2011-12-28 00:00:00.000000000Z"

위의 옵션은 저에게 효과적이지 않았습니다. gem env다음을보고했습니다.

RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

그래서이 문제는 새로운 버전의 RubyGems를 설치해야했기 때문이라고 생각했습니다.

gem update --system다음 경고를 발행 했습니다.

ERROR:  gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories.
If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian.

그러나 마침내 rubygems다음을 발행하여 1.8.15 로 업데이트 할 수있었습니다 .

sudo gem install rubygems-update && update_rubygems

그 후 모든 것이 작동했습니다. 행운을 빕니다! :)


우분투에 나를 위해, 그것은 걸렸 sudo apt-get purge rubygems다음 sudo apt-get install rubygems다음 다시 모든 보석을 설치. (위의 나를 위해 작동하지 않았다) P : 황당하지만, 적어도 그것은 일
제프 Tratner

3

[/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]의 잘못된 gemspec : 사양의 잘못된 날짜 형식 : "2011-09-09 00 : 00 : 00.000000000Z"

이러한 종류의 문제에 대한 간단한 수정은 파일을 탐색하는 것입니다.

1 단계. cd /var/lib/gems/1.8/specifications
2 단계. 선택한 편집기에서 파일 (chronic-0.6.4.gemspec)을 엽니 다 ... (gedit chronic-0.6.4.gemspec)
3 단계. s.date = % q {2011-10-13 00 : 00 : 00.000000000Z}를 s.date = % q {2011-10-13}로 변경합니다.

건배 :)


2

10.10으로 업그레이드 한 후 우분투에서 동일한 문제가 발생했습니다. 위의 어느 것도 나를 위해 일하지 않았습니다. http://rubygems.org/pages/download 에서 update_rubygems 스크립트를 설치하고 한 번 실행해야했습니다. 결국 모든 것이 작동했습니다.


2

s.date =를 넣어 D : /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec의 해당 줄을 변경하여이 문제 '잘못된 날짜 형식 지정'을 수정했습니다. Time.now 대신 s.date = "2011-08-25 00 : 00 : 00.000000000Z"다른 파일도 동일하게 사용할 수 있습니다.


2

나는 보석을 하나씩 고치기에는 너무 많은 보석이 있으며 update_rubygems, 둘 다 시도해도 gem pristine --all여전히 운이 없습니다.

그래서 나는 rvm clear gemset잘못된 gemspec으로 모든 보석을 제거 하는 데 사용 합니다. 실행 bundle install하여 모든 보석을 다시 설치하고 비올라!


Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
Jonathan

1
rvm gemset empty your_gemset_name_or_global
taiansu

2
cd vendor/bundle/ruby/1.9.x/specifications
sed -i 's/ 00\:00\:00.000000000Z//g' *

1

gem update --system다음 을 실행하여 해결됩니다 gem update.


나를 위해 일했지만 gem update --system을 수행 한 후 오류가 발생했습니다. 대부분은 gem 업데이트 후 사라졌습니다. 다른 사람들을 위해 나는 gemspec 파일을 제거했습니다.
mrbrdo

1

이 답변에 언급 된 다양한 솔루션이 저에게 효과적이지 않았습니다. 문제가되는 gem의 특정 버전을 다시 설치하는 것이 효과가있었습니다. 귀하의 경우에는 다음과 같이 보입니다.

gem install tilt   -v 1.3.3
gem install execjs -v 1.2.4
gem install temple -v 0.3.3
gem install guard  -v 0.6.3
gem install guard-livereload -v 0.3.1
gem install rack-cache -v 1.0.3

나는 항상 보석 저장소로 나가 gem pristine xxx yyy zzz거나 gem pristine --all그렇지 않을 수도 있지만 그렇지 않을 수도 있습니다 gem install xxx -v v.r.m.

어쨌든 지루한 작업이긴했지만 문제가되는 버전의 gem을 다시 설치하는 것은 저에게 효과적이었습니다.


1

rvm gemset clear그리고 bundle install나를 위해 일했습니다!


1

"gem install rubygems-update", "update_rubygems", "gem pristine --all"은 이전에 나열된 것 중 어느 것도 작동하지 않은 후 문제를 해결 한 조합입니다.


0

제 경우에는 참조 된 gem 버전도 설치되지 않았습니다. 나는 그 보석을 가지고 있었지만 gemspec이 오류를 일으키는 버전은 아닙니다. 그래서 저는 각 /path/to/specifications/offending-XYZZ.gemspec 파일을 삭제했습니다.


0

이것은 실제로 대답은 아니지만 누군가가 더 많이 파고 싶다면이 gemspec 사양을 여기에서 찾았습니다. http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (date = date ()로 스크롤하고 소스 표시) :

@date = case date
when String then
  if %r\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
    Time.utc($1.to_i, $2.to_i, $3.to_i)
  else
    raise(Gem::InvalidSpecificationException,
          "invalid date format in specification: #{date.inspect}")
  end
when Time, Date then
  Time.utc(date.year, date.month, date.day)
else
  TODAY
end

그래서 저는 이것이 gemspec을 파싱하는 코드라고 생각합니다. 그리고 오류를 보여주는 파일에있는 날짜 형식이 이것에 맞지 않는 것처럼 보입니다.

내가 한 일은 위에서 제안한대로 문제가되는 gemspec을 수동으로 수정하는 것입니다 (날짜를 "yyyy-mm-dd"로 변경하면 저에게 효과적입니다.

이 문제가 있었던 모든 루비 젬 스펙에도 라인이 있습니다.

s.rubygems_version = % q {1.3.5}

그래서 나는 이것들이 단지 오래된 보석이라고 생각합니까? 그리고 그 % q {...}는 어떻습니까?


0

Ubuntu 11.04에서이 오류가 발생한 경우 내 솔루션은 다음 명령 줄이었습니다.

$ sudo apt-get install ruby1.9.1

이렇게하면 날짜 오류가 발생하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.