Postgresql

如何在 CentOS 7 上的 postgres 10 中安裝 pgcrypto 擴展

  • October 28, 2020

我正在為 CentOS 7 中的生產創建一個 postgres 數據庫。所以我已經安裝了(當然,在添加儲存庫後 yum install postgresql10-server postgresql10)並配置了 postgres 10。但是,在我的腳本中我需要安裝 pgcrypto擴展,我還沒有成功安裝它。這是我到目前為止所做的:

  1. 我得到的第一個錯誤是說/usr/pgsql-10/share/extension/pgcrypto.control文件不存在。Google搜尋我意識到我必須安裝postgres-contrib軟體包,然後重新啟動 postgres 服務,但由於擴展已安裝到 中,錯誤仍然存在/usr/share/pgsql/extension,所以我將擴展文件從它們安裝到預期的位置,然後
  2. 出現此消息

“錯誤:無法訪問文件“$libdir/pgcrypto”:沒有這樣的文件或目錄”

再次Google搜尋我發現也許我需要給另一個選項,所以我跑CREATE EXTENSION pgcrypto FROM unpackaged;了 3. 現在的錯誤資訊是

錯誤:函式摘要(文本,文本)不存在

我被困住了,不知道下一步該做什麼。是否有人在 Linux 上的 postgres 10 中使用此擴展?如果是,您是如何創建擴展的?

版本資訊:x86_64-pc-linux-gnu 上的 PostgreSQL 10.1,由 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 編譯,64 位

從文件開始CREATE EXTENSION

PostgreSQL 將使用文件中的詳細資訊創建擴展SHAREDIR/extension/extension_name.control

您需要檢查SHAREDIR設置為pg_config --sharedir. 如果沒有設置,/usr/share/pgsql/extension那麼您可能postgresql-contrib是由不同於您的 postgresql 副本的人打包的。這些是編譯時變數,它們應該是相同的。將它們移入可能也不起作用,因為如果它們由兩個單獨的實體打包,它們很可能是針對不同的庫建構的。

中央作業系統

在你的情況下,我假設

  1. 您正在從 PostgreSQL 儲存庫安裝 PostgreSQL。
  2. 您正在從 CentOS 儲存庫安裝 -contrib。

您可能想要做的是從 CentOS 儲存庫安裝。解除安裝所有與 PostgreSQL 相關的東西,並刪除您複製或連結的那些文件並執行它

# Adds the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

# I think this should install them explicitly from the PostgreSQL repo
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-10.1-1PGDG.rhel7.x86_64.rpm
rpm -Uvh https://yum.postgresql.org/10/redhat/rhel-7-x86_64/postgresql10-contrib-10.1-1PGDG.rhel7.x86_64.rpm

引用自:https://dba.stackexchange.com/questions/192727