RHV 4.x vacuumdb command not found

RHV 운영중 engine-vacuum 또는 dwh-vacuum 명령어 수행시 아래와 같은 오류가 발생하는 경우가 있다.

[root@rhvm ~]# dwh-vacuum 
/usr/bin/dwh-vacuum: line 47: vacuumdb: command not found

이것은 해당 시스템에 postgresql tools 위치를 인식하지 못해 생기는 문제이다.
왜냐하면 레드햇은 특정 솔루션의 경우 SCL(Software Collections)이라는 구성을 만들어놓았는데 여기에 해당하는 패키지는 일반적인 경로가 아니라 레드햇 특유의 디렉토리 경로를 가지게 된다.

위 문제가 발생한 시스템의 경우

postgresql이 설치된 내용을 확인해보면

[root@rhvm ~]# rpm -qa |grep postgresql
rh-postgresql95-postgresql-libs-9.5.14-1.el7.x86_64
rh-postgresql95-postgresql-contrib-9.5.14-1.el7.x86_64
rh-postgresql95-postgresql-server-9.5.14-1.el7.x86_64
rh-postgresql95-postgresql-9.5.14-1.el7.x86_64
postgresql-jdbc-9.2.1002-8.el7_8.noarch
postgresql-libs-9.2.24-7.el7_9.x86_64
rh-postgresql95-runtime-2.2-2.el7.x86_64
collectd-postgresql-5.8.0-3.el7.x86_64


[root@rhvm ~]# yum provides */vacuumdb
rh-postgresql95-postgresql-9.5.14-1.el7.x86_64 : PostgreSQL client programs
Repo        : @rhel-7-server-rhv-4.2-manager-rpms
Matched from:
Filename    : /opt/rh/rh-postgresql95/root/usr/bin/vacuumdb

위와같이 해당 명령어의 경로가 /opt/rh/rh-postgresql95/root/usr/bin/vacuumdb 와 같이 되어있어 기본 PATH에 포함되어있지 않아 찾지 못하게 된다.

원래는 dwh_vacuum 스크립트 내에 아래와 같은 부분이 있어야 한다. 해당 부분은 레드햇 자체 SCL설정을 enable 해주는 부분이다.

...생략...

if ! [ -z "$sclenv" ]; then
        . scl_source enable ${sclenv}
fi

...생략...

해결방법

해결방법은 간단하다.
해당 스크립트를 수정하던지 아니면 명령어를 입력하기 전에 아래 명령을 한번 수행해주면 된다.

[root@rhvm ~]# scl enable rh-postgresql95 bash