2008年1月16日 星期三

在Fedora 8 安裝oracle 10g R2

在Fedora 8安裝oracle 10g資料庫時,
我拿了之前寫好的 oracle_preinstall.sh 來用,
以為在Fedora 7和ubuntu 6.10和Cent OS 4.5能用。
應該也在現在這個Fedora 8適用!
結果在執行oracle10g R2這版的runInsaller時,
出現了“xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock failed.”這樣的錯誤訊息!

這是java執行引用xlib函式庫的問題,而oracle安裝的介面,不巧正是java寫的。
為了讓我oracle資料庫能順利安裝到Fedora 8,找了些文件!

解決的辦法是:
1.先以root更新xlib的一個函式庫
yum --enablerepo=development update libxcb

2.再回到oracle安裝帳號的環境裡,設定一個變數
export LIBXCB_ALLOW_SLOPPY_LOCK=1


重新用oracle帳號執行 ./runInsaller就能順利執行了!

至於若是用ubuntu 7.4以後版本,出現在這樣的問題,
可以參考以下的連結文章:

xlib.lock’ failed."">Ubuntu feisty 的問題: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock’ failed.



執行步驟如下:
apt-get source libxcb-xlib0
sudo apt-get build-dep libxcb-xlib0
cd libxcb-1.0
vi src/xcb_xlib.c
+===========================================================+

編輯重點是 src/xcb_xlib.c 的第 41 , 50 行的 assert 都註解掉.
我參考 archlinux 的 patch , 把 assert 換成 if . 如下:

void xcb_xlib_lock(xcb_connection_t *c) {
_xcb_lock_io(c);
// assert(!c->xlib.lock);
if (!c->xlib.lock) {
c->xlib.lock = 1;
c->xlib.thread = pthread_self();
}
_xcb_unlock_io(c);
}

void xcb_xlib_unlock(xcb_connection_t *c) {
_xcb_lock_io(c);
// assert(c->xlib.lock);
if (c->xlib.lock) {
assert(pthread_equal(c->xlib.thread, pthread_self()));
c->xlib.lock = 0;
pthread_cond_broadcast(&c->xlib.cond);
}
_xcb_unlock_io(c);
}


+===========================================================+
接著回來重編deb套件包,再安裝它。
dpkg-buildpackage -rfakeroot -b -uc
sudo dpkg -i ../libxcb-xlib0_1.0-1.1_i386.deb

沒有留言:

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!