오류 : Rubocop를 다운로드 할 때 gem 기본 확장을 빌드하지 못했습니다.


13

"스도 보석 설치 rubocop"을 시도하면 ...

Building native extensions.  This could take a while...
ERROR:  Error installing rubocop:
    ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 mkrf_conf.rb

current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 -rubygems /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake RUBYARCHDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1 RUBYLIBDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1
/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

rake failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/rainbow-2.2.1 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1/gem_make.out

그래서 여러 솔루션, 특히 /programming/22544754/failed-to-build-gem-native-extension-installing-compass (다른 보석, 동일한 오류) 의 솔루션을 시도했습니다.

"rvm restart --disable-binary 2.2.0"으로 RVM을 다시 설치했는데 시간이 오래 걸리지 만 수정하지 못했습니다.

다음으로 $ "sudo apt-get install ruby-dev"를 시도했습니다.

Reading package lists... Done
Building dependency tree       
Reading state information... Done
ruby-dev is already the newest version (1:2.3.0+1).
The following packages were automatically installed and are no longer required:
  dkms linux-headers-4.4.0-53 linux-headers-4.4.0-53-generic
  linux-image-4.4.0-53-generic linux-image-extra-4.4.0-53-generic
  python-appindicator python-gconf python-gi python-glade2
  python-gobject python-pexpect python-ptyprocess python-xdg
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded.

나는 또한 "gem update --system"을 시도했다.

Latest version currently installed. Aborting.

나는 멍청한 놈이며 붙어있는 제안에 크게 감사하겠습니다.


오류에서 알 수 있듯이 rake설치 했습니까?
muru

네. 최신 버전이 있습니다.
user642832

답변:


27

수행 sudo gem install rake한 후 어떻게 sudo gem install rubocop다시 그것을 작동합니다.

올바른 버전의 레이크가 설치되어있는 것은 중요하지 않습니다. 나를 위해 rake --version보고 10.5.0했지만 여전히 당신과 같은 오류 메시지가 나타납니다. 오류 메시지를 보면, 그것은을 찾고 rake뿐만 아니라 어디서든 내에서 특정 경로에서 PATH: /usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError). which rake보고 /usr/local/bin/rake하지 않습니다 /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. 실제로 오류 메시지에 표시된대로에 파일이 없습니다 /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. 이와 함께 할 아마 rakeapt-get install것이 아니라 에드 gem install에디션. sudo gem install rake해당 파일을 만듭니다.


3

이 문제를 해결할 수있었습니다

sudo mkdir -p /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin
sudo ln -s /usr/bin/rake /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/

GitHub에서이 커밋을 참조하십시오 .


2

2017 년에 이것에 대답했을 때, 레이크 보석이 이미 설치된 것처럼 보였기 때문에 @SeanHammond의 해결책에 회의적이었습니다. 데비안 레이크 패키지와 루비 젬 통합 시스템을 통해 이루어졌다. 해먼드 씨에 따르면 레이크 보석을 다시 설치하면 데비안 버전을 덮어 쓰므로 오늘 버그가 발생하지 않았습니다. 글쎄, 먼저 말했다 :

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc rake
Fetching: rake-12.3.1.gem (100%)
ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String
martind@balance:~$ 

오류보고에 업스트림 수정 을 적용한 후에 는 다음과 같이 말했습니다.

rake's executable "rake" conflicts with an unknown executable
Overwrite the executable? [yN]  n
ERROR:  Error installing rake:
    "rake" from rake conflicts with installed executable from 
martind@balance:~$ 

... 나는 다음과 같이 성공했습니다.

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc --format-executable rake
Successfully installed rake-12.3.1
1 gem installed
martind@balance:~$ 

루비 젬이 업데이트 된 바이너리를 찾기에 충분합니다.

martind@balance:~$ ruby2.1 -we 'puts(Gem.bin_path("rake", "rake"))'
/var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ ls -l /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
-rwxr-xr-x 1 root root 1182 Apr 17 15:03 /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ 

@ShaunJackman의 솔루션도 저에게 효과적이었습니다. 데비안이 그것을 고쳐야하는 방식 일 수도 있지만, 데비안이 나중에 바꾸고 싶을 수도있는 디렉토리에 파일을 남기지 않겠습니다.

덜 고통스러운 해결 방법은 rake=/usr/bin/rake내가 원하는 보석을 설치 한 환경에서 설정 하는 것이 었 습니다.

martind@balance:~$ rake=/usr/bin/rake sudo gem2.1 install --no-ri --no-rdoc mediawiki_api
Fetching: unf-0.2.0.beta2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf-0.2.0.beta2
Fetching: mediawiki_api-0.7.1.gem (100%)
Successfully installed mediawiki_api-0.7.1
2 gems installed
martind@balance:~$ 

... 지금 데비안 버그 리포트에 언급 된대로 . 해당 설정을 통과하려면 sudo --preserve-env가 필요할 수 있습니다.

(이 답변의 이전 버전에서 나는 " sudo gem install rainbow그것 의 동등한 것"이라고 주장 했지만 내 문제는 동일하지 않다는 것이 밝혀졌다. 내 문제는 gem, rainbow 및 rubocop가 아니라 실제로 gem2.1이 아니라 mediawiki- 게이트웨이 (또는 그 후속 자, mediawiki_api) 및 unf. 종속성을 수동으로 설치하는 것이 처음으로 효과가 있었던 이유는 gem2.1에 시험판 버전을 종속성으로 설치하는 것을 선호하는 버그가 있기 때문입니다. 산문, 버그는 이것입니다, unf 자체를 설치하라는 메시지가 표시되면 RakeBuilder 경로 대신 rubygem의 ExtConfBuilder 코드 경로를 사용하는 릴리스 버전을 선택합니다. 시험판 버전을 얻지 못했기 때문에 원래의 포스터에 무지개 문제가 없었을 것입니다. 오래 걸리는 미안하지만 비슷한 문제에 직면 한 다른 사람에게 도움이 될 것입니다.)


1
나를 위해 더 간단하게 : rake=rake일함
Anthony Sottile
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.