Solaris 10 10/08 版本說明

Solaris 指令和標準

以下小節旨在說明 Solaris 10 作業系統中某些指令和標準之運作方式的變更。

SPARC: 與 8 位元組對齊之 Mutex 不相容的應用程式會失敗 (6729759)

類型為 mutex_tpthread_mutex_t 的物件必須從 8 位元組對齊位址開始。不符合此項需求的應用程式將會失敗。螢幕上將顯示下列錯誤訊息:


*** _THREAD_ERROR_DETECTION: lock usage error detected ***
...
"mutex is misaligned"
OR:
"condvar is misaligned"

解決方法:將環境變數設定為下列值,使 stderr 上報告對齊錯誤:

使用者應該在 THREAD_ERROR_DETECTION 環境變數設定為這些值之一時,測試其應用程式,並請求更正不相容的應用程式。

winbind 僅擷取前 1000 位 Active Directory 使用者

在 Active Directory 環境中使用 Samba 伺服器搭配 winbind 時會發生此錯誤。Solaris 10 10/08 發行版本包含 Samba 3.0.28 軟體版本。從 Active Directory 伺服器查詢所有使用者或查詢 1000 位以上的使用者時,winbind 只會擷取前 1000 個結果。

解決方法: 無。

PgAdmin III 1.6 不支援 PostgreSQL 8.3 版本

PgAdmin III 1.6 無法用於管理 PostgreSQL 8.3 版本。PgAdmin 1.6 無法識別新的 PostgreSQL 版本中的目錄結構。螢幕上會顯示各種錯誤訊息。

解決方法:升級至 PgAdmin III 版本 1.8。

經過變更的 Solaris Trusted Extensions 線上手冊只會出現在參考手冊中

下列 Solaris Trusted Extensions 線上手冊已針對本發行版本進行修訂:

修訂後的線上手冊無法使用 man 指令進行檢視。若要檢視修訂的線上手冊,請參閱「Solaris Trusted Extensions Reference Manual」

Bash 3.00 不再設定部分環境變數

Solaris 10 作業系統包含 Bash 3.00。此 shell 不再自動匯出下列環境變數:

即使 shell 為這些變數指定了預設值,仍會套用此新的運作方式。

解決方法: 手動匯出這些變數。

新的 ln 公用程式需要 -f 選項

/usr/bin/ln 的運作方式已變成符合 SVID3 到 XCU6 的所有標準。如果不搭配 -f 選項使用 ln 指令連結到現有目標檔案,便不會建立此連結。相反地,診斷訊息會寫入到標準錯誤,而且指令會繼續連結任一個留存的來源檔。最後, ln 指令會結束,並會產生一個錯誤值。

例如,如果檔案 b 存在,則語法 ln a b 會產生下列訊息:


ln: b: File exists

此運作方式的變更會影響現有 shell 程序檔或其中包含未帶有 -f 選項之 ln 指令的程式。過去可以使用的的程序檔現在在 Solaris 10 作業系統中可能無法運作。

解決方法:-f 選項搭配 ln 指令一起使用。如果現有的程序檔是用於執行連結公用程式,請務必修改這些程序檔以符合指令的新運作方式。

新的 tcsh 拒絕使用破折號或等號的 setenv 變數名稱

在 Solaris 10 作業系統中,tcsh 已升級至版本 6.12。此版本不再接受使用破折號或等號做為名稱的環境變數。運作於較早 Solaris 版本中且包含 setenv 行的程序檔在目前的 Solaris 10 發行版本中可能會產生錯誤。螢幕上將顯示下列錯誤訊息:


setenv: Syntax error

如需更多資訊,請參閱 Solaris 10 作業系統的「tcsh 線上手冊」。

解決方法: 請勿在環境變數的名稱中使用破折號或等號。

STDIO getc 系列 EOF 條件運作方式變更

某些程式庫函數的運作方式變更,將會影響到以嚴格的標準 C 一致性模式建置而成的應用程式。例如使用 cc -Xcc89 編譯模式編譯而成的應用程式。下列程式庫函數的運作方式已變更:

1990 C 標準的正式轉譯要求,檔案結尾條件設定之後,後續的輸入作業不會從該檔案傳回任何資料。但當檔案指標的位置已重設或應用程式已明確地清除了錯誤或檔案結尾旗標時不在此列。

所有其他編譯模式的運作方式則維持不變。特別是,在檔案結尾指示器設定之後,介面可以從串流讀取新寫入之額外資料。

解決方法: 在串流上報告 EOF 條件之後,請於串流上呼叫 fseek()clearerr(),以讀取其他資料。

ps 指令的輸出欄已加寬

由於 UID 和處理器 ID 愈來愈長,且累計執行時間也變久,因此加寬了 ps 指令的輸出。客戶程序檔不應假設輸出欄為固定。

解決方法: 程序檔應使用 ps 指令的 -o 選項。

如需更多資訊,請參閱「ps(1) 線上手冊」。

指令 ping -v 對 IPv6 位址沒有作用 (4984993)

執行指令 ping -v 時,若對象為使用網際網路通訊協定版本 6 (IPv6) 的位址,此指令將會失敗。螢幕上將顯示下列錯誤訊息:


ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument

解決方法: 無。若要取得與 ping -v 所提供之相同的 ICMP 封包資訊,請使用 snoop 指令。