You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Cloud Foundry运行pg_dump时提示找不到PgCommon.pm该如何解决?

问题根因

你遇到的报错本质是两个问题叠加导致:

  • PgCommon.pm 由postgresql-common软件包提供,你仅安装了postgresql-client-11,没有安装其依赖的该基础包
  • Cloud Foundry的apt-buildpack会将apt安装的文件放到自定义目录下,默认不会将对应perl模块路径添加到perl的@INC搜索路径中,即使安装了对应包也会找不到
可落地的解决方案

方案一:补全依赖并配置环境变量(推荐)

  1. 修改你的apt.yml的packages列表,补充缺失的依赖包:
---
cleancache: true
keys:
  - https://www.postgresql.org/media/keys/ACCC4CF8.asc
repos:
  - deb https://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
packages:
  - postgresql-client-11
  - postgresql-common
  - perl-modules
  - libdbd-pg-perl
  - libpq-dev
  1. 修改manifest.yml,添加环境变量配置,让perl和系统能找到apt安装的依赖和pg命令:
applications:
  - name: sfcbackups-staging
    memory: 1G
    disk_quota: 4GB
    instances: 1
    buildpacks:
      - https://github.com/cloudfoundry/apt-buildpack
      - nodejs_buildpack
    services:
      - sfcstaging-db
    env:
      PERL5LIB: /home/vcap/deps/0/apt/usr/share/perl5:/home/vcap/deps/0/apt/usr/lib/x86_64-linux-gnu/perl5/5.26:$PERL5LIB
      PATH: /home/vcap/deps/0/apt/usr/lib/postgresql/11/bin:$PATH
  1. 重新推送应用即可生效。

方案二:使用无依赖的静态编译pg_dump二进制

如果不想处理perl依赖问题,可以直接下载对应架构的静态编译pg_dump二进制文件,放到你的应用源码根目录下,代码里直接调用该本地二进制即可,不需要修改apt配置。

之前方案失效的原因
  • 你安装的libdbd-pg-perl和DBD::Pg都是PostgreSQL的Perl数据库驱动,并不包含PgCommon.pm模块,无法解决缺失问题
  • 通过SSH在实例中安装的所有内容都是临时存储,实例重启、重新部署后都会被重置,本身也不推荐作为生产级解决方案使用

内容的提问来源于stack exchange,提问作者Aaron Russell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:36:02