天天看點

Linux平台編譯安裝源碼包,制作rpm二進制安裝包。

送給讀者們一句話:

Only those who constantly retool themselves stand a chance of staying employed in the years ahead

(隻有那些不斷充實自己的人,才有機會在往後的日子裡持續地被雇傭。)

        好,進入今天的正題:

        在了解rpm和yum後,基本可以滿足大部分的程式安裝了,但是有些源程式還是要自己編譯安裝的,在本機平台編譯的程式,能更好的相容機器的CPU,發揮更好的性能。

下面我們讓一起來編譯安裝一個httpd服務:

當然在編譯之前,請確定系統已經安裝了開發包元件。如果沒有安裝就用yum安裝即可。

# yum groupinstall -y 

'Desktop Platform Development' 'Development tools' 'Server Platform Development'

1.解壓httpd源程式包

# tar xvf httpd-2.4.6.tar.bz2 

# cd httpd-2.4.6

# ls

可以看到以下檔案:

<a href="http://s3.51cto.com/wyfs02/M02/25/80/wKioL1NhoXij9WtMAAGf3uLS0XU806.jpg" target="_blank"></a>

configure 是一個編譯環境檢測和讓使用者定制編譯配置的腳本,它結合Makefile.in 建立Makefile檔案。

configure --help 可檢視配置的幫助資訊。

直接執行# ./configure --prefix=/usr/local/apache

如果這裡有報錯說沒有找到apr的話,就要先用以下步驟安裝apr和apr-util:

# tar -xvf apr-1.4.6.tar.bz2 

# cd apr-1.4.6

# ./configure 

# make

# make install

# cd ..

# tar -xvf apr-util-1.5.2.tar.bz2 

# cd apr-util-1.5.2

# ./configure --with-apr=/usr/local/apr/

完成這些回到httpd-2.4.6目錄再次執行:# ./configure --prefix=/usr/local/apache

<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKioL1NhrHjheST4AAI7mnKKqfA706.jpg" target="_blank"></a>

檢測完成以後,看下Makefile是否已建立。

<a href="http://s3.51cto.com/wyfs02/M02/25/80/wKiom1NhrWeAdc4zAAMgSisDIhI811.jpg" target="_blank"></a>

檔案已經有了吧,現在可以執行make了:

完成了,沒有報錯,執行make install

<a href="http://s3.51cto.com/wyfs02/M01/25/81/wKioL1NhstyDG_YvAATUztaPEvo507.jpg" target="_blank"></a>

安裝完成!

<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKiom1Nhs_ugu0EVAAJZvkGJa5w782.jpg" target="_blank"></a>

#cd /usr/local/apache

<a href="http://s3.51cto.com/wyfs02/M00/25/81/wKioL1NhtHijjeJ7AABzMScHBoQ230.jpg" target="_blank"></a>

程式就安裝在這裡了。

接下來要做的是,包含頭檔案。

# ln -sv /usr/local/apache/include/ /usr/include/httpd

包含man文檔

# vim /etc/man.config

加上一行MANPATH /usr/local/apache/man

<a href="http://s3.51cto.com/wyfs02/M01/25/80/wKiom1NhuEjid9-YAAGF3Pr5Itc038.jpg" target="_blank"></a>

修改PATH環境變量:

# vim /etc/profile.d/apache.sh

寫入export PATH=/usr/local/apache/bin:$PATH

<a href="http://s3.51cto.com/wyfs02/M00/25/80/wKiom1NhuwaQuWqAAADTxUsORAg678.jpg" target="_blank"></a>

這步也成功了,看下能不能啟動程式。

# apachectl start

<a href="http://s3.51cto.com/wyfs02/M02/25/81/wKioL1NhvFqwEdkcAAN9NaBfemM787.jpg" target="_blank"></a>

看到沒,80端口已經處于LISTEN(偵聽狀态)

用本機通路試試

<a href="http://s3.51cto.com/wyfs02/M01/25/80/wKiom1NhvW-DaJkJAAEZAgzfW5M389.jpg" target="_blank"></a>

也可以成功通路了,編譯安裝apache服務完成。

任務還沒完,接下來學習如何将一個rpm源程式包,編譯打包成一個可以直接使用的rpm二進制包。

先安裝,注意這種是rpm源程式包,安裝隻是把檔案解開成源程式和SPEC檔案。

# rpm -ivh nginx-1.0.5-1.fc16.src.rpm

<a href="http://s3.51cto.com/wyfs02/M02/25/81/wKiom1Nh3rXAlWf2AAGXQsngc2Q100.jpg" target="_blank"></a>

看報一大堆錯咋回事,因為沒有mockbuild這個使用者,useradd 建立即可。

# useradd mockbuild

# cd ~/rpmbuild/SPECS/

裡面有個nginx.spec的檔案就參照他進行編譯打包。

# rpmbuild -ba nginx.spec

<a href="http://s3.51cto.com/wyfs02/M00/25/82/wKioL1Nh4PHz0DkgAAEyfaCcd38316.jpg" target="_blank"></a>

 看又報錯了,不過沒事,把這些需要的包裝上就好。

yum install pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel gd-devel -y

安裝完成了,我們再試試。

這次就成功執行了,等編譯完成,我們cd ../PRMS/i686就可以看到,制作好的程式包了。

<a href="http://s3.51cto.com/wyfs02/M00/25/81/wKiom1Nh4xHg074IAAGFjqMtdCI876.jpg" target="_blank"></a>

# cd ../RPMS/i686/

<a href="http://s3.51cto.com/wyfs02/M00/25/82/wKioL1Nh45yw5LeVAACeb7gzGUs610.jpg" target="_blank"></a>

看到了沒,這就是我們剛剛制作好的包,直接用rpm指令安裝。

# rpm -ivh nginx-1.0.5-1.el6.i686.rpm 

<a href="http://s3.51cto.com/wyfs02/M01/25/82/wKioL1Nh5FaxsvaNAADPa0S09pA037.jpg" target="_blank"></a>

安裝成功,啟動下試試?

# /etc/init.d/nginx start

<a href="http://s3.51cto.com/wyfs02/M02/25/82/wKioL1Nh5Zbj8PcmAAIoSMWm9Cc056.jpg" target="_blank"></a>

啟動成功!!!

用本機通路下:

<a href="http://s3.51cto.com/wyfs02/M01/25/82/wKiom1Nh5gWzjC0gAAOyetCBYsE365.jpg" target="_blank"></a>

哈哈,忙活了我一上午,終于圓滿完成。  ——以上内容純筆者手打,親測實驗截圖。

有問題歡迎與我交流QQ:1183710107

本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1405277

繼續閱讀