`Wymagaj ': brak pliku do załadowania - mkmf (LoadError)

563

Próbowałem zainstalować szyny na Ubuntu Natty Narwhal 11.04, używając ruby1.9.1.

Zainstalowałem Ruby, apt-get install ruby1.9.1-fullktóry zawiera pakiet deweloperski. Poszukałem błędu i wszyscy zasugerowali, że zainstalowałem wersję 1.9.1, którą już mam.

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

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
    from extconf.rb:36


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
Omar S.
źródło
1
Miałem równoległy błąd podczas próby zainstalowania watir-webdriver. Zostało również poprawione poprzez zainstalowanie ruby1.0.1-dev
kalejdyczny

Odpowiedzi:

979

Po kilku poszukiwaniach rozwiązania okazuje się, że -devpakiet jest potrzebny, nie tylko ruby1.8. Więc jeśli nie ruby1.9.1robi

sudo apt-get install ruby1.9.1-dev

lub, aby zainstalować ogólną wersję Ruby, użyj (zgodnie z komentarzem @lamplightdev):

sudo apt-get install ruby-dev

powinien to naprawić.

Spróbuj locate mkmfsprawdzić, czy plik rzeczywiście tam jest.

Emil Iwanow
źródło
220
następujące polecenie zainstaluje pakiet dev zgodny z aktualnie zainstalowaną wersją Ruby: sudo apt-get install ruby-dev
lamplightdev
tak, pracował dla mnie. uruchom ruby ​​-v, aby znaleźć wersję, jeśli chcesz zainstalować tylko bieżącą wersję ruby.
Dan Bradbury,
3
@lamplightdev Nie działało dla mnie, wersja Ruby była 1.9.3 i instalowała 1.8 Gdybym próbował zainstalować ruby-dev
Karthik T
1
Zainstalowałem ruby-all-dev, prawdopodobnie będzie działać dla wszystkich wersji.
jcubic
Jest to również wymagane w przypadku aws-sdk, ponieważ SOAP jest przestarzałe dla AWS. Martw się, jeśli interesariusze sprzeciwiają się cokolwiek -dev w wersji produkcyjnej. (SDK też ich nie ekscytują).
mckenzm,
185

To była odpowiedź, która zadziałała dla mnie. Był w powyższych komentarzach, ale zasługuje na swoje właściwe miejsce jako odpowiedź na Ubuntu 12.04 ruby ​​1.8.7

sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential
jmontross
źródło
Warto również zauważyć, że jeśli chcesz korzystać z centrum oprogramowania ubuntu, istnieje dodatek do ruby-dev, który możesz wybrać w polu „Pliki nagłówków do kompilacji modułów rozszerzeń”.
RightHandedMonkey
Użyłem sudo apt-get install ruby1.9.1-devRubiego 1.9.3, zanim zobaczyłem komentarz lub tę odpowiedź, co pozwoliło mi zbudować rozszerzenie szyn. Nie jestem pewien, czy takie niedopasowane wersje spowodują później jakiś ból głowy, ale należy zauważyć, że szyny zostały poprawnie zainstalowane, z niewielką zmianą oficjalnie przyjętej odpowiedzi.
DWils,
Co jeśli masz RVM? Więc nie masz już wersji ruby, której potrzebujesz?
mistrz ten
37

Potrzebowałem również zainstalowanej wersji kompilacji:

sudo apt-get install build-essential
James Dunmore
źródło
To był bilet tutaj. Wyobrażam sobie, że musiałem również zainstalować program ruby-dev, ale nie działał, dopóki nie zainstalowałem również wersji niezbędnej do kompilacji. milion podziękowań
połączenia
30

Problem nadal występuje w systemie Ubuntu 13/04 / 13.10 / 14.04

i

sudo apt-get install ruby1.9.1-dev

wyszło mi dobrze. Więc jeśli używasz Ubuntu 13.04 / 13.10 / 14.04, wtedy użycie tego naprawdę się przyda.

Działa to nawet jeśli wersja Ruby to 1.9.3. Jest tak, ponieważ w repozytorium nie ma ruby1.9.3-dev ...

kenju254
źródło
1
Tak, ten działał również dla mnie na Ruby 1.9.3. W repozytorium ubuntu nie było pakietu dla ruby1.9.3-dev.
DWils,
nie dłużej ... pracował po zainstalowaniu RVM od rvm.io z --ruby - i prawdopodobnie najlepiej apt-get remove ruby przed
dagelf
18

Czy próbowałeś:

sudo apt-get install ruby1.8-dev
Matteo Alessani
źródło
3
Używam 1.9.1, dlaczego mam instalować Ruby1.8-dev?
Omar S.
To jest tak dziwne, że zainstalowałem 1.9.1, ale brzmi 1.8, kiedy uruchamiam ruby ​​-v Dostaję: ruby ​​1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
Omar S.
2
masz ustawiony ruby ​​1.8 jako domyślny ruby ​​w swoim systemie
Matteo Alessani
10

Wystąpił podobny błąd podczas instalowania pakietu

sudo apt-get install ruby-dev

Działa świetnie dla mnie i rozwiązać problem Mint 16 ruby1.9.3

Siergiej Nikołajew
źródło
0

Możesz użyć RVM (menedżer wersji Ruby), który pomaga w zarządzaniu wszystkimi wersjami Ruby na twoim komputerze, co jest bardzo pomocne w rozwoju (podczas migracji do wersji niestabilnej do wersji stabilnej)

lub Linux (ubuntu) sudo apt-get install ruby1.8-dev

następnie, sudo gem install railsaby to sprawdzić, rails -vwyświetli wersję na szynach

potem możesz zainstalować pakiety (wymagane klejnoty do rozwoju)

Mohit Verma
źródło
Nadal możesz używać RVM na Linuksie. Robię to (ale wciąż mam problem z tym błędem mkmf podczas instalowania szyn)
thesecretmaster