gem install compass - Не удалось создать собственное расширение gem, как показано ниже в Терминале:
johnlove% gem install compass
ERROR: Error installing compass:
ERROR: Failed to build gem native extension.
[ОСНОВЫ]
[Macintosh:~] johnlove% which ruby
/usr/bin/ruby
[Macintosh:~] johnlove% which sass
/usr/local/bin/sass
[Macintosh:~] johnlove% which scss
/usr/local/bin/scss
[Macintosh:~] johnlove% which compass
compass: Command not found.
[БОЛЬШЕ ОСНОВНЫХ]
[Macintosh:~] johnlove% sass -v
Sass 3.5.5 (Bleeding Edge)
[Macintosh:~] johnlove% scss -v
Sass 3.5.5 (Bleeding Edge)
[Macintosh:~] johnlove% ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
[Macintosh:~] johnlove% compass -v
compass: Command not found.
[ОБНОВЛЕНИЕ 2]
сделал это в терминале:
sudo gem install -n /usr/local/bin compass
ПОЛУЧИЛ ЭТО ОБРАТНО
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -I /Library/Ruby/Site/2.3.0 -r ./siteconf20190130-2612-nh9d7t.rb extconf.rb
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/universal-darwin18/rbconfig.rb:215: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040757
checking for ffi.h... no
checking for ffi.h in /usr/local/include,/usr/include/ffi... no
checking for shlwapi.h... no
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
creating extconf.h
creating Makefile
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR = " clean
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR = "
Running autoreconf for libffi
/Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi/autogen.sh: line 2: exec: autoreconf: not found
make: *** ["/Library/Ruby/Gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi-universal-darwin18"/.libs/libffi_convenience.a] Error 127
make failed, exit code 2
конец [ОБНОВЛЕНИЕ 2]
=====
[ОБНОВЛЕНИЕ 1]
Я прочитал, что мои ПУТИ могут быть настроены неправильно, поэтому я запустил:
gem env
и получил обратно:
RubyGems Environment:
- RUBYGEMS VERSION: 3.0.2
- RUBY VERSION: 2.3.7 (2018-03-28 patchlevel 456) [universal.x86_64-darwin18]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.3.0
- USER INSTALLATION DIRECTORY: /Users/johnlove/.gem/ruby/2.3.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
- GIT EXECUTABLE: /usr/bin/git
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /Users/johnlove/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-18
- GEM PATHS:
- /Library/Ruby/Gems/2.3.0
- /Users/johnlove/.gem/ruby/2.3.0
- /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/gems/2.3.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Library/Frameworks/Python.framework/Versions/Current/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
Что я должен искать, если мои ПУТИ перепутались?
Еще одна загадка?
sudo gem install compass
Вернулся?
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
Я попытался создать ЛОКАЛЬНЫЙ каталог usr/local/bin с полными разрешениями на чтение и запись.
НЕ УДАЛОСЬ!
конец [ОБНОВЛЕНИЕ 1]
=====
после получения ошибки собственного расширения я последовал
compass -v compass: Command not found.
Я скачал и установил приложение compass.app, которое теперь отображается в строке меню. Я даже создал Compass Project для одного из моих не дерзких проектов.
Итак, как Compass.app успешно устанавливается без компаса?
Пробовал его...
sudo gem update --system
Вернул это...
Latest version already installed. Done.
Затем я попробовал это:
sudo apt-get install ruby-dev
Получил это:
apt-get: command not found
Я сделал это:
xcode-select --install
вернулся:
command line tools are already installed
Думаю, я не могу винить в этом Xcode.
Заранее спасибо за спасение моего разума...
Ошибки в исходном посте связаны с неправильно настроенной средой Ruby и с установкой компаса с sudo
. Вы никогда не должны использовать sudo
для установки драгоценных камней, независимо от того, сколько раз вы видите его в качестве принятого ответа на Stack Overflow. Вот почему.
На высоком уровне настройка правильной среды разработки Ruby на Mac включает шесть шагов:
~/.bash_profile
или ~/.zshrc
) — у каждого менеджера есть инструкции для этого, и это типичный шаг, который люди пропускают.Лично я предпочитаю грубый с рубиновая установка. Для получения более подробной информации и сценария, который может автоматизировать весь этот процесс, ознакомьтесь с моим ответом здесь: https://stackoverflow.com/a/54873916/928191
Я не уверен, но вы установили build-essential перед попыткой установить этот гем? Это общая проблема для пользователей Linux
Попробуйте установить его перед установкой этого гема, например:
sudo apt-get install build-essential
а затем установите драгоценный камень
sudo gem install compass
Я сделал простой тест с помощью докера, и он работает только тогда, когда я его устанавливаю, например:
Не работает
docker run -it bash ubuntu:16.04 bash
apt-get update
apt-get install ruby2.3 ruby2.3-dev -y
gem install compass
Оно работает
docker run -it bash ubuntu:16.04 bash
apt-get update
apt-get install build-essential ruby2.3 ruby2.3-devel
gem install compass
Почему build-essentials?
Пакет build-essentials — это справочник по всем пакетам, необходимым для компиляции пакета Debian. Обычно он включает компиляторы и библиотеки GCC/g++ и некоторые другие утилиты. Проверьте документацию: Здесь!