Lỗi: Không thể tạo tiện ích mở rộng riêng cho đá quý khi cố tải xuống Rubocop


13

Khi tôi thử "sudo gem install rubocop", tôi nhận được ...

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

Vì vậy, tôi đã thử một số giải pháp, cụ thể là các giải pháp từ /programming/22544754/fails-to-build-gem-native-extension-installing-compass (đá quý khác nhau, cùng một lỗi)

Tôi đã thử cài đặt lại RVM với "rvm reinstall --disable-binary 2.2.0", mất một lúc nhưng không sửa được

Tiếp theo tôi đã thử $ "sudo apt-get install ruby-dev" mang lại

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.

Tôi cũng đã thử "cập nhật đá quý - hệ thống" mà tôi nhận được ...

Latest version currently installed. Aborting.

Mọi đề xuất sẽ được đánh giá rất cao vì tôi là một người hoàn toàn và tôi đang bị mắc kẹt.


Như lỗi nói, bạn đã rakecài đặt chưa?
muru

Vâng. Tôi có phiên bản mới nhất.
dùng642832

Câu trả lời:


25

Làm sudo gem install rakevà sau đó làm sudo gem install rubocoplại và nó sẽ làm việc.

Dường như bạn không cài đặt đúng phiên bản cào. Đối với tôi rake --versionđã báo cáo 10.5.0nhưng tôi vẫn nhận được thông báo lỗi giống như bạn. Nhìn vào thông báo lỗi, nó đang tìm kiếm rakemột đường dẫn cụ thể, không chỉ ở bất cứ đâu trên PATH: /usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError). which rakebáo cáo /usr/local/bin/rake, không /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. Và trên thực tế, như thông báo lỗi nói, không có tệp nào tại /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake. Điều này có lẽ là để làm với rakeđã được apt-get installed hơn là gem installed. sudo gem install raketạo tập tin đó


3

Tôi đã có thể giải quyết vấn đề này với

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/

Xem cam kết này trên GitHub .


2

Khi tôi trả lời điều này vào năm 2017, tôi đã hoài nghi về giải pháp của @ SeanHammond, bởi vì đá quý cào đã xuất hiện để cài đặt. Điều đó hóa ra là thông qua gói cào của Debian và hệ thống tích hợp rubygems của họ. Việc cài đặt đá quý cào lần nữa, theo ông Hammond, đã làm việc cho tôi ngày hôm nay, vì nó áp đảo phiên bản của Debian, do đó tránh được lỗi cơ bản. Vâng, đầu tiên nó nói:

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:~$ 

Sau khi tôi áp dụng sửa lỗi ngược dòng cho báo cáo lỗi, có nghĩa là:

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:~$ 

... Điều đó dẫn tôi đến thành công với:

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

Thế là đủ để rubygems tìm thấy nhị phân cập nhật:

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:~$ 

Giải pháp của ShaunJackman cũng có hiệu quả với tôi. Đó có thể là cách mà Debian nên sửa nó, mặc dù tôi không muốn để các tệp trong một thư mục trên máy của mình mà Debian sau này có thể muốn thay đổi.

Một công việc ít đau đớn hơn đang diễn ra rake=/usr/bin/raketrong môi trường mà tôi đã cài đặt viên ngọc tôi muốn:

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:~$ 

... như đã lưu ý trong báo cáo lỗi Debian của tôi . Sudo của bạn có thể cần --preserve-env để vượt qua cài đặt đó.

(Trong phiên bản trước của câu trả lời này, tôi đã tuyên bố rằng "tương đương với sudo gem install rainbowgiải quyết nó" nhưng hóa ra vấn đề của tôi không tương đương. Vấn đề của tôi không phải là đá quý, cầu vồng và rubocop mà thực sự là với gem2.1, mediawiki- gateway (hoặc người kế thừa của nó, mediawiki_api) và không. Lý do cài đặt phụ thuộc thủ công trước tiên cho trường hợp của tôi là gem2.1 có một lỗi trong đó nó thích cài đặt các phiên bản phát hành trước như là phụ thuộc. Tôi nghi ngờ, từ mã chứ không phải là mã. văn xuôi, lỗi là cái này, Khi được yêu cầu cài đặt chính nó, thay vào đó, và chọn một phiên bản phát hành, một phiên bản tình cờ sử dụng đường dẫn mã ExtConfBuilder của rubygem thay vì RakeBuilder. Điều đó sẽ không giúp ích cho poster ban đầu với vấn đề cầu vồng của họ, vì họ đã không có được một phiên bản phát hành trước. Xin lỗi vì sự lạc đề kéo dài, nhưng có lẽ nó sẽ giúp người khác đối mặt với một vấn đề tương tự.)


1
thậm chí đơn giản hơn đối với tôi: rake=rakeđã làm việc
Anthony Sottile
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.