Флаги для ./configure во время установки PostgreSQL

Я слепо следовал этому руководству по установке 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, я понятия не имею, что происходит.

Заранее спасибо.

Вы бы не использовали --enable-cassert в производственной сборке.

Laurenz Albe 17.02.2023 10:18
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
0
1
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Большинство ответов на ваши вопросы можно найти в официальной документации 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». Он дает более подробный вывод журнала.

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