Во-первых, я благодарю человека, который придумал решение отсутствующей проблемы zlib. (Это был не я.: -)
К сожалению, я потерял ссылку на исходную публикацию, но суть решения для Linux состоит в том, чтобы скомпилировать Ruby, в то время как заголовочные файлы zlib доступны для скрипта Ruby configure. В Debian это означает, что пакеты разработки zlib должны быть установлены до того, как вы начнете компилировать Ruby.
Остальная часть моего текста здесь не содержит ничего нового, и рекомендуется его пропустить, если вы чувствуете себя комфортно при настройке среды выполнения в UNIX-подобных операционных системах. Ниже приведено сочетание краткого введения с некоторыми основами и пошаговыми инструкциями.
------ The-старт-оф-How-To -------------------------
Если кто-то хочет запустить программу, скажем, irb, из консоли, то файл с именем irb ищется из папок в порядке, который описывается переменной среды PATH. Можно увидеть значение PATH, набрав в командной оболочке bash (и нажав клавишу Enter):
echo $PATH
Например, если в системе есть 2 версии irb, одна из которых установлена "официальной" системой управления пакетами, скажем, yum или apt-get, в / usr / bin / irb, а другая - компилируется пользователем с именем scoobydoo и находится в / home / scoobydoo / ourcompiledruby / bin, тогда возникает вопрос, какой из двух irb-ов выполняется.
Если кто-то пишет в
/home/scoobydoo/.bashrc
строка вроде:
export PATH="/home/scoobydoo/ourcompiledruby/bin:/usr/bin"
и перезапускает оболочку bash, закрыв окно терминала и открыв новое, а затем набрав в консоли irb,
/ home / scoobydoo / ourcompiledruby / bin / irb выполняется. Если кто-то написал
export PATH="/usr/bin:/home/scoobydoo/ourcompiledruby/bin"
к
/home/scoobydoo/.bashrc
тогда / usr / bin / irb будет выполнен.
На практике хочется написать
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
потому что это добавляет все значения, которые PATH имел до этого назначения к / home / scoobydoo / ourcompiledruby / bin. В противном случае возникнут проблемы, поскольку не все распространенные инструменты находятся в / usr / bin, и, возможно, кто-то захочет использовать несколько пользовательских приложений.
Та же логика применяется к библиотекам, за исключением того, что имя переменной среды - LD_LIBRARY_PATH
Использование LD_LIBRARY_PATH и PATH позволяет обычным пользователям, не имеющим корневого доступа или желающим экспериментировать с программным обеспечением, которому не доверяют, создавать их и использовать без необходимости каких-либо привилегий root.
В остальной части этого мини-практического руководства предполагается, что мы создадим собственную версию ruby и будем использовать нашу собственную версию почти независимо от того, что установлено в системе официальным программным обеспечением для управления пакетами дистрибутива.
1) =============================
Сначала создаются несколько папок и устанавливаются переменные среды, чтобы папки были «полезными».
mkdir /home/scoobydoo/ourcompiledruby
mkdir -p /home/scoobydoo/lib/our_gems
Один добавляет следующие 2 строки к
/home/scoobydoo/.bashrc
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
export GEM_HOME="/home/scoobydoo/lib/our_gems"
Перезапустите оболочку bash, закрыв текущее окно терминала и открыв новое, или набрав
bash
в командной строке текущего открытого окна.
Изменения в /home/scoobydoo/.bashrc не влияют на окна / сеансы терминала, которые были запущены до сохранения измененной версии /home/scoobydoo/.bashrc
Идея состоит в том, что /home/scoobydoo/.bashrc выполняется автоматически в начале сеанса, даже если пользователь входит в систему через ssh.
2) =============================
Теперь необходимо убедиться, что пакеты разработки zlib доступны в системе. По состоянию на апрель 2011 года я не разобрался в деталях, но
apt-get install zlibc zlib1g-dev zlib1g
кажется достаточным в системе Debian. Идея состоит в том, что оба файла библиотеки и заголовочные файлы доступны в «официальном» поисковом пути системы. Обычно apt-get и так же помещают файлы заголовков в / usr / include и файлы библиотеки в / usr / lib
3) =============================
Загрузите и распакуйте исходный файл tar.gz с http://www.ruby -lang.org
./configure --prefix=/home/scoobydoo/ourcompiledruby
make
make install
4) =============================
Если консольная команда, такая как
which ruby
вывод на консоль
/home/scoobydoo/ourcompiledruby/bin/ruby
затем вновь скомпилированная версия исполняется по команде
ruby --help
5) =============================
Остальные программы, gem, irb и т. Д., Могут быть правильно выполнены с помощью таких команд, как:
ruby `which gem` install rake
ruby `which irb`
Так не должно быть, но по состоянию на апрель 2011 года я не нашел более изящных способов сделать это. Если
ruby `which gem` install rake
снова выдает ошибку отсутствия zlib, затем нужно просто попытаться выяснить, как сделать файлы и библиотеку zlib доступными для скрипта Ruby configure и перекомпилировать. (Извините, в настоящее время у меня нет лучшего решения, чтобы предложить.)
Может быть, грязным решением может быть добавление следующих строк в
/home/scoobydoo/.bashrc
alias gem="`which ruby` `which gem` "
alias irb="`which ruby` `which irb` "
На самом деле, я обычно использую
alias irb="`which ruby` -KU "
но камень должен быть выполнен без указания рубина аргументами "-KU", потому что в противном случае будут ошибки.
* 1 089 * ------ The-конец-оф-хау к ------------------------