作者:蟲蟲 當我們使用Linux一段時間以後,自然不會滿足總是在沒有任何變化的系統中工作,而是渴望能象在windows系統中一樣,不斷對自己的linux進行升級。另一方面,linux本身就是一個開放的系統,每天都會有新的軟件出現,linux發行套件和內核也在不斷更新。在這樣的情況下,學會對linux(包括系統本身和各種軟件)進行升級就顯得非常迫切了。 在Linux環境下,升級的對象可以是一般的軟件,可以是編譯器,也可以是系統的內核,甚至是系統本身。下面,蟲蟲就分別講講對不同對象的升級的方法。 1. 升級一般軟件 一般來說,升級應用軟件是比較簡單的,因為你不用太在意升級後對其他軟件的影響(如果是升級系統,情況就不一樣了)。首先,你必須找到希望升級軟件的新版本。你可以在linux的專門站點上尋找自己中意的軟件。然後就是使用各種下載工具將軟件下載到指定的目錄中。下載的軟件大部分是以tar打包的gzip壓縮文件。 在處理這些軟件之前最好使用tar tvf 或 tar ztvf 命令看看下載來的文件中包含了一些什麼文件。因為得到的軟件可能是二進制文件也可能是源碼,使用上述的命令可以看看究竟是哪一中文件。 如果是二進制文件,一般可以直接將包打開,然後刪除相應的老文件就可以了。 如果是源文件則要留心包裡面是否有幫助和安裝文件(readme / install / help)等等。然後將軟件打開到指定的目錄中去,仔細看看幫助和安裝文件中的提示和安裝約定,再進行安裝工作。這時,安裝工作意味著要對源代碼進行編譯。首先要對makefile文件進行修改,修改的內容和修改的方法在軟件包中的相關文件中往往可以找到,另外有的時候軟件包裡會包含一個shell 程序configure, 執行它可以省不少時間。對makefile文件處理完以後,就可以使用make命令來編譯指定的文件。最後用make install 命令將軟件安裝到自己的計算機上。 2. 升級編譯器 我們可以先看看自己當前的gcc版本 gcc -v 然後決定是否要進行升級。當我們需要對自己gcc、連接器、匯編器以及各種頭文件和函數庫進行升級的時候,我們就可以到相關站點上獲取對應的軟件包,然後在指定目錄下打開,同時刪除(覆蓋)原來的老文件就可以了。 3. 升級函數庫 因為升級後要重新指定庫的連接,所以升級函數庫是比較麻煩的。我們知道,linux系統的庫文件分為檔案庫和共享庫兩種類型。檔案庫的文件一般是libx.a,而共享庫的文件一般是libx.so.version. 升級函數庫時必須使用新的版本的.a 和 .so.version文件替換老版本的對應文件。對.a文件來說非常容易,只要將新的文件拷進指定的目錄,覆蓋原有的文件就可以了。但是我們對共享庫進行操作的時候就要特別小心了。決不能簡單地將新文件拷到一個目錄下,然後刪除舊的文件。因為有可能舊的函數庫正在為某個程序所使用。我們必須保證每一個程序都能夠正確地找到共享庫。簡單地講,當我們將新版本的共享庫文件放到指定目錄下以後,使用ln命令來完成: ln -sf /usr/lib/libdb.so.new("new"指新的版本號) /usr/lib/libdb.so.old("old"是原有的文件) 比如 /usr/lib/libdb.so.2 原來指向的文件是/usr/lib/libdb.so.2.0.1,現在有一個新文件/usr/lib/libdb.so.2.78.1,我們可以這樣處理: ln -sf /usr/lib/libdb.so.2.78.1 /usr/lib/libdb.so.2 然後,我們才能將/usr/lib/libdb.so.2.0.1文件進行刪除。 4. 系統升級 最簡單的升級方法當然是。。。。。。一張cd-rom裡就可以將整個系統完全包括了。當然,這樣的升級方法比較費事,同時,每一次升級都意味著原來的文件有可能丟失,因此,完全沒有必要總是將系統重新安裝一次。每一個linux發行套件其實都有記錄升級情況的文件。比如slackware中有一個changelog.txt文件,按時間順序記錄了slackware的更新狀況。而在redhat中則是/redhat-4.2/updates/00readme.errata.我們可以從這些文件中看出是不是需要進行升級。然後找到相應部分的軟件包,使用 installpkg filename 或者 rpm -U filename 來將軟件包安裝在計算機上。