<script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 728x90, 大橫幅正文上方 */ google_ad_slot = "4725362798"; google_ad_width = 728; google_ad_height = 90; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
<!--Google 728*90橫幅廣告結(jié)束-->
1 安裝應(yīng)用程序
下面我們來解釋如何在Linux系統(tǒng)中安裝軟件,例如如何安裝現(xiàn)成的應(yīng)用程序,或者編
譯公開源代碼的應(yīng)用程序。事實(shí)上,由于Linux應(yīng)用程序可以以源代碼或者目標(biāo)程序的方
式提供,所以有多種提供軟件包的方法,最常用的兩種方法是rpm和tgz。
1.1 rpm程序
rpm是一種將軟件打包發(fā)行并且實(shí)現(xiàn)自動安裝的程序,目前,大部分Linux發(fā)行版本都
使用rpm程序來管理軟件的安裝和拆除,例如RedHat,Turbo Linux,Corel Linux等等。
對于個別沒有提供rpm程序的發(fā)行版本,你可以自己下載rpm程序并且進(jìn)行編譯。
需要用rpm安裝的軟件包通常是一些打包文件,后綴名是.rpm。rpm程序可以對這種程
序包進(jìn)行安裝,卸載,升級和維護(hù)。
Rpm程序的第一個功能是安裝應(yīng)用軟件,例如,在當(dāng)前目錄下有一個apache-1.3.6-4.
rpm軟件包,那么安裝它的命令是
rpm –i apache-1.3.6-4.rpm
-i開關(guān)用來安裝應(yīng)用軟件,如果你想看到更完整的安裝信息,可以同時使用-v和-h選
項:
rpm –ivh apache-1.3.6-4.rpm
這兩個選項將在安裝的同時顯示軟件的名稱和安裝進(jìn)度。
rpm程序能夠在安裝程序的同時檢查軟件包的相互依賴關(guān)系,并且檢驗(yàn)軟件之間的文件
沖突,如果發(fā)現(xiàn)沖突或者需要的軟件包沒有安裝,或者已經(jīng)安裝了其他版本的軟件包,
就會報錯并退出。
對于需要升級舊版本軟件的情況,使用-U選項,例如,已經(jīng)安裝了Apache 1.2.1的系
統(tǒng)上再安裝1.3.6,那么需要執(zhí)行
rpm –U apache-1.3.6-4.rpm
同樣可以使用-v和-h選項。
偶爾你可能會碰到想要不顧文件沖突或者版本沖突而想強(qiáng)行安裝應(yīng)用程序的情況,這
種情況下可以使--force選項,如:
rpm –i --force apache-1.3.6-4.rpm
類似的還有兩個選項--nodeps 和--replacefiles。-nodeps是不檢查相互依賴關(guān)系,
--replacefiles是自動強(qiáng)制替換文件。
另外一個有趣的用法是可以用rpm從ftp server上安裝應(yīng)用程序,例如
rpm –i ftp://myserver.com/apache/apache-1.3.6-4.rpm
rpm程序的第二個標(biāo)準(zhǔn)用法是卸載軟件包,這可以用-e選項,例如,刪除apache-1.3.
6的命令是
rpm –e apache
注意刪除軟件包的時候使用的軟件包的名字不包含版本號。
同樣,刪除軟件包也會引起rpm的軟件包依賴性驗(yàn)證,如果你想刪除的軟件包被別的軟
件包使用就會出錯。--nodeps選項仍然用于禁止依賴性檢查。
下一個常用的功能是對軟件包進(jìn)行查詢,這是通過-q選項來完成的,例如,要查閱當(dāng)
前是否安裝了apache軟件包,版本是什么,可以使用命令(注意沒有版本后綴)
rpm –q apache
會顯示當(dāng)前安裝的apache rpm的文件名。如果要查詢當(dāng)前安裝的所有軟件包,使用-a
選項:
rpm –a
有時你想知道某個文件是什么軟件包安裝上去的,這時可以使用-f選項,例如,要查
出/etc/httpd/httpd.conf屬于那個軟件包,執(zhí)行
rpm –qf /etc/httpd/httpd.conf
另外的工作是查詢某個軟件包所包含的文件,這可以使用-qpl選項,如
rpm –qpl apache-1.3.6-4.rpm
其中,l選項的含義是建立類似于ls –l的文件列表輸出,類似的還有-i,-d和-c,例
如
rpm –qpi apache-1.3.6-4.rpm
顯示這個軟件包的版本和開發(fā)人員信息。
rpm –qpc apache-1.3.6-4.rpm
顯示軟件包中的配置文件清單
rpm –qpd apache-1.3.6-4.rpm
顯示軟件包中的文檔列表。
最后一個常用的功能是校驗(yàn)軟件包的完整性,命令是-V。例如,檢驗(yàn)?zāi)硞€軟件包的文
件是否正確,使用
rpm –V apache
想檢查某個安裝好的文件和包中的文件是否一致,使用-Vf,例如
rpm –Vf /usr/sbin/httpd
想檢查某個包安裝到系統(tǒng)上的文件是否完全正確(和包比較),使用-Vp,如
rpm –Vp apache-1.3.6-4.rpm
1.2 編譯應(yīng)用程序
盡管rpm程序帶來了很多好處,但是由于各種原因,仍然難免發(fā)生在某個系統(tǒng)上編譯出
的應(yīng)用程序在其他系統(tǒng)上不能運(yùn)行的情況。最常見的情況是運(yùn)行庫的不同,例如,現(xiàn)在
大部分Linux上的應(yīng)用程序基于GLIBC(GNU GCC編譯器使用的運(yùn)行庫),結(jié)果是沒有包含
正確的GLIBC版本的Linux就無法使用這些目標(biāo)代碼,這種互相不兼容是UNIX傳統(tǒng)的一大
體現(xiàn)。幸運(yùn)的是,所有Linux都基于共同的操作系統(tǒng)內(nèi)核(內(nèi)核版本不同引起的沖突除外
)和相同的編譯器(GNU GCC)。而且Linux下的應(yīng)用程序是基于GNU協(xié)議的,因此你通常
總是可以重新編譯源程序,得到一個可以使用的版本。
要編譯應(yīng)用程序,首先必須拿到應(yīng)用程序的源代碼。一般來說,各個Linux廠商都會提
供它的發(fā)行版本中各種應(yīng)用程序的源代碼,實(shí)在不行的話你也可到網(wǎng)上去下載。
下載下來的源代碼有各種形式,最常見的是rpm,其后綴名是.src.rpm,可以象普通的
rpm文件一樣安裝,安裝時,rpm程序一般會把源代碼拷貝到/usr/src/redhat/SOURCE下
(也可能有其他的目錄名,你自己到/usr/src下看一下),通常這些源代碼安裝時并沒
有解壓,是一些在/usr/src/redhat/SOURCE下后綴名為.tgz或.tar的文件。另外,也可
能你下載的源代碼本身就是.tgz或者.tar.gz形式,那么就可以直接進(jìn)行下一步,不需要
安裝了。
.tgz或者.tar.gz就是.tar的壓縮格式,可以用gzip程序進(jìn)行展開:
gzip –d apache-1.3.6.tgz
或者
gzip –d apache-1.3.6.tar.gz
將會將其還原為apache-1.3.6.tar文件,然后
tar xvf apache-1.3.6.tar
將這個程序完全展開成為源代碼。關(guān)于tar和gzip程序的詳細(xì)說明見后面“日常維護(hù)”
部分。
進(jìn)入到展開的目錄apache-1.3.6,然后執(zhí)行
./configure
幾乎所有的源程序都會包含這個程序,通常,在發(fā)行源代碼時,開發(fā)者會寫這個名為
configure的腳本,以便自動確定諸如操作系統(tǒng)類型,編譯器的版本等等重要的信息。這
個腳本將生成關(guān)鍵性的Makefile文件。(然而,也有個別開發(fā)者會把這個工作留給你自
己,這樣的話,他一般會給你一個范例性的Makefile文件,并且給出足夠的說明,你可
以在這個文件上修改使之適合你的系統(tǒng))另外,大部分程序的configure程序包含一些參
數(shù),可以設(shè)置程序安裝運(yùn)行的路徑,程序的運(yùn)行庫等等信息。一般你可以使用-help參數(shù)
來察看這些參數(shù)的用法。
然后執(zhí)行
make
GNU的make程序?qū)⒆詣泳幾g所有源代碼。
最后,在編譯完畢之后,通常開發(fā)者會設(shè)計自動安裝程序,這可以執(zhí)行
make install
完成。
為了兼容性的原因,大部分源代碼在編譯后,目標(biāo)程序的缺省安裝路徑是/usr/local
,相應(yīng)地,配置文件的位置也變到了/usr/local/etc,/usr/local/etc或者/usr/local
/xxxx/etc等(xxxx是被編譯的應(yīng)用程序的名字),通常你可以用configue的選項設(shè)定這
些目錄,或者干脆按照新的路徑進(jìn)行配置。
個別比較簡單的軟件只有一個運(yùn)行文件,例如joe程序,那么就不提供安裝命令,你只
要自己把編譯出的可執(zhí)行程序拷貝到/usr/bin就萬事大吉了。
上面的操作是編譯90%Linux程序的基本步驟,不過,必須記住,這只是一種習(xí)慣而已
,如果這樣的動作不起作用,那也沒有什么奇怪的,那你就的研究軟件的文檔了。還有
個別的程序只有一個.c文件,那就直接用gcc編譯程序編譯他就可以了。
gcc編譯程序的用法是
gcc –o [目標(biāo)文件名] [源文件名]
例如,有一個somesoft.c,你想編譯這個程序,編譯出的執(zhí)行程序的名字叫soft,那
么執(zhí)行
gcc –o soft somesoft.c
就可以了。
由于Linux的特性,軟件開發(fā)者會不斷地推出新的patch,通常,這些patch會用在源代
碼上修改的方式推出,表現(xiàn)就是一些.patch文件,可以用patch程序來使用這些patch,
例如,我得到了一個關(guān)于apache的patch程序,名字叫tok.patch,進(jìn)入apache的源代碼
展開的目錄,執(zhí)行
patch –p0 < tok.patch
就可以了。關(guān)于patch命令的情況,參考日常管理的部分。
1.3 其他
還有一些其他的軟件包安裝程序,例如pkgtool和deb安裝程序,說實(shí)話這些程序都很
蠢,而且現(xiàn)在大部分Linux廠商都在走向rpm,甚至許多其他的UNIX廠商也在考慮使用rp
m,當(dāng)然,像sun那樣的堅持使用愚蠢的pkgtool的公司也是有的。但是我們不打算介紹這
種東西了。唯一必須指出的是.tgz或是.tar.gz這種直接壓縮的軟件包還是經(jīng)常有人使用
的,如同我們剛才說的,這樣的壓縮包可以先用gzip解壓再用tar展開,另外,也可以使
用tar的z選項直接展開:
tar zxvf apache-1.3.6.tgz
轉(zhuǎn)自【http://hi.baidu.com/liminghui1986/blog/item/23248081a9e6a8debd3e1eeb.html】
<script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 728x90, 大橫幅正文下方 */ google_ad_slot = "4725362798"; google_ad_width = 728; google_ad_height = 90; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
<!--Google 728*90橫幅廣告結(jié)束-->
<script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x15 橫鏈接單元 */ google_ad_slot = "5785741422"; google_ad_width = 468; google_ad_height = 15; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
<!--新Google 468x15 橫鏈接單元結(jié)束-->
<script src="http://www.google.com/reader/ui/publisher.js" type="text/javascript"></script><script src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC" type="text/javascript"></script>
<!-- Google Reader shared發(fā)布代碼結(jié)束 -->
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
