사양의 날짜 형식으로 인해 잘못된 gemspec


89

Bundler (버전 1.0.12) 덕분에 내가 만든 gem을 Gemfile에 포함시킨 다음 번들링하거나 다음과 같이 레이크를 시도합니다.

$ rake

이 오류 메시지가 있습니다.

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

저는 마지막 Mac OS X (10.6.4)를 사용하고 있습니다.

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

과:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

이 문제를 해결하는 방법을 모르겠습니다. 모든 아이디어에 감사드립니다.


지금이 오류가 계속해서 발생합니다 !!! 어떻게 고쳤습니까? 두 답변은 지금까지 ... 도움이되지 않습니다
멜 테미

모두가 제안한 것은 읽기 전용 파일입니다. 어떻게 변경할 수 있습니까?
chhantyal

답변:


143

"사양에 잘못된 날짜 형식"오류를 수정하는 방법은 다음과 같습니다.

1.) 다음 위치에있는 사양 폴더로 이동합니다.

/usr/local/lib/ruby/gems/1.8/specifications/

2.) 문제를 일으키는 사양을 찾으십시오.

3.) 변경 s.date = %q{2011-05-21 00:00:00.000000000Z}s.date = %q{2011-05-21}

그것은 나를위한 승리입니다! 행운을 빕니다


대접을 받았습니다.
David Archer

나를 위해 일했습니다! Ruby 1.8이 설치된 Windows XP를 사용 중이었습니다. em.websocket-0.3.2.gemspec에서 'livereload'( livereload.com ) 를 사용하려고 할 때이 오류가 발생했습니다 .
program247365

만성 1.6.4에 리눅스에, 너무 나를 위해 일한
Gepsens

하나의 gem에 대한 문제를 해결하지만 설치된 gem을 따라 가면이 오류가 다시 발생할 수 있습니다.
MickaelFM

2
이것은 나를 미치게 만듭니다 ... 50 개의 써드 파티 보석의 gemspec을 변경해야합니까? 왜 그들이 gemspecs를 업데이트하지 않았는지, 1 년이 지났습니다.
oma

60

모든 gem에 대해이 문제를 해결하는 명령은 다음과 같습니다.

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

문제 로 변환 s.date = %q{2011-05-21 00:00:00.000000000Z}되고 s.date = %q{2011-05-21}수정되어야합니다.


이 작업을 수행하기 전에 빠른 백업을 만드는 좋은 방법 :git init . && git commit -am "backup
troyt

날짜 형식을 변경하려고하면 권한이 없다는 메시지가 표시됩니다. 무엇을해야합니까?
chhantyal

@chhantyal 그런 다음 sudo로 실행해야합니다. 정말 감사합니다! 많은 시간을 절약했습니다.
Matt McClure

21

Damian Nowak의 의견을 주목하십시오. 이 명령은 루비 젬을 엉망으로 만들 수 있습니다!

Ubuntu 11.10에서는 다음이이 오류를 해결했습니다.

sudo gem install rubygems-update
sudo update_rubygems     

다음은 일부 시스템에서는 작동하지만 Debian 기반에서는 작동하지 않을 수 있습니다.

sudo gem update --system

좋습니다. oneiric의 최종 버전에서도 작동합니다. 그러나 이것은 수동으로 설치된 모든 gem을 정리하는 것 같습니다.
zehrer

1
그것을 사용하지 마십시오. 그것은 내 루비 젬을 엉망으로 만들었습니다. 나는 많은 것들을 rm -rf하고 repo에서 원래 rubygems로 되돌려 야했습니다. rubygems를 완전히 수동으로 설치하거나 Ubuntu에서 제공하는 rubygems를 사용하십시오. 또는 PPA에서 현재 rubygems를 찾을 수 있습니다. (약 한 달 전에 만든 +1을 취소 할 수 있기를 바랍니다.)
Nowaker

1
@DamianNowak이 소식을 듣고 죄송합니다. 나는 대답에 경고를 추가했습니다!
Mark

14

당신은 당신을 업그레이드 할 수 있습니다 gem. 이 문제를 해결하려면 gemspec파일을 직접 편집 할 수 있습니다.

2011-04-21 00:00:00.000000000Z

...에

YYYY-MM-DD

또는 레일도 업그레이드

sudo gem update rails

문제가 해결됩니다.


@Meltemi이 아래에있을 것입니다 specifications디렉토리이 내입니다 specifications디렉토리 경로 -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

레일 업데이트의 경우 +1-처음에 동일한 경고를 표시하지만 문제를 해결하지만 올바르게 설치되고 더 이상 문제가 발생하지 않습니다.
Adam Davis

6

