天天看點

linux下源碼軟體包的安裝

我們在使用linux做伺服器的時候,因為linux自帶的軟體包都有些老,不是最新的,但是有時候我們為了使用最新的軟體,會使用最新的軟體的源碼來進行安裝。

是以我們需要用心去做了...

在我們拿到一個軟體的源碼時,源碼一般都是使用tar.gz或tar.bz2結尾。

源碼--》配置檔案(./configure)--》編譯(makefile)--》(可執行 頭檔案 庫檔案 手冊)--》安裝

對于源碼的安裝,我們說西安要确定機器安裝了編譯環境

使用yum  grouplist |less 檢視是否安裝了

Develoment Libraries 和Develoment Tools開發環境,如果沒有,

請先安裝,否則沒法源碼安裝

那我們首先要對源碼進行包的拆解

tar -zxvf 源碼 -C /usr/local/src/(對源碼包解壓到一個路徑,/usr/local/src/是系統給我們用來存放源碼拆解後的檔案路徑)

源碼解壓後我們就可以對源碼安裝了。

源碼檔案解壓後進入拆解後的檔案,一般會看到很多個檔案夾或檔案,其中有一個INSTALL檔案或README檔案,以及配置檔案這是我們安裝前必看的說明書

我們一安裝apache服務為例做個實驗。

安裝前先把源碼下載下傳到機器裡,進入所在目錄

<a href="http://blog.51cto.com/attachment/201307/232450669.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201307/232450405.png" target="_blank"></a>

進入apsche拆解後的目錄

<a href="http://blog.51cto.com/attachment/201307/232450849.png" target="_blank"></a>

我們看到一個INSTALL檔案,檢視一下

<a href="http://blog.51cto.com/attachment/201307/232450693.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201307/232451375.png" target="_blank"></a>

我們要檢視一下configure的使用說明

<a href="http://blog.51cto.com/attachment/201307/232451304.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201307/232452848.png" target="_blank"></a>

接下來開始配置安裝apache

<a href="http://blog.51cto.com/attachment/201307/232452868.png" target="_blank"></a>

報錯了,我們來看啊可能否安裝了apr

<a href="http://blog.51cto.com/attachment/201307/232452695.png" target="_blank"></a>

我們裝了apr,但是有的調用的檔案并不都在apr裡,有的在apr-devel裡,我們去在安裝看下,

<a href="http://blog.51cto.com/attachment/201307/232453776.png" target="_blank"></a>

然後我們再次執行apache的安裝

<a href="http://blog.51cto.com/attachment/201307/232453283.png" target="_blank"></a>

這次有報錯了,但是說的明确了,說我們的apr的版本太低了,那我們重新安裝

我們把apr新版的拆解到/usr/local 下

<a href="http://blog.51cto.com/attachment/201307/232453956.png" target="_blank"></a>

我們安裝apr包和apr-util包

<a href="http://blog.51cto.com/attachment/201307/232453865.png" target="_blank"></a>

我們會看到生成了很多的makefile檔案,那我們直接make

<a href="http://blog.51cto.com/attachment/201307/232454949.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201307/232454819.png" target="_blank"></a>

安裝後我們進入apr檔案内,因為apache要調用他的庫,可是apr是我們自己安裝的,不是預設的路徑,是以我們要對apr庫進行連接配接處理,使apache可以調用

<a href="http://blog.51cto.com/attachment/201307/232454906.png" target="_blank"></a>

那麼我沒呢可以簡單些直接建立一個系統可是識别的檔案,這樣可以避免對所有的庫檔案做連結

<a href="http://blog.51cto.com/attachment/201307/232454267.png" target="_blank"></a>

建立apr.conf檔案,把apr的庫路徑加入進去就ok!

然後我們要更新緩存,在檢視是否成功

<a href="http://blog.51cto.com/attachment/201307/232454581.png" target="_blank"></a>

接着安裝apr-util

<a href="http://blog.51cto.com/attachment/201307/232455695.png" target="_blank"></a>

然後make和make install

<a href="http://blog.51cto.com/attachment/201307/232455876.png" target="_blank"></a>

現在apr的問題已經解決了,那我們重新安裝apache

<a href="http://blog.51cto.com/attachment/201307/232455195.png" target="_blank"></a>

但是還是報錯 ,說我們缺少apr-1-config ,那我們在說明一次,添加他的路徑

<a href="http://blog.51cto.com/attachment/201307/232455704.png" target="_blank"></a>

為了避免麻煩,我們再次查詢一下所有與apr相關的配置 ,全部帶上

<a href="http://blog.51cto.com/attachment/201307/232455388.png" target="_blank"></a>

找到後,我們再次重新安裝

<a href="http://blog.51cto.com/attachment/201307/232455348.png" target="_blank"></a>

但是又報錯了。說我們的pcre沒有找到

<a href="http://blog.51cto.com/attachment/201307/232457360.png" target="_blank"></a>

我們來解決他,安裝prec

<a href="http://blog.51cto.com/attachment/201307/232457948.png" target="_blank"></a>

我們再來安裝apache的源碼

沒有報錯,安裝成功,生成了很多的makefile檔案

那我們就安裝apache  make &amp;&amp; make install

<a href="http://blog.51cto.com/attachment/201307/232457921.png" target="_blank"></a>

到此,我們的apache就是安裝完成了

我們看到了,源碼的安裝很複雜,而且很容易出錯,我們需要做很多的調試

在我們安裝完成後,但是不完美,沒法開機自動啟動

沒關系,我們來幫他,手動啟動或自動啟動

進入/usr/local/apache/bin 目錄下

<a href="http://blog.51cto.com/attachment/201307/232458168.png" target="_blank"></a>

我們隻需要在指令行下輸入 ./httpd -f /usr/local/apache/http.conf 就可以啟動,但是不是很完美,我們可以給他寫一個啟動腳本

一般的服務的腳本放在rtc/init.d/目錄下,我們就去這裡寫apache服務腳本

腳本如下:(個人寫的,有些簡陋,請見諒)

#!/bin/bash

prog=/usr/local/apache/bin/httpd

configfile=/etc/apache/httpd.conf

lockfile=/var/lock/subsys/httpd

. /etc/init.d/functions

start() {

  if [ -e $lockfile ];then

     echo "The program `basename $prog` is started!"

  else

     echo "The program `basename $prog` is starting......"

     sleep 2

     $prog &amp;&amp; echo -e "[ok]" &amp;&amp; touch $lockfile || echo -e  "[fail]"

  fi

}

stop() {

     echo "The program `basename $prog` is stoping......"

     killproc httpd &amp;&amp; echo "[ok]" &amp;&amp; rm -rf $lockfile || echo "[fail]"

     echo "The program `basename $prog` is stoped!"

status() {

     echo "The program `basename $prog` is running......"

     echo "The program `basename $prog` is stop......"

fi

case "$1" in

start)

     start

     ;;

stop)

     stop

status)

     status

restart)

*)

     echo "usage: start|stop|status|restart"

esac

我們對寫下的腳本測試一下

<a href="http://blog.51cto.com/attachment/201307/232458879.png" target="_blank"></a>

上面的是我們手動的啟動我們的服務,我們可以讓它開機啟動,使用chkconfig指令來實作,我們要在/etc/init.d/httpd 内增加chkconfig

<a href="http://blog.51cto.com/attachment/201307/232458859.png" target="_blank"></a>

把httpd的啟動緩存加入chkconfig

<a href="http://blog.51cto.com/attachment/201307/232458669.png" target="_blank"></a>

這樣子httpd服務開機啟動的目地就達到了!

    本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1260058,如需轉載請自行聯系原作者