在AWS Amazon Linux(EC2)AMI上安装PostgreSQL客户端v10

99

我已成功启动新的AWS RDS PostgreSQL v10实例,并需要在Amazon Linux EC2实例上安装PostgreSQL v10客户端。

我尝试使用yum安装它,但找不到v10的软件包:

[ec2-user@ip-X-X-X-X ~]$ sudo yum install -y postgresql10
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main      | 2.1 kB  00:00:00
amzn-updates  | 2.5 kB  00:00:00
No package postgresql110 available.
Error: Nothing to do

之前我安装了PostgreSQL客户端v9.5:

[ec2-user@ip-X-X-X-X ~]$ sudo yum install -y postgresql95

我想我需要添加Postgres的yum存储库,就像在 https://www.postgresql.org/download/linux/redhat/中提到的那样。但是我应该为Amazon Linux选择哪个平台? Red Hat?

13个回答

246

您可以尝试在Linux服务器上运行以下命令:

sudo amazon-linux-extras install postgresql10

15
只限于使用“Amazon Linux 2”。 - tourdownunder
3
如果你正在使用Amazon Linux 2,那么这应该是首选解决方案。支持得到保证。 - zenbeni
2
太棒了,这正是我需要的适用于我的amzn2盒子。非常感谢。 - Gavin
1
在 AmazonLinux 2 CodeBuild 镜像中对我无效。CodeBuild 镜像可能与常规 EC2 镜像不同。 - Daniel Nalbach
适用于 postgresql11postgresql12 - RicHincapie
显示剩余4条评论

59

设计为在RedHat上运行的软件包/仓库也可以在Amazon Linux上使用,Amazon Linux是RHEL的精简安装版本。如果您选择旧版本的Amazon Linux(Amazon Linux 1),则可能会遇到兼容性问题,否则它应该可以在最新版本的Amazon Linux 2中正常工作。

检查Amazon Linux版本

[ec2-user ~]$ cat /etc/system-release
Amazon Linux release 2.0 (2017.12) LTS Release Candidate

安装 RHEL 7 yum repo 以安装 PostgreSQL

[ec2-user ~]$ sudo yum install -y  https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-2.noarch.rpm

[ec2-user ~]$ sudo sed -i "s/rhel-\$releasever-\$basearch/rhel-latest-x86_64/g" "/etc/yum.repos.d/pgdg-10-redhat.repo"

安装 PostgreSQL 客户端 v10

[ec2-user ~]$ sudo yum install -y postgresql10
[ec2-user ~]$ psql --version
psql (PostgreSQL) 10.3

阅读更多有关 Amazon Linux 2 的信息。

注意! Amazon Linux 2 可通过 Amazon Linux Extras Repository (amazon-linux-extras)(仅客户端)提供其他软件包安装。由于尚未提供postgresql10,因此今天唯一的解决方案是添加额外的yum repo。

更新2019年5月:

那些看到以下错误:

  

错误:软件包:pgdg-redhat-repo-42.0-4.noarch   (/pgdg-redhat-repo-latest.noarch)

     

需要:/etc/redhat-release

可以按步骤安装所有依赖项和服务器:

yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-libs-10.7-2PGDG.rhel7.x86_64.rpm
yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-10.7-2PGDG.rhel7.x86_64.rpm
yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-server-10.7-2PGDG.rhel7.x86_64.rpm

9
执行 sudo yum install -y postgresql10 时出现错误:Error: Package: postgresql10-10.3-1PGDG.rhel7.x86_64 (pgdg10) Requires: systemd-sysv - fIwJlxSzApHEZIl
1
我遇到了相同的错误。我的AMI版本是“Amazon Linux AMI release 2018.03”,从命名上看似乎很新鲜。systemd是否已从后续版本的AMI中删除? - Michael
2
似乎amazon-linux-extras安装的是仅限客户端而非服务器。 - LennyLip
3
执行yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-10.7-2PGDG.rhel7.x86_64.rpm时出现错误:软件包postgresql10-10.3-1PGDG.rhel7.x86_64(pgdg10)要求安装systemd-sysv。 - chobo
2
无法在 Amazon Linux AMI release 2018.03 上运行。 - shorif2000
显示剩余7条评论

19

由于之前的回答都对我没用,我添加了一个解决方案,允许我安装postgresql10客户端。我们在流水线中使用Amazon Linux AMI的VERSION="2018.03"。

从源代码构建:

注意: 下面的链接指向postgresql 10.4,您可能需要检查更新的子版本

