'require': 해당 파일을로드 할 수 없음 —`rails server` 실행시 'nokogiri \ nokogiri'(LoadError)
DevKit을 사용하여 Windows 8.1에서 Ruby 2.2.1을 새로 설치하고 있습니다. 설치 후 다음을 실행합니다.
gem install rails
rails new testapp
cd testapp
rails server
나머지는 모두 기본값으로 둡니다.
서버를 실행하는 대신 오류 메시지가 표시되면 마지막 줄에서 프로세스가 실패합니다.
in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError)
매번 발생하고 나는 주변을 둘러보고 그것을 고치기 위해 찾은 모든 것을 시도했지만 지금까지 아무것도 작동하지 않았습니다.
여기서 문제는 무엇이며 간단한 테스트 Rails 앱이 작동하도록하려면 어떻게해야합니까?
Nokogiri는 아직 Windows에서 Ruby 2.2를 지원하지 않습니다. 다음 릴리스가됩니다. 참조 https://github.com/sparklemotion/nokogiri/issues/1256를
Nokogiri는 Windows에서 기본 빌드 (예 : devkit 사용)를 지원하지 않습니다. 대신 미리 빌드 된 DLL을 포함하는 gem을 제공합니다.
여기에서 devkit 빌드 지원 주제에 참여하거나 시청할 수있는 토론이 있습니다 : https://github.com/sparklemotion/nokogiri/issues/1190
먼저 현재 가지고있는 Nokogiri 버전을 제거하십시오.
gem uninstall nokogiri
다운로드 노코 기리 1.6.6.2 (64) 또는 노코 기리 1.6.6.2 (86)
다음을 사용하여이 버전을 로컬에 설치합니다.
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem
또는 32 비트 Ruby를 실행중인 경우 :
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem
경로는 파일을 다운로드 한 위치에 따라 다를 수 있습니다.
을 사용하여 서버를 다시 시작하면 ruby bin\rails server
작동합니다.
Mike Dalessios와 Julios가 혼합 된 Windows 10에서 Ruby 2.2로 Nokogiri를 실행했습니다.
- Nokogiri의 github repo 에서 최신 버전의 Nokogiri를 찾으십시오 .
- 을 실행
gem uninstall nokogiri
합니다. gem "nokogiri", ">= 1.6.7.rc"
Gemfile에 추가 하십시오.- 을 실행
bundle install
합니다. bundle update nokogiri
번들이 일부 버전에서 Nokogiri를 잠근 경우 실행하십시오 .
고치다
- 번들 설치 (Nokogiri 파일 가져 오기)
- 찾아보기
ruby_dir\lib\ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
- 열다
extconf.rb
- 추가
dir_config('iconv').any? or pkg_config('libiconv')
로#376
- Mega에서 다운로드
MinGW64
및MSYS
폴더 PATH
Windows에서 추가 (Devkit
경로 참조 제거 -작동하지 않음)- 다운로드
libxml2
,libxslt
,iconv
라이브러리 (또는 여기 ) ruby extconf.rb --platform=ruby --n --use-system-libraries
다운로드 한 라이브러리 참조 실행- 운영
make
- 운영
make install
단계
번들 설치
첫 번째 단계는 것입니다 번들 .
이렇게하면 nokogiri
미리 패키지 된 컴파일러 (대부분 Windows에서는 작동하지 않음)를 실행하지 않고 시스템에 gem을 넣을 수 있습니다.
그러면 Nokogiri가 설치된 것으로 표시 됩니다 .
검색
받는 사람 찾아 nokogiri
찾아, 폴더 ext/nokogiri/extconf.rb
:
열다 extconf.rb
... 그리고 추가 dir_config('iconv').any? or pkg_config('libiconv')
로#376
표준 노코 기리은의 "의지"설치 libxml2
의 포함 iconv
- 우리는 그렇지 명시 적으로 정의 할 필요가 iconv.h is missing
오류가 발생합니다.
툴체인 추가
devkit
이것을 위해 사용하지 마십시오 -작동하지 않습니다.
다음이 필요합니다 MinGW
.
Mega에 내 정확한 폴더 MinGW64
와 MSYS64
폴더 를 압축했습니다 (키 :)!FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA
:
PATH에 추가
그러면 gcc
& make
(둘 다 필수)에 액세스 할 수 있습니다 .
devkit
경로 에서 참조를 제거하고 다음을 추가하십시오.
- MINGW64_PATH / bin
- MSYS64_PATH / bin
라이브러리 다운로드
Mega에 libs를 추가했습니다.
여기에서 압축을 풉니 다.
운영 extconf.rb
libs가 시스템에 있으면 실행 ruby extconf.rb
하여 빌드를 구성 할 수 있습니다 .
32 비트
ruby extconf.rb --platform=ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/iconv-1.14-win32-x86 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxslt-1.1.28-win32-x86
64 비트
#64 ruby extconf.rb --platform=ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/iconv-1.14-win32-x86_64 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxslt-1.1.28-win32-x86_64
make
" Error 1 (ignored)
" 로 표시되는 한 오류 / 경고가 발생할 수 있습니다 .
그 후 다음을 사용하십시오 make install
.
그런 다음 Rails 설치를 찾아 다음을 실행합니다 rails s
.
설명
컨텍스트를 제공하려면 :
Windows의 Ruby 2.2 이상은 Nokogiri에 필요한 확장을 컴파일하지 않습니다 .
gem 의 확장 은 사용하는 추가 종속성 (라이브러리)입니다.
gem 을 설치할 때 빌드됩니다 .
확장 기능이 없기 때문에 Nokogiri가 실행되지 않습니다.
확장 기능 ext
은 gem 폴더 에 있습니다 (여기에서 읽을 수 있습니다 ).
Mysql2
,RMagick
,PGSQL
, Nokogiri
etc all use extensions/libraries.
This is why - on Windows - you have to use custom switches (--with-opt-dir
) when installing the gem. This gives Ruby / the shell / (cmd
) the required lib
/ include
directories required to build the gem's files (it's the equivalent of how PATH
works).
On Linux
/Mac
, these directories are managed with the respective package managers (brew
/apt-get
). Windows does not have this, so you have to install the extensions manually.
Because Windows does not have a standard set of libraries, you have to download them yourself. You also have to build them yourself (which is tricky).
Nokogiri 설치에 대한 수정 사항은 올바른 라이브러리를 사용하고 도구를 빌드하여 gem을 설치하는 것입니다.
짓다
Ruby 2.2+와의 차이점은 gem이 예외없이 "설치"된다는 것입니다. 당신은 그것이 설치되었다고 생각하지만 Rails 가로 드되지 않는다는 것을 발견하기 위해 (따라서 nokogiri/nokogiri.so
오류).
즉, 시스템에 파일이 있는지 확인하고 컴파일러를 실행하여 설치해야합니다.
위의 문서는 그 방법을 보여줄 것입니다.
'developer tip' 카테고리의 다른 글
inline! important를 재정의 할 수 있습니까? (0) | 2020.12.08 |
---|---|
Mac OS X에서 C ++ 프로파일 링 (0) | 2020.12.08 |
예약 된 이벤트가 아닌 람다 함수로 SQS 대기열을 처리하는 방법은 무엇입니까? (0) | 2020.12.07 |
Vue.js-단일 파일 구성 요소에서 전역 적으로 사용 가능한 도우미 기능 만들기 (0) | 2020.12.07 |
.net에서 프로그래밍 방식으로 연결 문자열 구성을 설정하려면 어떻게해야합니까? (0) | 2020.12.07 |