PostgresqlDB安装完成后在db用户下执行 initdb -D /usr/pgsql 时,发生无法加载库文件的错误,并有提示cannot restore segment prot after reloc
Google搜索后查到如下解释:
Topic: Some Linux distributions with SELinux enabled may prevent IDL from running under the default security context. This TechTip is a workaround for CR#41937
Discussion: Newer Linux distributions have enabled new kernel security extensions from the SELinux project at the NSA. These extensions allow finer-grained control over system security. However, SELinux also changes some default system behaviors, such as shared library loading, that can be problematic to third party programs.
If you receive the error message cannot restore segment prot after reloc: Permission denied when launching IDL, then your SELinux configuration is preventing IDL from launching. To rectify this issue, you can either:
1.Change the default security context for IDL by issuing the command:
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
2.Disabling SELinux altogether by setting the line
SELINUX=disabled
用第一种方法可以解决上述问题,在root用户下执行命令:
chcon -t texrel_shlib_t /opt/PostgresPlus/8.3AS/dbserver/lib/*
这儿需要注意,/opt/PostgresPlus/8.3AS/dbserver/lib下的so文件,很多都需要用上面的命令执行一下才可以,由于这些文件中还有 *.so.5 、*.so.2之类的文件,所以执行时使用了 * ,这样可以把所有的文件都覆盖到。