sudo yum install -y gcc readline-devel zlib-devel
wget https://ftp.postgresql.org/pub/source/v10.4/postgresql-10.4.tar.gz
tar -xf postgresql-10.4.tar.gz
cd postgresql-10.4
./configure
make -C src/bin
sudo make -C src/bin install
make -C src/include
sudo make -C src/include install
make -C src/interfaces
sudo make -C src/interfaces install
make -C doc
sudo make -C doc install
新的软件包应该被安装在这里: /usr/local/pgsql/bin,请注意,psql,pg_dump等命令仍然指向旧版本的psql客户端。您可以使用完整的可执行路径(/usr/local/pgsql/bin/psql),或者在$PATH 开头添加新的目录,以便系统首先搜索它。请编辑~/.bash_profile 并在末尾添加此内容。
export PATH="/usr/local/pgsql/bin:$PATH"

然后运行:

source ~/.bash_profile

现在一切都应该准备就绪:

[ec2-user@ip-xx-x-x-xxx ~]$ psql --version
psql (PostgreSQL) 10.4

根据Postgres源代码安装文档,我最终调整了make步骤为: ./configure && makesudo make installecho 'export PATH=$PATH:/usr/local/pgsql/bin' | sudo tee /etc/profile.d/postgres.sh - jmwicks
非常感谢。这对我非常有效。我也用postgresql-12.3做了同样的事情。 - roronoa

11

适用于Amazon Linux 1的Haneef Mohammed答案(在2018.03上进行了测试):

转到Postgres存储库页面并获取'Red Hat Enterprise Linux 6-x86_64'的URL。安装PG repos并修改条目,将'$releasever'替换为'6.9'(或更新?):

[ec2-user ~]$ sudo yum install -y  https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-redhat10-10-2.noarch.rpm

[ec2-user ~]$ sudo sed -i "s/rhel-\$releasever-\$basearch/rhel-6.9-x86_64/g" "/etc/yum.repos.d/pgdg-10-redhat.repo"

第二部分与原来相同:

[ec2-user ~]$ sudo yum install -y postgresql10
[ec2-user ~]$ psql --version
psql (PostgreSQL) 10.3

在执行“yum install”之前,您需要执行以下操作> $ yum clean all。 - Antônio Sérgio Ferraz
3
错误:软件包:pgdg-redhat-repo-42.0-5.noarch(/pgdg-redhat-repo-latest.noarch) 要求:/etc/redhat-release - Tom
似乎pgdg仓库不再可用,所以这个答案不能使用:"Cannot open: https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-redhat10-10-2.noarch.rpm. Skipping." - Jeremy

11

8
截止至2019年5月25日,在亚马逊Linux 1 2018.03(最新的Beanstalk平台版本)上,以下直接使用RPM安装方法可成功安装PostgreSQL客户端10.7:
sudo rpm -ivh --force https://yum.postgresql.org/testing/10/redhat/rhel-6-x86_64/postgresql10-libs-10.7-2PGDG.rhel6.x86_64.rpm
sudo rpm -ivh --force https://yum.postgresql.org/testing/10/redhat/rhel-6-x86_64/postgresql10-10.7-2PGDG.rhel6.x86_64.rpm

6

Amazon Linux 2023(Amazon Linux)实例的解决方案

如果您收到以下错误:

  • No match for argument: postgresql10
  • No match for argument: postgresql11
  • No match for argument: postgresql14

在运行sudo yum install -y postgresql<your_version>

只需使用sudo yum search "postgres"检查存储库中存在哪些版本。在我的情况下,既没有postgresql10也没有postgresql14,但是有postgresql15

因此,我调用了sudo yum install postgresql15,它可以正常工作。


5

PSql10.7 安装(08/20/2019)

删除所有旧版本的 Psql 客户端并执行以下步骤:

wget https://yum.postgresql.org/10/redhat/rhel-6.9-x86_64/postgresql10-libs-10.7-1PGDG.rhel6.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-6.9-x86_64/postgresql10-10.7-1PGDG.rhel6.x86_64.rpm
sudo rpm -ivh postgresql10-libs-10.7-1PGDG.rhel6.x86_64.rpm
sudo rpm -ivh postgresql10-10.7-1PGDG.rhel6.x86_64.rpm

5
以下内容适用于Amazon Linux (v1)上的psql v11
wget https://yum.postgresql.org/11/redhat/rhel-6.9-x86_64/postgresql11-libs-11.8-1PGDG.rhel6.x86_64.rpm
wget https://yum.postgresql.org/11/redhat/rhel-6.9-x86_64/postgresql11-11.8-1PGDG.rhel6.x86_64.rpm

sudo yum clean all
sudo rpm -ivh postgresql11-libs-11.8-1PGDG.rhel6.x86_64.rpm
sudo rpm -ivh postgresql11-11.8-1PGDG.rhel6.x86_64.rpm

4
这是我的2019解决方案:
只需执行。
 sudo amazon-linux-extras install postgresql9.6

您不需要从任何外部来源下载它,因为亚马逊已经默认向您提供了它,您只需安装即可。

其他解决方案对我都没用,我花费了很多时间努力思考原因。

令人惊讶的是,即使您安装了psql9.6,您也会得到版本10。


3
假设使用亚马逊 Linux 2,不适用于亚马逊 Linux 实例。 - MrCranky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接