1. 程式人生 > 實用技巧 >Red Hat Enterprise Linux 6上安裝Oracle 11G(11.2.0.4.0)缺少pdksh包的問題

Red Hat Enterprise Linux 6上安裝Oracle 11G(11.2.0.4.0)缺少pdksh包的問題

RHEL 6上安裝Oracle 11G警告缺少pdksh包

前言

相信很多剛剛接觸學習Oracle的人,在RHEL6上安裝11.2.0.3 or 11.2.0.4這兩個版本的時候,

都遇到過先決條件檢查的時候,警告缺少pdksh包的問題。

如下邊截圖:

對於這個問題,無論是個人自己的測試環境安裝,或者是企業伺服器上安裝遇到,不外乎兩種解決方法:

  1. 忽略該警告,繼續下一步安裝
  2. 網上下載單獨該包的rpm包安裝

不過,對於第二種解決方法,存在一個問題。

再用rpm -ivh安裝pdksh包的時候,會報錯和已安裝的ksh包衝突,安裝不了。

很多人也選擇解除安裝ksh包,安裝pdksh。

不過,ksh是Oracle官方檔案指定要安裝的包之一。

在Oracle Linux 6, Red Hat Enterprise Linux 6 and Asianux Server 4,要求:

The following packages (or later versions) must be installed:

binutils-2.20.51.0.2-5.11.el6.i686
compat-libcap1-1.10-1.i686
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6.i686
gcc-c++-4.4.4-13.el6.i686
glibc-2.12-1.7.el6.i686
glibc-devel-2.12-1.7.el6.i686
ksh
libgcc-4.4.4-13.el6.i686
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6.i686
sysstat-9.0.4-11.el6.i686

你解除安裝了官方指定要求的包,自己測試環境不說,企業環境肯定不允許這樣。

另外,不止圖形化警告該包沒有安裝,在安裝日誌裡邊也可以看到有報錯:

[
[email protected]
~]# tail - /tmp/OraInstall2020--03_10--27PM/installActions2020--03_10--27PM.log
INFO: Package: pdksh-5.2.: This is a prerequisite condition to test whether the package "pdksh-5.2.14" is available on the system.
INFO: Severity:IGNORABLE
INFO: OverallStatus:VERIFICATION_FAILED
INFO: -----------------------------------------------
INFO: Verification Result for Node:adg
INFO: Expected Value:pdksh-5.2.14
INFO: Actual Value:missing
INFO: Error Message:PRVF-7532 : Package "pdksh" is missing on node "adg"
INFO: Cause: A required package is either not installed or, if the package is a kernel module, is not loaded on the specified node.
INFO: Action: Ensure that the required package is installed and available.

原因

先說說前邊提到的兩種方法是否可取。

第二種肯定不可取,但是第一種是可行,企業大多數都這樣做。

但是為什麼忽略是可行的,有沒有官方石錘的說法。

很遺憾,我在metalink上搜不到可以忽略的檔案說明,百度也沒看到讓人信服的說法。

其實真正的原因是,OUI(安裝程式)會執行下列命令

/bin/rpm -q --qf %{version} redhat-release

來識別OS版本資訊,但是在RHEL6中,軟體包redhat-release已被redhat-release-server-6Server取代。

什麼意思,在RHEL5執行情況如下:

[[email protected] ~]# /bin/rpm -q --qf %{version} redhat-release
5Server
[[email protected] ~]#

在RHEL6中執行情況如下:

[[email protected] database]$ /bin/rpm -q --qf %{version} redhat-release
package redhat-release is not installed

其實正確的話在RHEL6應該是執行:

[[email protected] database]$ /bin/rpm -q --qf %{version} redhat-release-server-6Server
6Server

才是對的。

由於無法確認作業系統版本資訊,這使OUI認為該伺服器不是RHEL伺服器。

由於OUI無法識別伺服器的型別,因此OUI會執行預設(OEL4)前提條件檢查。

這個是Oracleunpublished(未釋出的) bug 13981169。

解決

除了直接忽略,Oracle提供另外一種方法,(強迫症患者福利)

1.解壓好安裝包後,進到這個目錄/database/stage/cvu/cv/admin

[[email protected] admin]$ ls -l
total
-rwxr-xr-x. oracle oinstall Aug cvu_config

2.備份cvu_config

[[email protected] admin]$ ls -l
total
-rwxr-xr-x. oracle oinstall Aug cvu_config
-rwxr-xr-x. oracle oinstall Jul : cvu_config.bak

3.編輯cvu_config,更改

CV_ASSUME_DISTID=OEL4

CV_ASSUME_DISTID=OEL6

並儲存。

4.重新開始安裝

至此,不在有該警告。

參考檔案:Installing 11.2.0.3 Or 11.2.0.4 (32-bit (x86) or 64-bit (x86-64) ) On RHEL6 Reports That Packages "elfutils-libelf-devel-0.97" And "pdksh-5.2.14" Are Missing (PRVF-7532) (Doc ID 1454982.1)