以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- Linux應用開發 (http://www.hufushizhe.com/bbs/list.asp?boardid=32) ---- 在 Power 上使用 Linux 開放源代碼工具 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=32&id=1678) |
||||||||||||||||
-- 作者:wangxinxin -- 發布時間:2010-11-23 13:14:44 -- 在 Power 上使用 Linux 開放源代碼工具 本文主要介紹用于 POWER 微處理器體系結構上的 Linux 的開放源代碼工具,不過其中討論的問題對開放源代碼軟件在 Linux 中的使用都是共同的。本文中提及的所有項目都對(但不限于)POWER 上的 Linux 可用。 什么是開放源代碼? 開放源代碼軟件是現代計算環境的寶貴資源。本質上,開放源代碼軟件使得源代碼對使用軟件的任何人可用,即不對最終用戶隱藏任何內容。開放源代碼軟件不一定是免費的,雖然大多數都是免費的。許可證協議決定了軟件的使用方式;最流行的許可證是 GNU 公共許可證(GNU Public License,GPL)。 開放源代碼軟件是由許多不同的發起者所開發的,包括選擇與其他人共享其工作成果的技術愛好者所開發的項目。商業性的公司,比如 IBM,也在為開放源代碼出力,以便在社區中提供優秀的技術,同時確保他們的專有硬件和軟件得到開放工具的支持。能夠編程、編寫文檔或執行其他一些軟件開發相關任務的任何人,都能夠幫助創建開放源代碼軟件 —— 并且他們正是這樣做的!
為什么要使用開放源代碼工具? 許多人選擇開放源代碼工具是因為它們便宜(開放源代碼軟件經常是免費的,這當然非常便宜)。開放源代碼軟件還傾向于非常可靠。由于有技術興趣的任何人都能夠查看源代碼,因而可能會有數千個質量控制機構在評估代碼。程序員能夠無隔閡地直接接觸用戶,因此問題和 bug 通常是大家都知道的,從而迅速得到糾正。此外,由于沒有對用戶隱藏任何東西,這樣有利于更好的技術脫穎而出。 對于擔心安全問題的用戶,開放源代碼軟件能夠給他們帶來心靈的平靜。如果懷疑應用程序隱藏有“后門(back door)”,您可以獲得源代碼,自己檢查它,或讓您信任的人檢查它。然后您可以自己編譯該代碼,確保它和您預期的完全一樣。當發現與安全相關的缺陷時,社區會立即采取行動,并且通常會在幾小時內提供建議使用的補丁。正式的項目解決辦法可能要花稍長一點的時間,但是通常不會超出幾小時或幾天。開放源代碼軟件使您能夠在必要時對您的資源采取動作。 開放源代碼軟件還有助于確保技術不會被忽略。由于開發過程對感興趣的任何人都是開放的,您通常會找到人們為不常見的硬件開發的驅動程序。此外,您還能找到由那些利用不常見協議的小社區為此類協議提供的支持。Linux 之所以在廣泛的 IBM 硬件上可用,正是由于采用了這種開放方法。這有助于保持您的硬件的生命力,同時幫助保護您避免失去對某種關鍵技術的軟件支持。如果某個項目不再提供官方支持了,您總是能夠選擇自己提供該支持!
獲得開放源代碼工具 獲得開放源代碼軟件是很容易的;Linux 內核本身就是開關放源代碼的。當您安裝 Linux 時,就開始使用開放源代碼了。除了內核外,Linux 發行套件中還包含其他許多開放源代碼包,其中包括開發工具、庫和應用程序。對于所有這些包,它們的源代碼都是可用的,您可以編譯任何包以優化或為特定用途而自定義它。 除了發行套件中包含的包外,Internet 上還有其他開放源代碼軟件可供使用。有些是專用的項目或正處于首次開發中的新技術,而其他則是與 Linux 發行套件中包含的包相競爭的方法。這是一個思想的自由市場。成功的開放源代碼軟件通常最終會作為輔助包或公共包被接納到發行套件中。有些項目甚至被接納為 Linux 內核的一部分,此時這個單獨的項目將解散,而它的開發將作為標準內核維護的一部分繼續進行。 SourceForge SourceForge.net(請參閱 參考資料)是一個很受歡迎的針對開放源代碼項目的知識庫。它通過易于使用的 Web 界面來組織項目,該界面具有搜索功能以幫助您查找項目。每個 SourceForge 項目都有版本歷史記錄、bug 列表、討論組、文檔,當然還包括源代碼。如果擁有自己的開放源代碼項目,您也可以利用 SourceForge。 RPM 與源代碼 無論何時只要可能,預編譯的二進制 RPM 都是在 Linux POWER 環境中使用開放源代碼軟件的最簡單方式。軟件的所有部分都以二進制的形式準備好了,只需直接安裝即可。安裝通常只需幾秒鐘就能完成,軟件馬上就可供使用了。 由于 RPM 的工作方式,系統將自動接受依賴關系和兼容性檢查,在軟件開始安裝之前,您會接到關于缺少某個組件的通知。此外,升級、管理和刪除 RPM 包也很簡單。無論何時只要可能,采用 RPM 都是可取的。 針對 RPM 的一個優秀知識庫是 Rpmfind.net(請參閱 參考資料)。它具有一個來自許多發行套件的可搜索索引,以及大多數主要發行套件和升級的鏡像。為 PPC 列出的任何包都應該與 POWER 系統兼容。您既可以搜索包的名稱,也可以搜索某個包中包含的單獨文件。得到的搜索結果將跨越廣泛的 Linux 發行套件,包括非常罕見的發行套件。所列出的每個包通常還指向對應項目的主頁,因此如果在查找某個項目資源時遇到問題,
使用源代碼 由于 POWER 體系結構上的 Linux 還比較新,并非所有開放源代碼項目擁有者都曾想到過它。因此可能還沒有對那些包可用的 RPM 包。在這種情況下,您必須自己編譯源代碼。這對于諸如 Samba 這樣成熟的項目來說通常不是一件難事,但是對于不太常見的項目來說,可能需要做更多的工作。應該對在生產系統上編譯源代碼保持謹慎,因為這樣可能導致問題,或者失去對正在該系統上運行的商業軟件的支持。 Linux 本質上在不同的體系結構上都是相同的;因此,許多項目的源代碼無需多少經驗就能成功地編譯。源代碼通常作為壓縮的 tar 文件來提供。Gzip 是最常用的壓縮方式,不過 bzip2 正在變得流行起來,因為它創建的壓縮文件更小一些。 首先,您必須展開壓縮包。讓我們使用 Gimp 作為一個例子。Gimp 是一個照片編輯包,它處理各種各樣的圖像格式,并且包括昂貴的商業產品中具有的功能。 圖 1. Gimp 實際應用
要下載 Gimp 源代碼,請參閱本文后面 參考資料中指向 Gimp Web 站點的鏈接。要展開源代碼,請使用 文件將解壓縮到當前目錄。標準的方法是將源代碼包含在一個與產品名稱相同的目錄中。在此例中,文件包含在一個名為 gimp-1.2.4 的目錄中。 切換到該目錄就會看到源代碼、一些文檔、配置腳本,以及 README 文件。大多數源代碼包都有一個名為 INSTALL 和一個名為 README 的文件。在編譯軟件之前應該閱讀這些文件。通過閱讀這些文件,您可以在產生問題之前識別它們,并且獲得正確的編譯和安裝步驟,從而省去一些麻煩。我在編譯源代碼時遇到的大多數問題,都只是因為我沒有遵循那些文件中的指示。 最常見的下一個步驟是運行 “GNU 的 Autoconf 是一個用于配置源代碼和 Makefile 的工具。使用 Autoconf,程序員能夠創建可移植和可配置的包,因為生成包的人能夠指定各種配置選項。” 這個配置腳本在系統上運行一系列測試,以確定針對您的發行套件和體系結構編譯包的最佳方式。然后它為您的系統創建一個自定義的 Makefile。如果在系統上執行編譯時遇到問題,
它將在系統用上執行多個測試并成功地結束。要生成程序,請使用如下命令:
如果編譯出錯,您需要確定問題并修復它們。這些問題也許比較棘手,可能需要關于您的環境和總體編程的大量知識。如果一切順利,下一步通常是使用如下命令來安裝軟件:
這個命令將把文件復制到系統中的適當位置,更新文件權限,復制配置文件,并把文檔添加到手冊頁。 這種方案存在許多可能的變化形式。這其中包括對 如果程序在安裝后無法工作,大多數 Makefile 都包含一個 uninstall 參數來刪除該程序。
務必記住,使用原始源代碼不會向 RPM 數據庫輸入任何內容。以這種方式安裝的軟件是非托管的(unmanaged),因此應該小心進行。
創建自定義 RPM 如果打算使用大量純源代碼,您應該了解更多關于創建自己的 RPM 的信息。創建 RPM 并不是特別困難,雖然這個主題超出了本文的討論范圍。從您自己的代碼創建 RPM 要比從陌生人編寫的代碼創建 RPM 容易得多。要創建良好的 RPM 包,您需要足夠了解某個軟件部分中的所有組件。本質上,這個過程就是創建一個名為 SPEC 的配置文件,它識別 RPM 數據庫所必需的所有信息。關于依賴關系的信息、生成該文件的步驟,以及安裝后的操作連同該包中所有文件的列表,都包括在這個 SPEC 文件中。RPM 使用這個 SPEC 文件來編譯代碼和創建二進制包。請查看您的源包,以確定是否已經創建了一個示例 SPEC 文件。包括 SPEC 文件已經成了一個普遍習慣,這樣還可能允許您只需做很少工作或不需要做工作就能創建一個自定義的 RPM。 源 RPM 在創建 RPM 時,存在一個叫做源 RPM(Source RPM,SRPM)的工件(artifact)。這是一個與源代碼組合后的 SPEC 文件,設計用于構建一個或多個體系結構。這對兩個世界來說都是最好的!使用源 RPM,您能夠在系統上自定義編譯軟件,但是完成后的產品將是可安裝的 RPM 而不只是原始的二進制。作為預編譯 RPM 可用的大多數包也作為 SRPM 可用。這可能是在 Linux 中跨平臺移動軟件的一種簡單方式。當您在一個不同的平臺上成功地重新編譯時,可考慮與社區共享完成后的 RPM。
|