Почему PostgreSQL запускается в Ubuntu после установки без использования initdb?

Мне любопытно, почему вам не нужно использовать initdb согласно руководству postgresql перед первым запуском psql? (Я установил версию 8.3 на 8.04.1)

Red Hat требует -c postgresql start, но не init.db.

Однако во FreeBSD вам нужно запустить initdb.

Почему настройка не согласована? Сводится ли это к разнице между apt-get install, rpm -i и pkg_add?

Ответов (5)

Почти наверняка да. Различные разновидности Linux и Unix имеют разные подходы к упаковке программного обеспечения; FreeBSD, например, основана на системе портов (где вы компилируете с нуля, хотя для большей части уже созданы бинарные пакеты), тогда как в основных дистрибутивах Linux вы часто найдете полностью предварительно созданные пакеты. подготовил бинарный пакет для чего-то популярного.

Разные люди, поддерживающие системы упаковки («упаковщики» и другие, иногда менее добрые прозвища), придерживаются разных подходов к проблеме, часто отражая идеал родительского проекта. В качестве альтернативы может быть просто так, что один упаковщик решит, что разумно настроить вещи со стандартной конфигурацией и выполнить некоторые общие шаги инициализации от вашего имени, в то время как упаковщик, более удобный, оставит это на усмотрение конечного пользователя, особенно если программное обеспечение в любом случае сложен или требует какого-либо рассмотрения перед развертыванием, например, системные службы.

Скорее всего, просто сценарии запуска, с которыми он упакован этими системами, автоматически запускают initdb при первом запуске.

Debian (и, соответственно, Ubuntu) довольно умно обрабатывает PostgreSQL. postgresql-common Подробности смотрите на упаковке. Вкратце, он поддерживает установку нескольких (основных) версий postgres и нескольких кластеров для каждой версии postgres. Чтобы увидеть, какие у вас кластеры, попробуйте pg_lsclusters . Сопровождающий пакета предполагает, что если вы устанавливаете пакеты pg server впервые, вам нужно будет инициализировать кластер для него. Например, если вы устанавливаете postgresql-9.1, вы по умолчанию получите initdbd кластера 9.1 / main для вашего использования.

В разных дистрибутивах Linux все не так согласованно, потому что весь смысл дистрибутивов состоит в том, чтобы предлагать лучшие решения именно таких проблем. Debian предлагает отличное решение в этом отношении. Однако я предлагаю вам использовать postgresql PPA и взять более свежую версию postgresql, тем более что вы просто устанавливаете что-то.

Я только что понял, что отвечаю на древний вопрос. Бу.

Это не сценарии запуска, а его обработчики после установки, указанные в установленном вами пакете, который выполняет дополнительные действия за вас. Независимо от того, используете ли вы формат .deb или .rpm, упаковщики могут устанавливать задачи, которые будут выполняться после установки всех файлов.

Некоторые дистрибутивы держат вас за руку, когда вы устанавливаете программное обеспечение, некоторые ожидают, что вы предпочтете делать что-то самостоятельно ... на самом деле нет золотого ответа на вопрос, почему любой упаковщик делает что-то так, как они.

Ubuntu стремится к простой установке одним щелчком мыши, при этом пользователь никогда не видит оболочку. Другие дистрибутивы, созданные специально для системных интеграторов, вам не за руку.

Добро пожаловать в 31 (и более) вариант операционных систем, основанных на ядре Linux, или усилия, сосредоточенные на ядре BSD.

У каждого есть представление о том, как это нужно делать. Хорошие дистрибутивы предполагают, что вы знаете, что делаете ... если, конечно, они не хотят отторгнуть рынок настольных компьютеров от Microsoft, и в этом случае они станут хорошими дистрибутивами для настольных компьютеров, которые держат вас за руку.

В основном это вопрос выбора, и это делает все это таким крутым.

Если я не ошибаюсь, пакеты Ubuntu PostgreSQL являются производными от Debian. Может быть, в пакете Debian по какой-то причине есть такая позиция. В этом случае Debian и все его производные, такие как Ubuntu, будут демонстрировать такое же поведение. Это произойдет только в том случае, если вы попытаетесь установить соответствующее программное обеспечение из репозитория. Если вы получите исходный код с сайта PostgreSQL и скомпилируете его, вы получите его, как указано в руководстве. Различные дистрибутивы следуют определенным рекомендациям по упаковке и занимают определенные позиции в отношении упаковки определенного программного обеспечения. Если вы хотите знать точные детали, вы можете узнать причины, сопровождающие пакета postgresql.