web-dev-qa-db-ja.com

CentOS 7のPostgres 10にpgcrypto拡張機能をインストールする方法

CentOS 7で本番用のpostgresデータベースを作成しているところです。そのため、すでにインストールしており(もちろん、リポジトリを追加した後でpostgresql10-server postgresql10をインストールします)、postgres 10を構成しています。ただし、スクリプトにpgcryptoをインストールする必要があります拡張機能をインストールできませんでした。これは私がこれまでに行ったことです:

  1. 私が得た最初のエラーは、/usr/pgsql-10/share/extension/pgcrypto.controlファイルが存在しないというものでした。グーグルpostgres-contribパッケージをインストールする必要があることに気づきました。これを実行してからpostgresサービスを再起動しましたが、拡張機能が/usr/share/pgsql/extensionにインストールされたためにエラーが続くため、拡張ファイルをコピーしました彼らがインストールされたから彼らは期待されていた
  2. このメッセージが表示されます

    「エラー:ファイル "$ libdir/pgcrypto"にアクセスできませんでした:そのようなファイルまたはディレクトリはありません」

    もう一度グーグルで検索すると、別のオプションを指定する必要があるかもしれないので、CREATE EXTENSION pgcrypto FROM unpackaged;を実行しました。

  3. エラーメッセージは今です

    エラー:関数ダイジェスト(テキスト、テキスト)が存在しません

そして、私は行き詰まっており、次に何をすればいいのかまったくわからない。 Linuxのpostgres 10でこの拡張機能を使用している人はいますか?使用している場合、どのようにして拡張機能を作成しましたか?

バージョン情報:PostgreSQL 10.1 x86_64-pc-linux-gnu、gcc(GCC)4.8.5 20150623(Red Hat 4.8.5-16)、64ビットでコンパイル

2
George

CREATE EXTENSION のドキュメントから

PostgreSQLは、ファイルSHAREDIR/extension/extension_name.controlの詳細を使用して拡張機能を作成します。

SHAREDIRpg_config --sharedirで何に設定されているかを確認する必要があります。それが/usr/share/pgsql/extensionに設定されていない場合、おそらくpostgresql-contribは、postgresqlのコピーとは別の誰かによってパッケージ化されています。これらはコンパイル時の変数であり、同じである必要があります。それらを2つの別個のエンティティーによってパッケージ化されている場合、それらはおそらく異なるライブラリーに対してビルドされているため、それらを移動しても機能しない可能性があります。

CentOS

あなたの場合私は仮定します

  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
2
Evan Carroll

すでにyumを使用してpostgresqlをインストールしているため、-contribをインストールするだけで済みます。コピーまたはリンクしたファイルを削除してから、このコマンドを実行する必要があることに注意してください。

yum install postgresql10-contrib

0
Hung-Hao Trinh