Проблема установки Ruby Gem в Windows 7 - PullRequest
0 голосов
/ 14 октября 2010

Я пытаюсь установить несколько Gems и мне нужно выполнить следующую команду:

gem install mongrel mongrel_service mysql ruby-postgres oniguruma 
ultraviolet libxml-ruby --no-ri --no-rdoc --platform=mswin32

Однако то, что --platform=mswin32 в конце концов, чертовски беспокоит меня. Я имею в виду, что моя платформа x64, как и должно быть. Когда я удаляю --platform=mswin32 из команды или заменяю mswin32 на mswin64, я получаю длинный список ошибок. Должен ли я беспокоиться о --platform=mswin32 или просто оставить его в покое и оставить? Большое спасибо заранее.

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

Указанный вами параметр платформы используется для поиска предварительно скомпилированных двоичных файлов указанных вами камней.

Но для mswin64 не было предварительно скомпилированных.Более того, все будет зависеть от вашей установки Ruby, если это 64-битная версия или нет.

Кроме того, форсирование платформы может вызвать проблемы с гемами, скомпилированными для другой версии Ruby (1.8 против 1.9)поскольку они различаются по API.

И не забудьте, что вам нужен установленный набор инструментов для компиляции гемов, которые ваша платформа не поддерживает.

0 голосов
/ 14 октября 2010

Вы действительно не должны использовать mswin32 версии Ruby (иначе. One-Click Installer).Они устарели.Они скомпилированы с Microsoft Visual C ++ 6.0 (он же MSVC6), который был выпущен в 1998 году (!).Код, скомпилированный с помощью MSVC6, несовместим с кодом, скомпилированным как с GCC, так и с более новыми версиями MSVC.Это намного медленнее, поскольку за последние 12 лет многое произошло в области исследований оптимизации компиляторов.

Из-за несовместимости все библиотеки, которые использует Ruby, все расширения C, все библиотеки, которые являются расширениями Cиспользовать и так далее, также должны быть скомпилированы с MSVC6.Тем не менее, MSVC6 даже не доступен больше.Кроме того, многие проекты с открытым исходным кодом тестируют только на совместимость с GCC, а не с MSVC (и, конечно, не с версией MSVC, которая устарела в течение почти десятилетия).

Используйте версии mingw32 (также известные как * 1009).* RubyInstaller ) вместо этого.Они скомпилированы с GCC 3.4 или 4.5 ((почти) последняя версия).С дополнительным DevKit вы можете установить любое расширение C, без необходимости предоставления предварительно скомпилированной версии автору гема;gem просто компилируется на вашем локальном компьютере, точно так же, как в Linux или OSX.

Тем не менее, то, что в конце --platform = mswin32, чертовски беспокоит меня.Я имею в виду, что моя платформа x64, как и должно быть.

Вы уверены, что у вас есть 64-битная версия Ruby?Как я писал выше, версии mswin обычно скомпилированы с MSVC6, который вышел в 1998 году. AMD64 была анонсирована только в 1999 году, спецификация не была закончена до 2000 года, а первые процессоры не появлялись до 2003 года, поэтомуесли у Microsoft нет технологии путешествий во времени, 64-битная версия MSVC6 просто не может существовать!

Насколько я знаю, нет предварительно скомпилированных версий Ruby для 64-битной Windows.Разработчики RubyInstaller только начали работать над 64-битной mingw сборкой.

Если вы сами скомпилировали Ruby, вы должны использовать --platform=ruby для принудительной компиляции Gems в вашей локальной системе, посколькускомпилированные mswin32 Доступные гемы несовместимы с вашей системой, так как они: а) 32-битные и б) скомпилированы с MSVC6, который несовместим с любым компилятором, который вы использовали.

0 голосов
/ 14 октября 2010

Моя идея состояла в том, чтобы оставить "--platform = mswin32" в покое и оставить все как есть.Что происходит потом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...