J'ai beaucoup essayé en recherchant des lunettes pour le résoudre. Mais impossible de compiler selon la documentation ci-dessous GitHub.

Pg_Extension d'audit

Ci-dessous est l'env. pour mon utilisateur postgres.

export PGHOME=/var/lib/pgsql/
export PGDATA=/var/lib/pgsql/11/data/
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=xxxx
export PGLOCALEDIR=/usr/pgsql-11/share/ 

En suivant les ÉTAPES ci-dessous. J'utilise pour faire installer/compiler.

-bash-4.2$ pwd
/var/lib/pgsql
-bash-4.2$ cd pgaudit-REL_11_STABLE/
-bash-4.2$ pwd
/var/lib/pgsql/pgaudit-REL_11_STABLE
-bash-4.2$ ll
total 528
drwx------. 2 postgres postgres     25 May 23  2019 expected
-rw-------. 1 postgres postgres    171 May 23  2019 LICENSE
-rw-------. 1 postgres postgres    548 May 23  2019 Makefile
-rw-------. 1 postgres postgres    175 May 23  2019 pgaudit--1.3--1.3.1.sql
-rw-------. 1 postgres postgres    615 May 23  2019 pgaudit--1.3.1.sql
-rw-------. 1 postgres postgres  63517 May 23  2019 pgaudit.c
-rw-------. 1 postgres postgres     35 May 23  2019 pgaudit.conf
-rw-------. 1 postgres postgres    145 May 23  2019 pgaudit.control
-rw-------. 1 postgres postgres 266312 Feb  9 11:48 pgaudit.o
-rwx------. 1 postgres postgres 157624 Feb  9 11:48 pgaudit.so
-rw-------. 1 postgres postgres  17312 May 23  2019 README.md
drwx------. 2 postgres postgres     25 May 23  2019 sql
drwx------. 2 postgres postgres     25 May 23  2019 test
-bash-4.2$

-bash-4.2$ make check USE_PGXS=1
"make check" is not supported.
Do "make install", then "make installcheck" instead.
-bash-4.2$ make install
/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2  -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/in
clude/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include -flto=thin -emit-llvm -c -o pgaudit.bc pgaudit.c
make: /opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found
make: *** [pgaudit.bc] Error 127
-bash-4.2$

J'ai aussi copié pg_audit.so

scp -r /var/lib/pgsql/pgaudit-REL_11_STABLE/pgaudit.so /usr/pgsql-11/share/contrib/
 cd /usr/pgsql-11/share/contrib/

/usr/pgsql-11/share/contrib
-bash-4.2$ ll
total 176
-rwx------. 1 root root 157624 Feb 10 07:43 pgaudit.so
-rw-------. 1 root root  14875 Feb 10 08:10 pgaudit.sql
-rw-r--r--. 1 root root   1644 Aug  7  2019 sepgsql.sql
-bash-4.2$ pwd
/usr/pgsql-11/share/contrib

Aussi lorsque j'utilise la commande ci-dessous pour obtenir l'erreur ci-dessous.

-bash-4.2$ make install PGUSER=postgres USE_PGXS=1 PATH=/usr/pgsql-11/bin:{PATH}
/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2  -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/in
clude/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include -flto=thin -emit-llvm -c -o pgaudit.bc pgaudit.c
make: /opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found
make: *** [pgaudit.bc] Error 127 

Il me manque quelque chose lié à la copie ou à la configuration d'env. Aidez-moi, s'il vous plaît.

Edit: je passe en revue suggéré par Laurenz Albe dans la réponse ci-dessous. maintenant en dessous de l'erreur.

[root@ip- pgaudit-REL_11_STABLE]# /usr/bin/make install PGUSER=postgres USE_PGXS=1 with_llvm=no make -e PATH=/usr/pgsql-11/bin:{PATH}
/usr/bin/mkdir -p '/usr/lib64/pgsql'
/usr/bin/mkdir -p '/usr/share/pgsql/extension'
/usr/bin/mkdir -p '/usr/share/pgsql/extension'
/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 755  pgaudit.so '/usr/lib64/pgsql/pgaudit.so'
/usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh: line 75: uname: command not found
/usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh: line 326: sed: command not found
/usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh: line 461: exec: cp: not found
/usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh: line 1: rm: command not found
make: *** [install-lib-shared] Error 1 

J'ai vérifié dans /usr/bin tous les utilitaires requis sont disponibles.

[root@ip- pgaudit-REL_11_STABLE]# ls -lrth /usr/bin/ | grep uname
lrwxrwxrwx. 1 root root        7 Jun 18  2019 uname26 -> setarch
-rwxr-xr-x. 1 root root      29K Jan 23 19:07 uname
[root@ip pgaudit-REL_11_STABLE]# ls -lrth /usr/bin/ | grep sed
-rwxr-xr-x. 1 root root      75K Aug  1  2018 sed
-rwxr-xr-x. 2 root root      53K Feb 19  2019 psed
[root@ip pgaudit-REL_11_STABLE]# ls -lrth /usr/bin/ | grep exec
-rwxr-xr-x. 1 root root      16K Aug  2  2018 msgexec
[root@ip pgaudit-REL_11_STABLE]# ls -lrth /usr/bin/ | grep rm
-rwxr-xr-x. 1 root root      41K Jan 23 19:07 rmdir

Obtenant maintenant l'erreur ci-dessous. Je ne suis vraiment pas en mesure de comprendre ce que l'erreur veut dire. s'il vous plaît aider.

[root@ pgaudit-REL_11_STABLE]# make install PGUSER=postgres USE_PGXS=1 PATH=/usr/pgsql-11/bin:$PATH with_llvm=no make -e
/usr/bin/mkdir -p '/usr/lib64/pgsql'
/usr/bin/mkdir -p '/usr/share/pgsql/extension'
/usr/bin/mkdir -p '/usr/share/pgsql/extension'
/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 755  pgaudit.so '/usr/lib64/pgsql/pgaudit.so'
/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./pgaudit.control '/usr/share/pgsql/extension/'
/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./pgaudit--1.3.1.sql ./pgaudit--1.3--1.3.1.sql  '/usr/share/pgsql/extension/'
make: *** No rule to make target `make'.  Stop.
[root@ pgaudit-REL_11_STABLE]#
1
Adam Mulla 10 févr. 2020 à 11:15

1 réponse

Meilleure réponse

Vous devez installer clang pour que PGXS puisse construire le byte code.

Si vous n'avez pas besoin de JIT, une solution de contournement consiste à créer avec

with_llvm=no make -e

Pour ajouter /usr/pgsql-11/bin au PATH, exécutez

PATH=/usr/pgsql-11/bin:$PATH with_llvm=no make -e
3
Laurenz Albe 10 févr. 2020 à 10:52