有没有办法使用 apt-get 安装 PostgreSQL 而不让它自动运行 initdb?

有没有办法使用 apt-get 安装 PostgreSQL 而不让它自动运行 initdb?

我正在尝试在 Ubuntu 20.04 上为 PostgreSQL 设置复制,对于备用节点,我只需安装 PostgreSQL 服务器,而无需运行 initdb。当我设置从主服务器的复制时,将负责在备用服务器上创建集群。

但每当我跑步的时候

sudo apt-get -y install postgresql

调用 initdb 并创建集群。在其他发行版(如 RHEL)中,可以不运行 initdb,而只需使用软件包安装 postgresql 服务器(https://www.postgresql.org/download/linux/redhat/)。

有什么办法可以解决这个问题吗?或者这只是在 ubuntu 上使用 apt-get 安装时的安装方式?

答案1

问:调用 initdb 并创建集群。在其他发行版(如 RHEL)中,可以不运行 initdb,而只安装 postgresql 服务器

有两种方法可以做到这一点:

  1. 将以下选项设置为关闭/etc/postgresql-common/createcluster.conf

    # Create a "main" cluster when a new postgresql-x.y server package is installed
    create_main_cluster = off
    

    该配置文件是postgresql-common包的一部分,必须首先安装包才有机会覆盖此选项(否则,它将作为postgresql-$VERSION包的依赖项自动安装)。

  2. /etc/postgresql/$VERSION或者在安装包之前创建目录postgresql-$VERSION。此目录的存在将使安装后脚本跳过创建默认集群。

答案2

基于 Debian 的 Linux 发行版(例如 Ubuntu)将在通过 安装时启动新服务作为安装后脚本的一部分apt。这一直是默认行为。也就是说,您可以暂时地禁用此功能暂时地创造一份policy-rc.d文件

就是这样:

  1. 打开终端(或通过 SSH 进入机器)
  2. policy-rc.d在以下位置创建文件/usr/sbin
    sudo {editor of choice} /etc/sbin/policy-rc.d
    
    笔记:请务必{editor of choice}用您选择的编辑器进行替换。
  3. 将以下行粘贴到新文件中:
    #!/bin/sh
    exit 101
    
  4. 保存文件并退出编辑器
  5. 安装你的应用程序

完成后,请务必删除该policy-rc.d文件,否则任何将来的apt install操作都可能无法成功,例如系统更新。

相关内容