我很好奇为什么在第一次运行psql之前你不必按照postgresql手册使用initdb? (我在8.04.1上安装了8.3版本)
Red Hat需要-c postgresql start但不需要init.db。
但是,在FreeBSD上你必须运行initdb。
为什么设置不一致?它是否归结为apt-get install,rpm -i和pkg_add之间的区别?
答案 0 :(得分:1)
很可能只是这些系统打包的启动脚本在第一次运行时自动运行initdb。
答案 1 :(得分:1)
几乎可以肯定,是的。不同风格的Linux和Unix有不同的打包软件方法;例如,FreeBSD基于ports系统(你从头开始编译,虽然有很多预先构建的二进制包),而在主流Linux发行版中经常会出现这样的情况:为流行的东西准备了二进制包。
维护包装系统的不同人(“打包者”,以及其他,有时候不那么善良的昵称)维持不同的问题方法,通常反映了父项目的精神。或者,可能只是一个打包器决定使用标准配置进行设置并代表您运行一些常见的初始化步骤是合理的,而更轻松的打包器会将其留给最终用户,特别是如果软件在部署之前以任何方式复杂或需要任何考虑,例如系统服务。
答案 2 :(得分:1)
它不是启动脚本,它安装的软件包中指定的安装后挂钩会为您执行额外的步骤。无论您使用.deb还是.rpm格式,打包者都可以在安装完所有文件后设置任务。
有些发行版在您安装软件时会抓住您的手,有些人希望您更愿意自己做事。对于为什么任何打包者按照他们的方式做事情,真的没有什么好的答案。
Ubuntu努力在没有用户看到shell的情况下轻松安装一次。专门为系统集成商构建的其他发行版无法抓住您的手。
欢迎使用围绕Linux内核的31种(以及更多)操作系统,或者专注于BSD内核的工作。
每个人都知道应该如何做。好的发行版假设你知道自己在做什么......除非他们想要从微软那里捏造桌面市场,在这种情况下,它们会成为很好的桌面发行版。
这是一个选择问题,主要是使整个现象变得如此酷的原因。
答案 3 :(得分:1)
Debian(以及扩展名,Ubuntu)相当巧妙地处理PostgreSQL。有关详细信息,请查看postgresql-common
包。简而言之,它支持安装多个(主要)版本的postgres,以及每个版本的postgres运行的多个集群。要查看您拥有的群集,请尝试pg_lsclusters
。软件包维护者假设,如果您是第一次安装pg服务器软件包,那么您将需要为其初始化集群。例如,如果您安装postgresql-9.1
,默认情况下您将获得9.1 / main集群initdb'd用于您的使用。
Linux发行版中的内容并不一致,因为发行版的全部意义在于为这些问题提供更好的解决方案。 Debian在这方面提供了出色的解决方案。不过我建议您使用postgresql PPA并获取更新版本的postgresql,特别是因为您只是安装了东西。
我刚才意识到我正在回答一个古老的问题。嘘声。
答案 4 :(得分:0)
如果没有错,Ubuntu的PostgreSQL包是从Debian派生的。可能是Debian的包装出于某种原因有这个位置。如果是这样的话,Debian及其所有衍生品(如Ubuntu)将描述相同的行为。仅当您尝试从存储库安装相应的软件时才会发生这种情况。如果您从PostgreSQL的站点获取源代码并进行编译,您将按照手册中的说明获取它。各种发行版遵循某些包装指南,并对包装某些软件采取某些立场。如果你想知道确切的细节,你可以戳一下postgresql包的包维护者来了解原因。