Установите pg_partman в macOS

Привет, у меня PostgreSQL 12 установлен homebrew, и я клонирую pg_partman в этом коммите https://github.com/pgpartman/pg_partman/commit/63328c5bd1f8009fc95592fcdd8ff45f148829e6.

В клонированной папке я запустил make install но он говорит:

      (pg_partman) git:(master) $ make install

cat sql/types/types.sql sql/tables/tables.sql sql/functions/apply_cluster.sql sql/functions/apply_constraints.sql sql/functions/apply_foreign_keys.sql sql/functions/apply_privileges.sql sql/functions/apply_publications.sql sql/functions/autovacuum_off.sql sql/functions/autovacuum_reset.sql sql/functions/check_control_type.sql sql/functions/check_default.sql sql/functions/check_name_length.sql sql/functions/check_subpart_sameconfig.sql sql/functions/check_subpartition_limits.sql sql/functions/create_function_id.sql sql/functions/create_function_time.sql sql/functions/create_parent.sql sql/functions/create_partition_id.sql sql/functions/create_partition_time.sql sql/functions/create_sub_parent.sql sql/functions/create_trigger.sql sql/functions/drop_constraints.sql sql/functions/drop_partition_column.sql sql/functions/drop_partition_id.sql sql/functions/drop_partition_time.sql sql/functions/dump_partition_table_definition.sql sql/functions/inherit_template_properties.sql sql/functions/partition_data_id.sql sql/functions/partition_data_time.sql sql/functions/partition_gap_fill.sql sql/functions/reapply_privileges.sql sql/functions/run_maintenance.sql sql/functions/show_partition_info.sql sql/functions/show_partition_name.sql sql/functions/show_partitions.sql sql/functions/stop_sub_partition.sql sql/functions/undo_partition.sql sql/procedures/partition_data_proc.sql sql/procedures/reapply_constraints_proc.sql sql/procedures/run_maintenance_proc.sql sql/procedures/undo_partition_proc.sql > sql/pg_partman--4.4.1.sql
clang -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I./ -I/usr/local/opt/postgresql@12/include/server -I/usr/local/opt/postgresql@12/include/internal -I/usr/local/Cellar/icu4c/67.1/include -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/readline/include   -c -o src/pg_partman_bgw.o src/pg_partman_bgw.c
src/pg_partman_bgw.c:10:10: fatal error: 'postgres.h' file not found
#include "postgres.h"
         ^~~~~~~~~~~~
1 error generated.
make: *** [src/pg_partman_bgw.o] Error 1

Быстрое расследование предлагает установить postgresql-server-dev-12, но я не могу найти ничего подходящего для macOS.

Есть идеи, что мне не хватает? Заранее спасибо!

3 ответа

Я думаю, что у меня был установлен плохой PostgreSQL, когда я задал вопрос (вот почему отсутствует заголовок). Поэтому, если вы столкнетесь с той же ошибкой, вы можете попробовать переустановить PostgreSQL.

Установка pg_partman происходит точно так же, как описано в их README . Клонируйте репозиторий, измените конфигурацию PostgreSQL, перезапустите PostgreSQL, затем запустите CREATE EXTENSION.

      $ git clone https://github.com/pgpartman/pg_partman.git
$ cd pg_partman
$ make install

$ vim /usr/local/var/postgres/postgresql.conf
shared_preload_libraries = 'pg_partman_bgw'     # (change requires restart)

$ brew services restart postgresql

$ psql yourdb
=# CREATE EXTENSION pg_partman;

Тогда ты можешь \dx чтобы узнать, правильно ли вы установили:

      List of installed extensions
        Name        | Version |   Schema   |                              Description
--------------------+---------+------------+------------------------------------------------------------------------
 pg_partman         | 4.5.1   | public     | Extension to manage partitioned tables by time or ID

Я установил определенную версию postgres (12), поэтому я думаю, что установщик не смог найти каталог моего сервера postgres. Команда, которая сработала для меня, была:

      make CFLAGS="-I/usr/local/Cellar/postgresql@12/12.12_2/include/postgresql/server/" install

Я установил postgres сbrew install postgresql@12, если ваша версия отличается, вам может понадобиться немного другой путь в вашей команде. Я нашел путь, выполнив:

      find /usr/local/Cellar -name "postgres.h" -print

Конечно, у меня установлено несколько версий postgres, поэтому я нашел каталог той, которую на самом деле запускаю, и использовал ее.

Или используйте эту пользовательскую формулу домашнего приготовления из https://github.com/sj26/homebrew-postgresql-extensions/:

      $ brew install sj26/postgresql-extensions/pg_partman

Затем следуйте инструкциям по редактированию postgresql conf.

Другие вопросы по тегам