no such file to load -- iconv
-
10 мая 2009 20:49
-
Комментарии
Вчера когда ставил блог на FreeBSD (сначала на виртуалку, потом на продакшен сервер) и собирал Ruby Enterprise Edition столкнулся с проблемой отсутствия ruby-модуля iconv что приводило к ошибке: no such file to load – iconv:
Я нашел два способа решения этой проблемы.
Для начала нужно установить библиотеку libiconv, если она ещё не установлена, из пакетов или порта как описано в инструкции по ссылке.
Первый способ заключается в том что нужно установить пакет ruby-iconv, а затем просто скопировать недостающий модуль:
cp /usr/local/lib/ruby/1.8/i386-freebsd6/iconv.so /opt/ruby-enterprise-1.8.6-20090421/lib/ruby/1.8/i386-freebsd6.3/
Этот способ ИМХО не самый удачный т.к. он приводит к тому что ставится много ненужных пакетов. Собственно по этой причине я и стал искать возможность обойти этот недостаток.
Когда после сборки ruby из исходников возникает ошибка no such file to load – xxxx, это означает что один из динамически подгружаемых модулей (xxxx) не был собран т.к. возникли какие-то проблемы, например не удалось найти заголовочные файлы или библиотеки, поэтому как правило надо доустановить их и пересобрать модуль.
Для этого я зашел в каталог с исходниками ruby, где находятся расширения, и попробовал собрать Makefile для iconv используя генератор extconf.rb который находится в том же каталоге.
cd ~/ruby-enterprise-1.8.6-20090421/source/ext/iconv/
/opt/ruby-enterprise-1.8.6-20090421/bin/ruby extconf.rb
Получив такие сообщения об ошибках:
checking for iconv() in iconv.h... no
checking for iconv() in -liconv... no
Как я и говорил выше при сборке не получилось найти заголовочный файл и библиотеку iconv. Погуглив несколько минут я нашел решение. Надо указать путь к директории в которой находятся заголовочные файлы и установленные библиотеки используя ключ with-iconv-dir:
/opt/ruby-enterprise-1.8.6-20090421/bin/ruby extconf.rb --with-iconv-dir=/usr/local
make install
После этой нехитрой процедуры проблема решена.
в формате RSS. Присоединяйся!
Добавить новый комментарий
Вы можете использовать следующие BBCode теги в комментариях:
| BBCode тег | Результат |
|---|---|
| [b]Жирный текст[/b] | Жирный текст |
| [i]Курсив[/i] | Курсив |
| [u]Подчёркнутый текст[/u] | Подчёркнутый текст |
| [url]http://example.com[/url] | http://example.com |
| [url=http://example.com]Example[/url] | Example |
|
[code]for message in @messages puts message.name end[/code] |
|
|
[quote] IE6 must die! [/quote] |
IE6 must die! |

