Ubuntu rails не удается установить на zlib

Производительность функции get() зависит от двух факторов:

  • Производительность метода [x2] метода объектов hashCode()]
  • Производительность существующих ключевых объектов equals()

Взгляните на документацию HashMap.get() . Карта содержит пары ключевых значений. Чтобы найти правильное значение для ключа, используется метод equals() ключа. В HashMap количество ключей для сравнения уменьшается с помощью хэша. Таким образом, hashCode() выполняется ровно один раз на ключевом объекте, который вы передаете в качестве параметра.

Реализация HashMap затем имеет пару возможных ключевых объектов, которые он должен сравнивать (в идеале только один). Это означает, что он должен выполнить equals() от 1 до n раз.

Если у вас есть тип Set как тип, оба более сложны, поскольку они перебирают все объекты, содержащиеся в Set сам. Взгляните на реализацию equals() и hashCode() в HashSet и сравните его с параметрами String.

Что касается вашего примера: поскольку hashCode() выполняется ровно один раз имеет меньшее влияние, чем equals(). В вашем первом блоке вы вычисляете его один раз для HashSet, а затем get() делает это еще раз для Integer (что на самом деле не так сложно). Это не имеет большого значения в части hashCode(). Первый блок выполняется намного быстрее, потому что equals() выполняется для Integer вместо HashSet, что намного быстрее.

129
задан Flimzy 31 May 2018 в 10:32
поделиться

9 ответов

Если вы столкнулись с этим вопросом, пытаясь установить Ruby с помощью Ruby Version Manager (RVM) на Ubuntu 10.04, то на сайте rvm есть инструкции по установке zlib http://rvm.beginrescueend.com/packages/zlib/

Шаги таковы:

rvm pkg install zlib

(или rvm package install zlib если вы получите "ERROR: Unrecognized command line argument: 'pkg'" - старые версии rvm использовали глагол 'package' вместо этого)

затем

rvm remove 1.9.1
rvm install 1.9.1
297
ответ дан 24 November 2019 в 00:26
поделиться

При запуске Rails я бы не рекомендовал использовать Ruby 1.8.8dev. Придерживайтесь 1.8.6, предпочтительно Ruby Enterprise Edition. См. Этот пост в RailsLab , что используют другие люди.

Если вы настаиваете на высоких технологиях, установите Ruby 1.9.1.

Но в обоих случаях создайте его самостоятельно или воспользуйтесь предложением Marans.

0
ответ дан 24 November 2019 в 00:26
поделиться

Вы можете попробовать загрузить пакет deb для ruby ​​enterprise на сайте phusion . И установить пассажира через пакет. Следуйте инструкциям здесь . Или вы можете попробовать скрипт bash, найденный здесь .

1
ответ дан 24 November 2019 в 00:26
поделиться

Вы пробовали apt-get установить libzlib-ruby?

Также установите rubygems из rubyforge. Мне не нравится пакет rubygems в Ubuntu.

2
ответ дан 24 November 2019 в 00:26
поделиться

да, и это тоже не сработало. Получил это из другого источника, это, наконец, сделало это для меня, где другие вещи потерпели неудачу.

wget http://www.blue.sky.or.jp/atelier/ruby/ruby-zlib-0.6.0.tar.gz
tar xvzf ruby-zlib-0.6.0.tar.gz
cd ruby-zlib-0.6.0
ruby extconf.rb && make
sudo make install

Переустановите рубиновые камни из источника

В любом случае, ребята, спасибо.

4
ответ дан 24 November 2019 в 00:26
поделиться

Проблема в том, что Ruby в Ubuntu не построен на zlib; вы хотите сделать сборку исходного кода для установки Ruby. Вы можете сделать это с помощью apt-get source -b ruby ​​

2
ответ дан 24 November 2019 в 00:26
поделиться

У меня такая же проблема в CentOS, и я исправляю ее, выполнив следующую команду:

Во-первых, я проверяю наличие zlib и zlib-devel (как многие из предложенных выше).

yum install zlib zlib-devel

Во-вторых, я перекомпилировал и установил исходные коды zlib, поставляемого с ruby.

cd /home/myname/installers/ruby-1.8.7-p174/ext/zlib/
ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
make
make install

Эти команды, кажется, решают проблему, затем я выполняю gem update --system , и ошибка с zlib исчезла. Затем я устанавливаю рельсы с рельсами для установки драгоценных камней. Обратите внимание, что я уже устанавливал гем раньше, а после перекомпиляции и установки zlib я не перекомпилирую ни один гем install (на самом деле я не знал, как его удалить, потому что я не нашел для этого скрипта)

работает для меня ... надеюсь на вас.

С уважением.

22
ответ дан 24 November 2019 в 00:26
поделиться

Просто найдите Ruby Source Package, распакуйте его.

Goto /your-ruby-dir/ext/zlib

ruby extconf.rb
make
sudo make install

Если пакетов не хватает, он скажет вам, в основном это пакеты, связанные с libzlib

С уважением

Saurabh

7
ответ дан 24 November 2019 в 00:26
поделиться

попробуйте

aptitude install zlib1g-dev

Затем займитесь своими делами.

13
ответ дан 24 November 2019 в 00:26
поделиться