Почему пакет не будет устанавливать JSON?
При попытке запустить cap production deploy
я получаю следующую ошибку.
DEBUG [dc362284] Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284] An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284] Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
Возможно, важно отметить, что это развертывание работало, чем я обновил до Ruby 2.1.0, чтобы удалить ошибку кодирования. Я обновил локально, что отлично работало. Я запустил rvm install 2.1.0
и rvm use 2.1.0
, а затем изменил мой файл .ruby-version
, чтобы отразить это обновление Ruby.
Команда bundle install
работает локально, но производит такую же ошибку выше, когда я ssh на целевом сервере и запускаю эту команду.
Если я запустил gem list
, я вижу это в списке драгоценных камней.
...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...
Если я попробую рекомендуемое решение gem install json -v '1.8.1'
Локально и на целевом сервере, я получаю следующий вывод:
Building native extensions. This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed
Итак, кажется, что камень установлен, правильно? Почему это происходит? Как я могу это решить? Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Итак, после половины дня на этом и почти сразу после публикации моего вопроса я нашел ответ. Bundler 1.5.0 имеет ошибку, в которой он не распознает самолеты по умолчанию, как указанные здесь
Решением было обновление до пакета 1.5.1 с помощью gem install bundler -v '= 1.5.1'
Ответ 2
Запустите эту команду, тогда все будет нормально
sudo apt-get install libgmp-dev
Ответ 3
если вы находитесь в MacOS Sierra, а ваша рубиновая версия - 2.4.0. Рубиновая версия не совместима с json 1.8.3.
Вы можете попробовать добавить эту строку в свой Gemfile:
gem 'json', github: 'flori/json', branch: 'v1.8'
Это работает для меня!
Ответ 4
$ bundle update json
$ bundle install
Ответ 5
Я нашел решение здесь. Существует проблема с json версии 1.8.1 и ruby 2.2.3, поэтому установите версию json 1.8.3.
gem install json -v1.8.3
Ответ 6
Вы должны попробовать
$ sudo gem install json -v '1.8.2'
в моем случае (Ubuntu 14.04), который не работал напрямую, и я должен был сделать это:
$ sudo apt-get install ruby-dev
а затем я смогу установить драгоценный камень и продолжить. Была еще одна проблема, которая была исправлена:
$ sudo apt-get install libsqlite3-dev
Надежная помощь.
Ответ 7
Чтобы решить эту проблему, просто запустите:
bundle update
Он обновит версию вашего поставщика. Затем запустите:
bundle install
Ваша проблема будет решена. Решение хорошо объяснено здесь.
Ответ 8
Я столкнулся с этой ошибкой, пытаясь запустить проект в своем локальном блоке dev (OSX 10.6), используя Sinatra и Postgresql (через activerecord), работая на rvm'd ruby 2.1. Я нашел здесь свой ответ: https://github.com/wayneeseguin/rvm/issues/2511
Моя точная проблема (после первого блока записей журнала):
Я также получаю сообщение об ошибке при попытке создания собственных расширений для драгоценных камней
Ответ :
rvm переустановить 2.1.0 --disable-binary
:
OSX не имеет диспетчера пакетов, поэтому все библиотеки должны быть установлены вручную пользователем, что делает невозможным связывание двоичного файла в виртуальном режиме, и, как вы видите, есть проблемы с (псевдо) статически связанным двоичным кодом.
Для полноты я сначала забыл обновить rvm (rvm get head
), что дало некоторые другие ошибки, но по-прежнему понадобилось флаг --disable-binary
, когда я это сделал.
Ответ 9
Если рекомендуемый ответ не помог, потому что вы уже используете более новую версию bundler. Попробуйте решение, которое сработало для меня.
Удалите все содержимое папки поставщика.
Добавьте строку в свой gemfile
gem 'json', '1.8.0'
Затем запустите - bundle update json
.
Кажется, проблема с 1.8.1, поэтому возвращение к 1.8.0 сделало трюк для меня.
Ответ 10
bundle update json
. Помогли пройти.
Ответ 11
Для OS X убедитесь, что у вас есть coreutils
$ brew install coreutils
$ bundle
Ответ 12
Это, как представляется, ошибка в Bundler, не признающая стандартные камни, установленные вместе с ruby 2.x. Я все еще сталкивался с проблемой даже с последней версией пакета (1.5.3).
Одним из решений является просто удалить json-1.8.1.gemspec из каталога gemspec по умолчанию.
rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec
После этого у комплектатора не должно быть проблем с поиском драгоценного камня. Обратите внимание, что я использую chruby. Если вы используете какой-либо другой менеджер рубинов, вам придется соответствующим образом обновлять свой путь.
Ответ 13
Мне не хватало решение заголовков C, чтобы загрузить его для Xcode, это лучший способ.
xcode-select --install
Надеюсь, что это поможет.
Ответ 14
Я установил последнюю версию json:
gem install json
Затем удалили строку json (1.8.1) из Gemfile.lock и выполнили
bundle install
И тогда файл Gemfile.lock использует json (1.8.3) без erros
Ответ 15
Bundle не смог установить json -v '1.8.1', и удаление моего Gemfile.lock и запущенного пакета снова решило эту проблему для меня.
Ответ 16
Переключить рубиновую версию с 1.9 на 2.2 с помощью rvm выполнила эту работу для меня
Ответ 17
Для меня некоторые из ответов, упомянутых ранее, были полезны с точки зрения понимания, но это не помогло решить мою проблему.
Итак, это то, что я сделал для решения проблемы.
- Измененный файл gemfile.lock для обновления json (2.0.2) (раньше это был 1.8.3)
- Проверьте установленную версию Bundler (команда
Bundler -v
). У меня установлена версия 1.12.5.
- Установить пакетный пакет версии 1.11.2 (с помощью
gem install bundler -v '1.11.2'
)
- Затем выполните установку пакета
Ответ 18
Для macOS Sierra:
Я столкнулся с этой ошибкой. Когда я использовал компоновщик (v1.15.3
) в проекте Rails (v4.2
).
Решение для меня - gem uninstall bundler -v '1.15.3'
и gem install bundler -v '1.14.6'
.