Docker 容器中 Alpine Linux (arm32v6) 上的 PostgreSQL 9.6.9 - 如何安装正确的 postgresql-contrib 包?

x-r*_*ray 1 postgresql arm docker alpine-linux postgresql-9.6

我需要在 32 位 ARM 系统(它的 QNAP NAS,CPU:Annapurna Labs Alpine AL-314)上的 Docker 容器中安装支持 uuid-ossp 的 PostgreSQL 9.6.9。

我找到了arm32v6/postgres图像并安装了arm32v6/postgres:9.6.9-alpine. 这工作顺利,但缺少 postgresql-contrib 包。据我了解,我需要安装 postgresql-contrib 才能获得 uuid-ossp 支持。

我在容器中打开了一个 CLI 并尝试:

# apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/armhf/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/armhf/APKINDEX.tar.gz
v3.7.0-215-g16971064c0 [http://dl-cdn.alpinelinux.org/alpine/v3.7/main]
v3.7.0-207-gac61833f9b [http://dl-cdn.alpinelinux.org/alpine/v3.7/community]
OK: 8879 distinct packages available
# apk add postgresql-contrib=9.6.9-r0
ERROR: unsatisfiable constraints:
  postgresql-contrib-10.4-r0:
    breaks: world[postgresql-contrib=9.6.9-r0]
Run Code Online (Sandbox Code Playgroud)

如何安装正确版本的 postgresql-contrib?或者我可以在 PostgreSQL 9.6.9 中使用 postgresql-contrib-10.4-r0 吗?

Jak*_*tka 6

只需使用基本的 alpine 映像并从 Alpine 的官方软件包中完全安装 PostgreSQL:postgresqlpostgresql-contrib. 最后一个稳定的 Alpine 提供 PostgreSQL 9.6 是 v3.6,落后两个版本,但仍然支持。Alpine v3.7 仅提供 10.4。

也不要指定确切的版本到apk add. Alpine 只为每个分支提供单一版本的包(例如 v3.7、v3.8、edge)。一旦我们发布 postgresql-contrib 9.6.9-r1 或 9.6.10-r0(例如修复一些安全问题),9.6.9-r0 将不再可用并且您apk add postgresql-contrib=9.6.9-r0将失败。

这些专门的 Docker 镜像“打包”了一些已经在 Alpine 中正确打包的东西,它们大多完全没有用,只会引起混乱和问题。我什至无法计算我在 SO 上回应此类问题的次数。

  • 简而言之: `apk add postgresql` `apk add postgresql-contrib` (2认同)