Я слепо следовал этому руководству по установке PostgreSQL и Apache AGE и хотел бы лучше понять этот процесс. В видео он использовал множество опций и флагов для команды ./configure, которую я скопировал ниже:
./configure --prefix=$(pwd) --enable-cassert --enable-debug CFLAGS = "-glldb -ggdb -0g -g3 -fno-omit-frame-pointer"
Он упомянул, что --prefix=$(pwd) требуется для установки пользовательского местоположения, поскольку у него установлено несколько экземпляров Postgres. Означает ли это, что без этого Postgres будет каждый раз устанавливаться в одно и то же место? Если да, то где он будет установлен? Я не могу найти его ни в одном из моих системных файлов, в отличие от того, когда я установил Postgres с помощью пакетов и установщиков, которые появились в моем каталоге /libraries.
--enable-cassert и --enable-debug используются для включения инструментов разработки для отладки, но мне не ясны различия между ними.
Что касается CFLAGS, я понятия не имею, что происходит.
Заранее спасибо.
Большинство ответов на ваши вопросы можно найти в официальной документации Postgres. Я связал его ниже, но я также сосредоточусь на упомянутых вами моментах.
Https://www.postgresql.org/docs/current/install-procedure.html#CONFIGURE-OPTIONS
--prefix=$(pwd) --enable-cassert --enable-debug
Все вышеперечисленное — это параметры конфигурации, которые использует сам postgres. Взято непосредственно из документации, вот что они означают:
--prefix=PREFIX
Установите все файлы в каталог PREFIX вместо /usr/local/pgsql. Фактические файлы будут установлены в различные подкаталоги; никакие файлы никогда не будут установлены непосредственно в каталог PREFIX.
--enable-debug
Компилирует все программы и библиотеки с отладочными символами. Это означает, что вы можете запускать программы в отладчике для анализа проблем. Это значительно увеличивает размер установленных исполняемых файлов, а на компиляторах, отличных от GCC, обычно также отключает оптимизацию компилятора, вызывая замедление. Однако наличие доступных символов чрезвычайно полезно для решения любых проблем, которые могут возникнуть. В настоящее время этот вариант рекомендуется для производственных установок, только если вы используете GCC. Но вы всегда должны иметь его включенным, если вы занимаетесь разработкой или запускаете бета-версию.
--enable-cassert
Включает проверки утверждений на сервере, которые проверяют многие условия «не может произойти». Это бесценно для целей разработки кода, но тесты могут значительно замедлить работу сервера. Кроме того, включение тестов не обязательно повысит стабильность вашего сервера! Проверки утверждений не классифицируются по степени серьезности, поэтому то, что может быть относительно безобидной ошибкой, все же приведет к перезапуску сервера, если оно вызовет ошибку утверждения. Этот параметр не рекомендуется для использования в производственной среде, но его следует включить для разработки или запуска бета-версии.
CFLAGS = "-glldb -ggdb -0g -g3 -fno-omit-frame-pointer"
Что касается вышеизложенного, это параметры, которые вы можете установить для самого компилятора C, а не для postgres. Вы можете найти их по отдельности для получения дополнительной информации, но чтобы дать вам представление, -0g — это флаг компилятора, который определяет уровень оптимизации кода, выполняемый компилятором. Вот ссылка, содержащая дополнительную информацию:
Https://wiki.gentoo.org/wiki/GCC_optimization/en#-O
Если вы хотите изучить подробнее, вы можете изучить здесь
Я попытаюсь обобщить для лучшего понимания:
Оба '--enable-casert'. и «enable-debug» — это флаги, которые используются для включения инструментов разработчика для отладки в postgreSQL.
--enable-casert
Этот флаг используется для включения утверждений. Какие проверки помещаются в код для проверки и обнаружения ошибок программирования. Когда этот флаг включен, PostgreSql будет включать дополнительные проверки в свой код, чтобы отловить любую потенциальную ошибку программирования.
--enable-debug
Этот флаг используется для включения дополнительных функций отладки, таких как расширенное ведение журнала и инструменты отладки, такие как «gdb». Он дает более подробный вывод журнала.
Вы бы не использовали --enable-cassert в производственной сборке.