1. 程式人生 > >源碼包的安裝

源碼包的安裝

源碼包 安裝 httpd

一、 源碼安裝

??並不是所有的安裝包都有已經生成的rpm包的,還有一些已經編寫好的,但是還沒有進行編譯的源碼包,當我們想要安裝著謝源碼包時,我們該如何做呢?
源碼安裝三部曲:

?1、./configure

??源碼安裝不像使用rpm包安裝,使用rpm包安裝一個軟件,什麽都自己內部定制好的,你安裝在哪個目錄上,安裝的命令在哪個目錄上,緩存目錄都是默認的,根本沒得選。而使用源碼安裝時,就可以在運行源碼./configuer時後跟一些選項,想怎麽安裝怎麽安裝,安裝在哪個目錄,命令在哪個目錄,這個命令的man文檔在哪個目錄?開啟或禁用包內的某些功能都可以,相當於私人訂制,後面可以跟多個選項,不了解的可以使用命令 ./configure - -help 查看後面的所有選項及作用例圖:

技術分享圖片
技術分享圖片
技術分享圖片
??有一些小夥伴可能覺得看到這麽多選項蒙圈了,英文不太好的可能看了這些選項也不知道什麽意思,下面我就簡單介紹幾個:
?? 安裝目錄的選擇
??? --prefix=/PATH(安裝目錄) : 指定默認安裝位置,不指定一般默認為/usr/local
??? --sysconfdir=/PATH : 配置文件安裝位置
?? System types :支持交叉編譯
??安裝包的一些可選特性(feature代指某個可選的特性)
??? --disable-feature 安裝時禁用某個特性,功能(默認情況這個特性、功能是啟用的情況下)
??? --enable-feature 安裝時啟用某個特性、功能(默認情況下這個特性、功能是被禁用的情況下)
??安裝包的依賴包(pkgage:安裝包名)
??? --with-pkgage 同時將源碼包的這個依賴包也安裝
??? --without-pkgage 禁用依賴包關系
??還有一些小夥伴覺得這麽多選項好麻煩啊,我就想懶省事,我不想這麽麻煩,那就什麽選項都不加一切都按照默認的安裝就可以了
?? ./configure 這個命令不是在什麽目錄下執行都可以的,是需要把你下載下來的源碼包解壓了,然後進入解壓後的目錄下,包含有configure這個腳本文件的目錄,執行這個configure這個腳本,這個命令的作用有兩點:

