ข้อผิดพลาด: ไม่สามารถสร้างส่วนขยายดั้งเดิมของอัญมณีเมื่อพยายามดาวน์โหลด Rubocop


13

เมื่อฉันลอง "sudo gem install 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 ใหม่ด้วย "ติดตั้ง rvm - ปิดการใช้งาน - ไบนารี 2.2.0" ซึ่งใช้เวลาสักครู่ แต่ไม่ได้แก้ไข

ต่อไปฉันลอง $ "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.

ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างมากเพราะฉันเป็น noob ทั้งหมดและฉันติดอยู่


ตามที่ระบุไว้ข้อผิดพลาดคุณ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/rakerakeapt-get installgem installsudo gem install rake



2

เมื่อฉันตอบคำถามนี้ในปี 2560 ฉันไม่แน่ใจในวิธีการแก้ปัญหาของ @ SeanHammond เพราะดูเหมือนจะติดตั้งคราดอัญมณีแล้ว สิ่งนี้กลับกลายเป็นว่าได้ผ่านแพ็คเกจคราดของ Debian และระบบการรวม rubygems ของพวกเขาแล้ว การติดตั้ง rake gem อีกครั้งต่อ Mr Hammond ได้ผลกับฉันในวันนี้เพราะมันผ่านเวอร์ชั่นของ Debian ดังนั้นจึงหลีกเลี่ยงข้อผิดพลาดพื้นฐาน ก่อนอื่นก็พูดว่า:

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

นั่นก็เพียงพอแล้วสำหรับ rubygems เพื่อค้นหาไบนารี่ที่ได้รับการอัพเดต:

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 ก็ทำงานให้ฉันเช่นกัน นั่นอาจเป็นวิธีที่ Debian ควรแก้ไขแม้ว่าฉันจะไม่ทิ้งไฟล์ไว้ในไดเรกทอรีบนเครื่องของฉันซึ่ง Debian อาจต้องการเปลี่ยนในภายหลัง

การทำงานที่เจ็บปวดน้อยลงคือการตั้งค่า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:~$ 

... เป็นตอนที่ระบุไว้ในรายงานข้อผิดพลาดของฉัน Debian sudo ของคุณอาจต้อง --preserve-env เพื่อผ่านการตั้งค่านั้น

(ในรุ่นก่อนหน้าของคำตอบนี้ฉันอ้างว่า "ความเท่าเทียมกันของการsudo gem install rainbowแก้ไข" แต่ปรากฎว่าปัญหาของฉันไม่เท่ากันปัญหาของฉันไม่ได้มีอัญมณีรุ้งและ rubocop แต่จริง ๆ แล้วกับ gem2.1, mediawiki- เกตเวย์ (หรือตัวตายตัวแทน, mediawiki_api) และ unf. เหตุผลที่การติดตั้งการพึ่งพาตนเองทำงานด้วยตนเองเป็นครั้งแรกสำหรับกรณีของฉันคือ gem2.1 มีข้อผิดพลาดโดยที่มันชอบที่จะติดตั้งรุ่นก่อนวางจำหน่ายเป็นการอ้างอิงฉันสงสัยว่าจากโค้ดมากกว่า ร้อยแก้วว่าข้อผิดพลาดคืออันนี้เมื่อถูกขอให้ติดตั้งตัวเองมันก็จะเลือกเวอร์ชั่นที่ถูกปล่อยออกมาอย่างถูกต้องซึ่งจะเกิดขึ้นกับการใช้เส้นทาง ExtConfBuilder ของ rubygem แทน RakeBuilder นั่นคงไม่ช่วยโปสเตอร์ต้นฉบับที่มีปัญหาเรนโบว์เพราะพวกเขาไม่ได้รับเวอร์ชั่นก่อนวางจำหน่าย ขออภัยสำหรับการพูดนอกเรื่องยาว แต่บางทีมันอาจช่วยให้คนอื่นประสบปัญหาที่คล้ายกัน)


1
ง่ายขึ้นสำหรับฉัน: rake=rakeทำงาน
แอนโทนี่ Sottile
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.