一次AIX系統報錯的問題處理思路


今天遇到一個同事在AIX 5.3環境中啓動程序時報錯的問題,錯誤截圖如下:

其中報錯內容如下:
$ ./MBAFileAgent
0509-036 Cannot load program ./MBAFileAgent because of the following errors:
0509-022 Cannot load module ./jre/bin/libstdc++.a(libstdc++.so.s).
0509-150  Dependent module libgcc_s_ppc64.a(shr.0) could not be loaded.
0509-022 Cannot load module libgcc_s_ppc64.a(shr.0).
0509-026 System error:A file or directory in the path name does not exist.
0509-022 Cannot load module MBAFileAgent.
0509-150   Depentdent module ./jre/bin/libstdc++.a(libstdc++.so.5) could not be loaded.
0509-022 Cannot load module.



問題的解決思路爲:確認光盤補丁是否安裝成功;文件路徑問題;補丁編譯問題。


AIX 5.3的補丁安裝有兩種方法:一種是RPM安裝方法,一種是smit install安裝方法

方法一:RPM安裝方法
AIX 協作中心將重點推動關鍵技術領域的系統級創新,如虛擬、安全性、性能和可擴展性,該中心將幫助 ISV 們利用新的 IBM 硬件和軟件功能來改進自己在 AIX 上運行的應用。

(1)下載AIX5.3安裝所需文件

gcc-4.0.0-1.aix5.3.ppc.rpm,  
gcc-cplusplus-4.0.0-1.aix5.3.ppc.rpm,  
libgcc-4.0.0-1.aix5.3.ppc.rpm,  
libstdcplusplus-4.0.0-1.aix5.3.ppc.rpm,  
libstdcplusplus-devel-4.0.0-1.aix5.3.ppc.rpm  
地址爲http://www-03.ibm.com/servers/ai ... linux/download.html  


(2)因AIX5.3已默認安裝rpm,故只需以root身份利用ftp將上述五個rpm文件上傳到/usr/opt/freeware/src/packages/SOURCES(該目錄aix中已有,並不象管理手冊上所講的--“要使用linux toolbox需要建立新的文件系統/opt/freeware”)



(3)以root身份在/usr/opt/freeware/src/packages/SOURCES執行命令

#rpm -ivh gcc-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh libgcc-4.0.0-1.aix5.3.ppc.rpm 
 #rpm -ivh libstdcplusplus-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh libstdcplusplus-devel-4.0.0-1.aix5.3.ppc.rpm  
#rpm -ivh gcc-cplusplus-4.0.0-1.aix5.3.ppc.rpm 
最多不超過一分鐘gcc、gcc++安裝完成,以普通用戶登錄,編一個“hello world”測試程序結果正確!這樣,在AIX5.3中,我們就完成了gcc的安裝。
注:單獨的補丁包通常就可以使用這種方式安裝。


方法二:smit install安裝方法

安裝AIX補丁包

1.       到fix central(http://www-933.ibm.com/support/fixcentral/)根據需要下載AIX補丁包
2.       將補丁包上傳至需要更新的服務器
3.       在系統中運行命令“smitty installp”→“Update Installed Software to Latest Level (Update All)”,在“INPUT device / directory for software”項中直接輸入補丁包的路徑回車,
4.       在安裝之前最好先模擬安裝預覽一下,將選項“PREVIEW only? (install operation will NOT occur)”改爲“Yes”(用“ESC”+“4”選擇),然後回車
5.       查看輸出結果。輸出結果爲OK,則按“ESC”+“3”返回之前圖1的界面。將選項“PREVIEW only? (install operation will NOT occur)”改爲“No”,“COMMIT software updates?”改爲“No”,“SAVE replaced files?”改爲“Yes”,“ACCEPT new license agreements?”改爲“Yes”,然後回車
6.       看到屏幕輸出結果Ok,補丁即安裝完畢。
注:這種方式也可以做補丁包升級時使用。
 
回退安裝AIX的補丁包

回退只能對在安裝補丁包的過程中通過將選項“COMMIT software updates?”設置爲“No”,並且“SAVE replaced files?”設置爲“Yes”安裝的補丁。否則只能做刪除操作,而不能做回退操作。
1.       在系統中運行命令“smitty install”→“Software Maintenance and Utilities”→“Reject Applied Software Updates (Use Previous Version)”
2.       在“SOFTWARE name”按“ESC”+“4”顯示選擇菜單,通過按“ESC”+“7”選擇需要回退的補丁,然後回車,如圖2
3.       再回退前還是先模擬預覽一下,將選項“PREVIEW only? (install operation will NOT occur)”改爲“Yes”(用“ESC”+“4”選擇),然後回車
4.       查看輸出結果。輸出結果爲OK,則按“ESC”+“3”返回之前圖2的界面。將選項“PREVIEW only? (install operation will NOT occur)”改爲“No”,然後回車
5.       看到屏幕輸出結果Ok,補丁即回退完畢。
6.       回退完畢後,按“ESC”+“0”返回到命令行界面。輸入命令“lslpp –l|grep XXXX”(XXXX爲回退的補丁filesets)可以查看filesets是否回退到之前的版本。



另外有一種情況是路徑造成的問題:
aix6.1 安裝程序時報libstdc.so.6不能加載,
libstdc++-devel   4.2.0 (6.1)
 libstdc++             4.2.0 (6.1)
都已經安裝了 ,菜鳥求指教

QQ截圖20130807103110.png

解決方案:aix默認庫安裝位置爲/opt下,而程序查找的位置是/usr/lib,所以拷貝庫文件到/usr/lib下或做ln都可




還有一種需要專門C++編譯的問題:
如果是要編譯C++的話,要另外付費購買,不在系統盤裏,有個專門的C++軟件;
只要需要編譯的話,就需要單獨的C++安裝盤;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章