7

我很好奇为什么在第一次运行 psql 之前不必按照 postgresql 手册使用 initdb ?(我在 8.04.1 上安装了 8.3 版本)

Red Hat 需要 -c postgresql start 但不需要 init.db。

但是,在 FreeBSD 上,您必须运行 initdb。

为什么设置不一致?是否归结为 apt-get install、rpm -i 和 pkg_add 之间的区别?

4

5 回答 5

1

它不是启动脚本,而是在您安装的软件包中指定的安装后挂钩,它为您执行了额外的步骤。无论您使用 .deb 还是 .rpm 格式,打包程序都可以将任务设置为在所有文件安装后发生。

当您安装软件时,有些发行版会牵着您的手,有些发行版希望您更愿意自己做事情。对于为什么任何打包程序都以他们的方式做事,确实没有黄金答案。

Ubuntu 力求实现一键式轻松安装,而无需用户看到 shell。专门为系统集成商构建的其他发行版不会牵你的手。

欢迎来到围绕 Linux 内核的 31 种(以及更多)操作系统风格,或者专注于 BSD 内核的努力。

每个人都知道应该如何做。好的发行版假定您知道自己在做什么.. 除非他们当然想从 Microsoft 手中攫取桌面市场,在这种情况下,它们会成为握住您手的优秀桌面发行版。

大多数情况下,这是一个选择问题,这就是让整个现象如此酷的原因。

于 2009-03-04T11:32:27.373 回答
1

很可能只是那些系统打包的启动脚本在第一次运行时自动运行 initdb。

于 2009-02-25T23:19:57.047 回答
1

几乎可以肯定,是的。不同风格的 Linux 和 Unix 有不同的软件打包方法;例如,FreeBSD 是基于 ports 系统(您可以从头开始编译,尽管其中大部分都预先构建了二进制包),而在主流 Linux 发行版中通常情况下您会发现一个完全预编译的为流行的东西准备了二进制包。

维护打包系统的不同人(“打包者”和其他,有时不那么亲切的昵称)对问题采取不同的方法,通常反映了父项目的精神。或者,可能只是一个打包者认为使用标准配置进行设置并代表您运行一些常见的初始化步骤是合理的,而一个更不干涉的打包者会将其留给最终用户,特别是如果软件以任何方式复杂或在部署之前需要任何考虑,例如系统服务。

于 2009-02-25T23:21:32.487 回答
1

Debian(以及扩展,Ubuntu)相当巧妙地处理 PostgreSQL。查看postgresql-common包装以了解详细信息。简而言之,它支持安装多个(主要)版本的 postgres,以及运行每个版本的 postgres 的多个集群。要查看您拥有哪些集群,请尝试pg_lsclusters. 包维护者假设如果你第一次安装 pg 服务器包,你会想要为它初始化一个集群。例如,如果您安装postgresql-9.1,您将默认获得 9.1/main 集群 initdb 供您使用。

Linux 发行版之间的情况并不一致,因为发行版的全部意义在于为此类问题提供更好的解决方案。Debian 在这方面提供了一个很好的解决方案。但是,我建议您使用 postgresql PPA 并获取更新版本的 postgresql,尤其是因为您只是在安装东西。

我刚刚意识到我正在回答一个古老的问题。嘘。

于 2012-02-25T01:21:01.393 回答
0

如果没记错的话,Ubuntu 的 PostgreSQL 软件包是从 Debian 派生的。可能是 Debian 的包装出于某种原因有这个位置。如果是这种情况,Debian 和它的所有衍生产品(如 Ubuntu)将描述相同的行为。仅当您尝试从存储库安装相应的软件时才会发生这种情况。如果您从 PostgreSQL 的站点获取源代码并对其进行编译,您将按照手册中的说明获取它。各种发行版遵循某些打包指南,并在打包某些软件方面采取某些立场。如果你想知道确切的细节,你可以戳 postgresql 包的包维护者了解原因。

于 2009-03-04T11:25:56.890 回答