如何在 CentOS 7 上的 postgres 10 中安裝 pgcrypto 擴展
我正在為 CentOS 7 中的生產創建一個 postgres 數據庫。所以我已經安裝了(當然,在添加儲存庫後 yum install postgresql10-server postgresql10)並配置了 postgres 10。但是,在我的腳本中我需要安裝 pgcrypto擴展,我還沒有成功安裝它。這是我到目前為止所做的:
- 我得到的第一個錯誤是說
/usr/pgsql-10/share/extension/pgcrypto.control
文件不存在。Google搜尋我意識到我必須安裝postgres-contrib
軟體包,然後重新啟動 postgres 服務,但由於擴展已安裝到 中,錯誤仍然存在/usr/share/pgsql/extension
,所以我將擴展文件從它們安裝到預期的位置,然後- 出現此消息
“錯誤:無法訪問文件“$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 副本的人打包的。這些是編譯時變數,它們應該是相同的。將它們移入可能也不起作用,因為如果它們由兩個單獨的實體打包,它們很可能是針對不同的庫建構的。中央作業系統
在你的情況下,我假設
- 您正在從 PostgreSQL 儲存庫安裝 PostgreSQL。
- 您正在從 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