DB2 9.7 on CentOS 6.1 x86_64 - Linux

William avatar
By William
at 2011-12-20T14:01

Table of Contents

昨天要在CentOS 6.1 x86_64中安裝DB2 9.7.0.4 ESE (64bit),使用的是db2setup
來啟動GUI安裝介面(透過ssh到server)。跑出GUI之後吐了以下的錯誤:

This launchpad is not intended to run on the current platform. Check the
product documentation or contact your vendor for more information about
supported platforms.

Information about your machine
Operating System (top.OS) = Linux
Operating System Type (top.OSTYPE) = unix
Processor Architecture (top.ARCHITECTURE) = x86_64
Browser/version (top.BROWSER/top.BROWSERVERSION) = Java/3.6.24
Locale (top.LOCALE) = en
Launchpad compatibility version =

Compatibility checks defined for this launchpad
top.OSTYPE = windows|unix
top.OS = Windows.*|Linux|AIX|SunOS|HP-UX
top.ARCHITECTURE = x86|AMD64|IA64|s390|s390x|PPC64|PPC32|SPARC|SPARC64|PARISC
version = 9.7

見鬼了,不就偵測到我機器是x86_64的架構,且DB2說自己有支援AMD64,怎麼還吐這
個鳥蛋出來?追了一下db2setup(這是shell script),判斷OS是x86_64後再進入到
db2/linuxamd64/install/db2setup開始跑安裝,表示安裝程式判斷OS架構是正確的。

但跑到db2/linuxamd64/install/db2setup以後事情就不對,我嘗試使用sh -x來啟動
db2/linuxamd64/install/db2setup,啥debug message都沒有。看了一下發現db2setup
裏面全部都是

setopts="${setopts:-+x}"
set ${setopts?}

把setopts全部mark起來,讚!看看吐啥鬼出來。看到這行:

+ exec /tmp/db2.tmp.27919/db2/linuxamd64/install//db2setup_exec -l
/tmp/db2setup.log -g 1 -m /tmp/db2.tmp.27919 -p /home/xxxxx/db2/server -q
/tmp

喔!原來會把東西複製到tmp裏面再去跑,去看看tmp有啥東西。grep -R 'AMD64' *看
到有幾個檔案在db2/common/launchpad/launchpad目錄中都有出現AMD64字串。之前搜
過安裝目錄中的檔案沒有啊!再看debug message有這行:

+ gunzip -c /home/xxxxx/db2/server/db2/linuxamd64/install/gui.tar.gz

去把gui.tar.gz解開來看,讚!中獎。在SetArchitecture.sh中判斷OS架構是用先用
uname判斷OS type(沒加任何參數,在CentOS執行uname返回值是Linux),當是Linux時
再用file指令(file -L /bin/sh)來判斷,而前面(db2setup)卻是使用uname -m。在
db2setup中呼叫uname指令時有先判斷該指令是否存在,但是跑到SetArchitecture.sh
的時候,就直接file下去,於是當遇到file指令不存在的時候,自然就判斷不出來。

看到SetArchitecture.sh最後面發現,當LaunchPadArch變數為空時候,再用uname來判
斷,可惜的是這裡的判斷方式跟db2setup裡頭不一致,考慮到的case沒包括x86_64的狀
況,所以最後LaunchPadArch的值是x86_64而非安裝程式所接受的AMD64。

結論:

1. 呼叫外部指令時候記得先判斷是否有這個指令。
2. 有錯要拋到console不然就寫log,在/tmp中的相關log都沒有任何訊息。
3. 一個db2安裝程式,對於OS架構用兩種不同的判斷方式,大概是兩個不同人寫的吧!

收穫:

1. 知道怎麼追蹤db2setup。
2. 改用db2_install手動安裝。
3. 知道怎麼在RHEL中改用CentOS的yum repository。為了驗證可以在RHEL 6.1安裝,
特地去裝一個RHEL系統來驗證,但是沒yum install可用啊!(這也是我用CentOS的
主因) 手動安裝rpm有遇到相依性問題,火大改用CentOS的yum repository。在
RHEL 6.1 跑db2setup起來是沒問題的,就是因為在RHEL可以裝,為了解開這個謎,
才撩下海追看看問題在那,最後才追到原來是file指令不存在的問題。

--
Tags: Linux

All Comments

Jacob avatar
By Jacob
at 2011-12-24T13:55
推研究精神!
Hedda avatar
By Hedda
at 2011-12-26T11:25
借問一下 , 什麼是 x86_84 ?
Hedy avatar
By Hedy
at 2011-12-30T06:12
就是amd64, x86_64是intel追隨amd64的規格,有別於ia64
Frederica avatar
By Frederica
at 2011-12-31T14:34
不過amd的64位元和intel的64元指令集還是有點小差別
Elvira avatar
By Elvira
at 2012-01-03T15:26
二樓,打錯字了... XD 改一改

Linux 64-bit 該選擇哪個版本的 JDK

Carol avatar
By Carol
at 2011-12-20T00:32
Win7 64-bit 用 32-bit(x86) 的 JDK1.6 或 64-bit(x64) 的 JDK1.6 都可以。 但不知 64-bit 的 Linux ,例如:CentOS 64-bit 可不可以 JDK x86/x64 通吃? 還是說 CentOS 64-bit 只能搭配 64-bit 的 ...

真的有人用純終端機管理工作站嗎?

Ethan avatar
By Ethan
at 2011-12-19T23:29
小弟我雖然是4台工作站的網管... 但是如果純Terminal的話,我真的不會太會使用= = (我連vi都不會 =.= 真弱... ) Terminal下 真的要文字編輯,我都還要呼叫gedit或mousepad.... 雖然簡潔Terminal是Linux特色之一 但桌面環境真的好用,直觀,方便 ...

virtualbox的Ubuntu使用gnome-shell

Daniel avatar
By Daniel
at 2011-12-19T21:58
使用的是Ubuntu 11.10,安裝在最新版本的virtualbox。 已經用內建的套件中心把gnome-shell直接安裝,登入畫面也有看到and#34;gnomeand#34;的選項,但 進去後還是fallback的介面...跟gnome classic介面一樣,怎麼試都不行~ 已搜尋了很久...把 ...

行限定欄位數目

Doris avatar
By Doris
at 2011-12-19T18:25
請問一下 假設資料目前為 4 35 234 66 234 55 453 234 553 2 56 234 12 56 893 2 3 每筆資料都以space分隔 想要印出一行有固定欄位數目 例如一行4欄 4 35 234 66 234 55 453 234 553 2 56 234 12 56 893 ...

X11 forwarding流暢度問題

Hardy avatar
By Hardy
at 2011-12-19T17:35
請教各位前輩 我在Ubuntu上透過X11 forwarding開啟視窗程式很順 可是換到windows上透過X manager就很頓 請問這種狀況有辦法解決嗎? - ...