??(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成的makefile

??(2) 檢查依賴到的外部環境,如依賴的軟件包,檢測一下編譯的時候是否滿足編譯所需要的軟件包是否已安裝

?2、make

??上一個不驟呢,只是檢測一下編譯環境,和傳遞一些參數,這一步才是真正的編譯,構成應用程序

?3、make install

??編譯成功後這一步來安裝,後臺做的就是把軟件需要的文件拷貝到該放的位置,執行完這一步,這個源碼包就算是安裝成功了
做完以上三個步驟,一個源碼包就算是已經安裝成功了

?4、安裝後的配置

??(1)把二進制程序目錄導入至PATH環境變量中

???可是還有一個問題,有的安裝包呢,是包含著一些命令的,安裝後才可以使用那些命令做某些特定的事情,而如果我們在安裝時自己定義一個目錄去安裝源碼包呢,這個被指定的文件就會是這個程序的根文件,那麽這個包所包含的所有的文件就會保存在我們所指定的那個文件下,但是當輸入一個二進制程序時,我們系統會默認在PATH變量的值中去尋找,PATH的值是一個或多個目錄,當運行一個程序時,Linux會在這些目錄下進行搜尋編譯鏈接,而我們所安裝的二進制程序的命令會在指定文件的/bin下,庫文件保存在指定文件下的/lib文件中,man文件會在指定文件的/man下,所以我們在使用這個包的命令時是不能直接打出那個命令的,因為這個程序的二進制程序並沒有保存至PATH變量中任何一個目錄中,所以Linux會提醒找不到該命令。要想使用該命令得麻煩的去打這個二進制程序的全路徑,例如:我把程序安裝在/app/apache下,那麽這個二進制程序會在/app/apache/bin/name,所以調用命令要/app/apache/bin/name –[選項] 這樣用,感覺非常麻煩是不是?命令太長了,用起來不是太方便,我想不輸入全路徑就直接輸入二進制程序名就可以運行該命令,這時候我們就就需要把二進制程序目錄導入PATH環境變量中就OK了。
???我們先來看一個PATH環境變量中都有哪些值
技術分享圖片
???大家都看出了吧,PATH變量中有著很多值,每一個值都是一個目錄,這些值之間以:分隔,這些目錄都是Linux中包含著二進制程序的一些目錄,我們執行一個二進制程序時Linux會在這各個值中尋找對應的二進制程序,找到就執行,找不到就會出錯無法執行,下面我們就再給它添加我們所安裝的源碼包的二進制程序路徑,就可以在下次運行程序時不用輸入全路徑,只輸入程序名就可以了。
???我們在這之前先來試驗一下,我先安裝好了一個httpd源碼包,但是還沒有把二進制程序目錄導入PATH環境變量中來先運行一下看看會不會出錯?輸入全路徑會不會出錯?
技術分享圖片
結果證明了不把二進制程序目錄導入至PATH環境變量中程序也可以用,只是用起來更麻煩一點要多輸入路徑,對於一些懶省事的小夥伴就會覺得用的不爽,下圖就交大家怎麽把二進制程序目錄導入PATH環境變量中並且再運行一下該命令看看反應
技術分享圖片
但是這種方法的PATH在終端關閉後就會消失,所以建議通過編輯/etc/profile來改變PATH,也可以改家目錄下的.bashrc
???第二種方法:
????#vim /etc/profile
???在文檔的最後,添加export PATH=”/app/apache/bin:$PATH” ,保存退出,然後運行
????#source /etc/profile 註釋:
???不報錯則成功

??(2)導入庫文件路徑

???編輯/etc/ld.so.conf文件,在文件中添加庫的搜索路徑
????#vim /etc/ld.so.conf
???然後直接將庫文件的額絕對路徑添加至最後一行就可以了
????如:/app/apache/lib
????一行寫一個路徑
????然後保存退出
???讓系統重新搜索庫文件生成緩存:
????#ldconfig [-v]
????? -v : 顯示過程

??(3)導入頭文件

??? 基於鏈接的方式實現:
???? ln-sv

??(4)導入幫助手冊

???幫助手冊其實就是man命令,使用man 後跟一個命令,可以查出這個命令的幫助手冊,幫助你更好的使用這個命令,新裝的源碼包也有自己的man手冊,但是不導入幫助手冊,即使二進制程序可以正常使用,也是不能查看man幫助信息的,所以需要還需要導入man手冊來方便查看幫助手冊
???編輯/etc/man.config|man_db.conf文件,添加一個MANPATH(man路徑)
???? #vim /etev/man.config|man_db.conf
?????在文件末行添加一條man路徑
?????格式為MANPATH 安裝程序的man路徑,例如:
? ????MANPATH /app/apache/man
?????保存退出
??? 這樣一個源碼包就算是完美的安裝好了,後面的安裝後的配置也可以不做,源碼包安裝好久可以用,不過是使用命令麻煩點,man麻煩點而已,所以建議大家有rpm包文件最好使用rpm安裝,簡單省事,一條命令解決所有的問題

二、 源碼包的組成

??1、源碼包的通常是由多個文件組成的,文件中的代碼很可能跨文件依賴關系,另外源碼包除了包含源代碼的文件,還包含一些其它的man文件、幫助文檔、配置文件等。把這些文件壓縮成一個壓縮包就叫做源碼包
??2、源代碼是不能夠直接使用安裝的,必須經過編譯後才可以安裝,
源代碼?預處理?編譯?匯編?鏈接?執行
??3、源碼包的安裝的大同小異,大部分安裝方法都是差不多的,但是不妨礙也有一部分的源碼包安裝不一樣,所以建議大家在安裝前可以查看一下README這個文件,README文件呢是對於這個軟件的一些介紹,關於它的版本,它的目錄放在哪,還有一個INSTALL這個文件裏面是包含一些這個包的配置文件的介紹
??4、開源程序源代碼的獲取:
???官方自檢站點:
????Apache.org   mariadb.org
???代碼托管:
???? SourceForge.net  Github.com   code.google.com
??5、c/c++編譯器:gcc(GNU C Complier)
??6、編譯C源代碼:
???1.準備:提供開發工具及開發環境
????開發工具:make,gcc等
????開發環境:開發庫,頭文件
????glibc:標準庫
??? 2.實現:通過“包組”提供開發組件
????Development Tools
????Server Platform Development

三、 安裝源碼包的示例

??光是這樣看呢,可能也不是太明白,下面給大家做一個示例
??要求:將CentOS 6中安裝httpd-2.2.34.tar.gz源碼包

?第一步:從apache官網上找到並下載httpd-2.2.34.tar.gz源碼包

??打開瀏覽器在地址欄輸入http://httpd.apache.org/ 進入下圖
技術分享圖片
??點擊左邊紅框處的下載進入下圖:
技術分享圖片
??往下滾動鼠標找到下圖中的紅框處點擊會下載此httpd-2.2.34.tar.gz安裝包至您的物理機上
技術分享圖片
??然後會出現下圖中的下載框,讓您選擇下載至指定的位置並記住這個位置,方便下一個把源碼包拷貝至虛擬機上
技術分享圖片

?第二步:從物理機上把下載好的源碼包拷貝至虛擬機內

??從物理機上拷貝文件至虛擬機需要rz命令,如果虛擬機沒有安裝rz命令,下面我們來先安裝rz命令,但是只知道這個命令是rz,不知道有沒有rz這個包呢?我們來看一下下圖,使用yum安裝一下rz:
技術分享圖片
??發現安裝失敗,並沒有rz這個安裝包,怎麽辦呢?別著急我們還有yum provides來查詢關於rz這個命令的來自於哪個安裝包
技術分享圖片
??發現了rz這個命令來源於lrzsz這個包
??下面就可以安裝這個命令了
技術分享圖片
技術分享圖片
??本來安裝過rz的小夥伴可以忽略衣裳步驟,直接使用rz拷貝,安裝成功後我們來看看如何使用rz來講物理機上的文件拷貝至虛擬機,
技術分享圖片
??然後或彈出對話框如下圖
技術分享圖片
??找到第一步下載的源碼包的位置選擇open拷貝至虛擬機,這一步要註意了,rz這個命令,是在哪個目錄下執行的,拷貝的文件就會在哪個目錄下,

?第三步:解壓源碼包

??然後將源碼包從當前文件拷貝至想要安裝的目錄,我這裏就安裝在/app目錄了
技術分享圖片
??再下一步就是解壓了
技術分享圖片
??解壓完成我們來看一下源碼包內都有什麽文件吧
技術分享圖片

?第四步:安裝development包組

??這裏解釋一下為甚麽要先安裝development包組,因為這個是源碼安裝,這些源碼是未經過編譯的,源碼包必須要編譯過後才可以安裝,而編譯需要的一些命令軟件徐亞用到development包組內的好多軟件包,所以要先安裝development包組
技術分享圖片

?第五步:./configure 檢測編譯環境

??這個命令必須在解壓的目錄中,包含configure腳本的目錄中執行
??我這裏其它選項就太多了就不設置了,只設置安裝主目錄在/app/apache
技術分享圖片

?第六步:make 編譯

??傳遞我設置的選項參數,並檢測成功後使用make命令編譯,構建應用程序
技術分享圖片

?第七步:make install

??編譯成功,這一步就是安裝軟件了
技術分享圖片
??完成這一步,這個源碼包就算是安裝好了

四、 卸載源碼包

??有安裝就有卸載,源碼包的卸載不用像rpm包那樣卸載,rpm -e如果源碼包中有卸載程序呢,就查看安裝手冊,按說明卸載,不同的源碼包卸載方法也不同,但是有一個通用的卸載方法,那就是記住安裝時選擇的安裝目錄,例如上面的安裝步驟,安裝在了/app/apache目錄下,所以安裝的程序的所有文件都在該目錄下,直接簡單粗暴的刪除這個目錄就可以了
??? Rm -rf /app/apache

源碼包的安裝