gem install memcached не работает на Lion

Я хочу использовать гем memcached (http://fauna.github.com/fauna/memcached/) в Mac OS X Lion (10.7.2). Xcode 4.2 уже установлен.

Я установил memcached и libmemcached от Homebrew.

$ brew list -v 
libmemcached 0.50
memcached 1.4.10

И я использую ruby ​​​​1.9.3-p0 с rvm (менеджер версий ruby).

$ ruby -v 
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
$ rvm -v
rvm 1.9.2 by Wayne E. Seguin ([email protected]) [https://rvm.beginrescueend.com/]

Но я не могу установить гем memcached (1.3.5). Я вставил журнал установки после git. https://gist.github.com/1395459

При создании libmemcached произошли некоторые ошибки. Я видел каталоги этого.

$ pwd 
/Users/inohiro/.rvm/gems/ruby-1.9.3-p0/gems/memcached-1.3.5/ext/libmemcached-0.32

Конфигурация прошла успешно. Но сделать (все) не удалось.

$ make all
make  all-recursive
Making all in docs
make[2]: Nothing to be done for `all'.
Making all in libmemcached
make  all-am
make[3]: Nothing to be done for `all-am'.
Making all in libmemcachedutil
make[2]: Nothing to be done for `all'.
Making all in support
make[2]: Nothing to be done for `all'.
Making all in clients
/bin/sh ../libtool --tag=CC   --mode=link gcc -std=gnu99 -O3  -pedantic -Wall -Wextra -Wundef -Wshadow  -fdiagnostics-show-option -fvisibility=hidden -Wformat=2  -Wstrict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wwrite-strings    -D_THREAD_SAFE   -rpath /usr/local/lib/libmemcached -lsasl2 -L/usr/local/lib -o memcat memcat.o libutilities.la ../libmemcached/libmemcached.la 
libtool: link: gcc -std=gnu99 -O3 -pedantic -Wall -Wextra -Wundef -Wshadow -fdiagnostics-show-option -fvisibility=hidden -Wformat=2 -Wstrict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wwrite-strings -D_THREAD_SAFE -o .libs/memcat memcat.o  -L/usr/local/lib ./.libs/libutilities.a ../libmemcached/.libs/libmemcached.dylib -lsasl2
Undefined symbols for architecture x86_64:
  "_memcached_create", referenced from:
      _main in memcat.o
  "_memcached_behavior_set", referenced from:
      _main in memcat.o
      _process_hash_option in libutilities.a(utilities.o)
  "_memcached_get", referenced from:
      _main in memcat.o
  "_memcached_free", referenced from:
      _main in memcat.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [memcat] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Полный журнал настройки и сборки libmemcached находится здесь. https://gist.github.com/1395470

Подскажите, пожалуйста, как установить гем memcached на Lion :/

Постскриптум-1

Я попробовал "варить ссылку memcached". Но вернуть ошибку. Что я должен делать?

$ brew link memcached 
Linking /usr/local/Cellar/memcached/1.4.10... 
Error: Cannot link memcached
Another version is already linked: /usr/local/Cellar/memcached/1.4.10

Постскриптум-2

Я попытался удалить /usr/local/Cellar/memcached/. И запустите 'brew link memcached', но получите следующую ошибку.

$ rm -rf memcached
$ brew link memcached 
Error: No such keg: /usr/local/Cellar/memcached

person inohiro    schedule 30.11.2011    source источник


Ответы (2)


сделай это:

ls -l /usr/local/include/memcached
lrwxr-xr-x  1 root  staff  43 Jul 18 14:17 /usr/local/include/memcached -> ../Cellar/memcached/1.4.5/include/memcached

вам нужно сначала удалить эту старую ссылку:

sudo rm /usr/local/include/memcached

затем попробуйте brew link memcached еще раз

Вы, вероятно, также хотите сделать это:

Установлен memcached через доморощенный, как запустить и остановить сервер?

person Tilo    schedule 30.11.2011
comment
Спасибо за вашу доброту. Но я не мог решить. Добавьте Постскриптум-2. - person inohiro; 01.12.2011
comment
Является ли sudo rm /usr/local/include/memcaced (‹-это правильная символическая ссылка? Или sudo rm /usr/local/Cellar/memcaced/ (‹-это каталог? - person inohiro; 01.12.2011
comment
извините, это была опечатка. Попробуйте это: sudo rm /usr/local/include/memcached - person Tilo; 02.12.2011
comment
вам также необходимо удалить символическую ссылку /usr/local/include/memcached! - person Tilo; 03.12.2011
comment
да. Я удалил символическую ссылку (/usr/local/include/memcached/). Но ошибка (Postscript-1) все равно показывалась. - person inohiro; 07.12.2011
comment
Спасибо. Наконец-то мне это удалось. memcached.gem был обновлен. - person inohiro; 15.02.2012

Я думаю, проблема в том, что gcc не может найти библиотеку memcached, установленную brew.

Попробуйте запустить brew link memcached, затем снова запустите gem install memcached.

person miaout17    schedule 30.11.2011
comment
Спасибо за ваш комментарий! Добавляю постскриптум по этому поводу. - person inohiro; 30.11.2011