PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Ruby 'pg' gem, свързващ грешно копие на libpq.5.dylib (на OSX)

Както причината за проблема, така и лесното решение станаха очевидни, когато стартирах bin/pg_config в командния ред.

pg_config генерира променливите, които се използват за контрол на компилацията и свързването. Особен интерес представляват LIBDIR и LDFLAGS. LIBDIR определя местоположението за статичните библиотеки, докато LDFLAGS предоставя местоположения за търсене на динамични библиотеки. В моята система LIBDIR беше настроен правилно на /LibraryPostgreSQL/9.3/lib , но LDFLAGS беше зададен както следва:

LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Тъй като libpq.5.dylib не присъстваше на нито едно от тези места, скъпоценният камък не успя да го намери и вместо това намери по-стара версия, която беше инсталирана на /usr/lib .

Един от начините да поправите това би било да инжектирате правилното местоположение на файла в LDFLAGS, вероятно чрез модифициране на кода в extconf.rb който генерира конфигурационния файл. Въпреки това, много по-лесно решение в този случай е просто да добавите символна връзка в /usr/local/lib до правилното местоположение на файла:

/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Ако срещнете подобен проблем, просто проверете изхода на pg_config и вижте дали можете да поставите символна връзка към правилното местоположение на файла в една от директориите, които вече са посочени от LDFLAGS.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оптимизирайте обхвата на заявки за времеви печати на Postgres

  2. INSERT с име на динамична таблица в тригерна функция

  3. Drop колона не премахва препратките към колони изцяло - postgresql

  4. Escape функция за регулярен израз или модели LIKE

  5. Бъдещето на Postgres-XL