시간을 지정하지 말고 날짜 만 지정하십시오. 2011-04-21잘 작동합니다.


Gem :: Specification.new do | s | s.name = "myplugin"s.version = "1.0.0"s.platform = Gem :: Platform :: RUBY s.authors = [ "..."] s.email = [ "..."] s .homepage = "http : // ..."s.summary = % q {...} s.description = % q {...} s.rubyforge_project = "myplugin"s.files = git ls-files.split ( "\ n ") s.test_files = git ls-files -- {test,spec,features}/*.split ("\ n ") s.require_paths = ["lib "] end
Zag zag ..

답변 해 주셔서 감사합니다. 동의하지만 myplugin.gemspec 파일에서 날짜 나 날짜 시간을 사용하지 않았습니다. Gem은 Bundler에 의해 자동 생성되었습니다. 이 문제는 Bundler 또는 RVM 때문일 수 있다고 생각합니다. 이상합니다.
Zag zag ..

4

같은 문제가있었습니다. rubygems의 버그처럼 보입니다. 수정 한 커밋은 다음과 같습니다. https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

rubygems 및 bundler를 최신 버전으로 업데이트해야합니다. 그 후에도 문제가 계속되면 문제를 일으키는 모든 gem을 제거한 다음 다시 설치해야 할 수 있습니다.


글쎄, Redmine이 자체 2.3.11 버전의 Rails를 사용하는 것을 제외하고는 Rails 2.3.11이 RubyGems> = 1.7.0으로 실패하고 언급 한 커밋 날짜는 2011 년 5 월 19 일로 1.7.0 이후 (4 월 1 일, 2011). 이 경우 사양 파일을 편집해야합니다.
Olivier 'Ölbaum'Scherler

3

이것은 벤 홀의 답변에 대한 의견에 가깝지만 아직 그 특권이 없습니다.

gem 업데이트가 작동하지 않는 것 같았습니다. 잘못된 날짜 형식으로 인해 gem을로드 할 수도 없다고 생각했습니다. 날짜를 수동으로 변경하는 것은 너무 답답해서 하나씩 갈 수 없었으므로 grep :

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

그리고 sed :

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

그리고 당신 자신의 위험에 !! 나는 여전히 sed 초보자이지만 나를 위해 일했습니다.)


2

내 slicehost 서버에서 사양 폴더는 다른 위치에 있습니다. 경로는 다음과 같습니다.

/usr/lib/ruby/gems/1.8/specifications

제공된 오류는 사양 폴더의 경로를 제공해야합니다.


2

산탄 총 접근 방식 : 모든 gem을 제거하고 번 들러를 다시 실행합니다.

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install

.rvmrc파일 을 사용하는 경우 gemdir이 추가 출력을 생성 할 수 있으므로 2 행을주의하여 실행하십시오.
Jared Beck

1

(버그 수정이 Rubygems의 안정적인 릴리스에 포함될 때까지) gem 명령의 --version 스위치를 사용하여 경고 생성 gem의 동일한 버전을 다시 설치하여 문제를 해결했습니다.


1

Ben Hall이 말했듯이 시스템마다 변경 될 수있는 gemspec 파일을 수정해야합니다. 어떤 파일이 있는지 알아 보려면 오류 보고서에 어떤 파일이 있는지 확인하십시오. 예를 들면 다음과 같습니다.

[/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]의 잘못된 gemspec : 사양의 잘못된 날짜 형식 : "2011-12-28 00 : 00 : 00.000000000Z"

이 예에서는 "/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec"파일을 편집하고 "2011-12-28"에 대해 "2011-12-28 00 : 00 : 00.000000000Z"를 변경해야합니다. s.date 옵션에서.


1

지금도이 문제가 있었다. Rubygems를 업데이트하면 문제가 해결되었습니다.

gem update --system

0

이것이 내 환경입니다.

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

마침내 시스템에서 이러한 오류를 방지하는 원인 / 방법을 찾았습니다. 저는 오이 및 오이 레일 버전 1.0.2로 되돌립니다. 최신 버전을 사용하여이 작업을 수행했습니다.


0

유효한 날짜 형식으로 최신 버전의 gem을 설치하더라도 이전 라이브러리의 사양에 대해 여전히 불평 할 gem cleanup GEMNAME것이기 때문에 나중에 확인하십시오 gem.


0

gem을 다시 설치하는 것은 이러한 약간 다른 머신 상태에서 해결책이 될 수 있습니다.

나의 경우에는:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

제 경우에는 다른 더 창의적인 솔루션이 실패했습니다.

내 문제는 Invalid gemspeccocoapods를 사용하려고 할 때 발생했습니다. 나는 gem install cocoapods다시 달렸고 모든 것이 장밋빛이었습니다.

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