1、 前言
在進行安裝軟體的時候,一般是使用yum進行安裝,但是在使用yum進行安裝的時候,可能會造成軟體的版本低,進而需要手動進行編譯安裝軟體;還有一種情況就是需要指定額外的參數進行編譯安裝,來開啟軟體的不同功能,如果是使用二進制進行安裝,那麼有些功能無法使用,進而在這介紹使用軟體安裝的三步驟。
在進行了重新安裝了一些依賴包的時候,軟體需要重新進行編譯安裝。(依賴關系的存在)
2、 編譯安裝基本步驟
基本步驟如下所示:
[root@rsyncserverinstall]# cd httpd-2.2.31
[[email protected]]# ./configure --help(選項--help檢視可以使用的參數,進而標明功能參數進行編譯)
[[email protected]]# ./configure --prefix=/usr/local/apache/(進行編譯,使用--prefix指定安裝的路徑)
[[email protected]]# make && make install(安裝)
[[email protected]]# echo $?(可以用來檢查執行結果,0表示正常,1-255表示安裝錯誤)
在進行編譯安裝的時候,最常出現的問題就是在進行configure的時候出現錯誤,主要是依賴關系的問題,這個時候就需要安裝其他的一些包進行支援,在檢視依賴包的時候,可以檢視源檔案的目錄中如下檔案:
[[email protected]]# ls -l README INSTALL(幫助檔案,主要用來檢視依賴關系)
-rw-r--r-- 11000 1000 4372 Jan 18 2012 INSTALL
-rw-r--r-- 11000 1000 5954 Jan 10 2007 README
在一般的軟體下載下傳之後,均有此兩檔案。
3、 安裝結束後的步驟
安裝後,軟體一般會存在如下的目錄:
[root@rsyncserverapache]# ls -dl {bin,lib,include,man}
drwxr-xr-x 2root root 4096 Oct 13 00:44 bin
drwxr-xr-x 2root root 4096 Oct 13 00:44 include
drwxr-xr-x 3root root 4096 Oct 13 00:44 lib
drwxr-xr-x 4root root 4096 Oct 13 00:44 man
在其中,bin表示可執行二進制檔案,需要将路徑加入的環境變量中,man主要是man手冊的檢視,include表示在進行二次開發的時候,用到的函數與方法,lib表示程式在運作的時候,需要加載的類庫檔案。
3.1 修改環境變量
在安裝結束後,在使用剛安裝的軟體的時候,指令無法找到,進而需要修改環境變量,如下:
[root@rsyncserver~]# httpd(環境變量沒有設定搜尋路徑,進而指令無法找到)
-bash: httpd:command not found
[root@rsyncserver~]# echo "export PATH=$PATH:/usr/local/apache/bin" >>/etc/profile(環境變量中添加剛安裝的apache的bin檔案搜尋路徑)
[root@rsyncserver~]# tail -1 /etc/profile(檢視添加的内容)
exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin
[root@rsyncserver~]# . /etc/profile(讓剛加入的環境變量生效)
[root@rsyncserver~]# httpd (檢查指令,指令可以使用)
httpd: Could notreliably determine the server's fully qualified domain name, using 127.0.0.1for ServerName
3.2 運作時加載類庫
在程式運作的時候,需要加載相關的庫檔案,也就是在安裝目錄下的lib目錄中的檔案,有的時候,如果缺少了搜尋路徑,那麼會出現錯誤,shared object “XX.so”not found,也就是在運作時缺少類庫檔案。
在主要的類庫搜尋路徑中,使用的指令為ldconfig,如下:
/sbin/ldconfig - configure dynamic linker run-timebindings(運作時的動态綁定)
檢視類庫的搜尋路徑如下:
[root@rsyncserverapache]# ldconfig -v|grep -v "^[[:space:]]"
/usr/lib64/atlas:
/usr/lib64/mysql:
/lib:
/lib64:
/usr/lib:
/usr/lib64:
/lib64/tls:(hwcap: 0x8000000000000000)
/usr/lib64/sse2:(hwcap: 0x0000000004000000)
/usr/lib64/tls:(hwcap: 0x8000000000000000)
[[email protected]]# pwd(搜尋類庫的主要配置目錄)
/etc/ld.so.conf.d
[[email protected]]# ls -l apache.conf (建立apache的類庫搜尋配置檔案,配置檔案必須用conf結尾,否則不生效)
-rw-r--r-- 1root root 22 Oct 13 01:35 apache.conf
[[email protected]]# cat apache.conf (直接加入apache的類庫路徑即可,在路徑中,必須是so檔案的父目錄)
/usr/local/apache/lib
[[email protected]]# ldconfig -v |grep -v "^[[:space:]]"(檢查類庫搜尋路徑)
/usr/local/apache/lib:
[[email protected]]# ldconfig -v(檢視搜尋詳細路徑)
libexpat.so.0 -> libexpat.so.0.5.0
libapr-1.so.0 -> libapr-1.so.0.5.2
libaprutil-1.so.0 ->libaprutil-1.so.0.5.
3.3 二次開發支援
在程式安裝完成之後,會有一個include目錄,主要是用來做二次開發的一些方法和函數。
在寫程式的時候,預設的搜尋路徑為/usr/include目錄下,如下:
[root@rsyncserver~]# ls -l /usr/include/()
total 1536
-rw-r--r--. 1 root root 7502 Nov 3 2011 aio.h
-rw-r--r--. 1 root root 2115 Nov 3 2011 aliases.h
-rw-r--r--. 1 root root 1289 Nov 3 2011 alloca.h
-rw-r--r--. 1 root root 4351 Nov 3 2011 a.out.h
-rw-r--r--. 1 root root 26521 Nov 3 2011 argp.h
-rw-r--r--. 1 root root 7308 Nov 3 2011 argz.h
[root@rsyncserverinclude]# ls -l /usr/local/apache/include/ |wc -l(會自動将檔案進行拷貝到程式庫中)
119
[root@rsyncserverinclude]# ls -l /usr/include/apache/|wc -l(會自動将檔案進行拷貝到程式庫中)
[root@rsyncserver~]# ln -s /usr/local/apache/include/ /usr/include/apache/ (在沒有的時候才能建立,否則會造成死循環)
[root@rsyncserver apache]# ls -l(死循環指向)
total 0
lrwxrwxrwx 1 root root 26 Oct 13 03:12 include ->/usr/local/apache/include/
[root@rsyncserver apache]# cd include/
[root@rsyncserver include]# ls
include
[root@rsyncserver include]# cd include/
[root@rsyncserver include]# ls -l
[root@rsyncserver~]# ls -l /usr/include/apache (必須連結失效才能删除連結檔案)
lrwxrwxrwx 1root root 26 Oct 13 02:56 /usr/include/apache -> /usr/local/apache/include/
[root@rsyncserver~]# rm -rf /usr/include/apache
[root@rsyncserver~]# ls -l /usr/include/apache
ls: cannotaccess /usr/include/apache: No such file or directory
删除連結目錄的時候,不是删除目錄,而是删除目錄下的所有檔案,連結依舊存在不會被删除,連結依然有效。
[root@rsyncserver~]# ln -s /usr/local/apache/include/ /usr/include/apache(建立目錄連結無需添加最後的/,否則會造成死循環,如果連結存在,會報錯)
ln: creatingsymbolic link `/usr/include/apache/include':File exists
3.4 man手冊
在使用剛安裝的軟體的時候,如果具有幫助手冊,那麼可能會找不到,進而需要添加man手冊資訊,如下所示:
[root@rsyncserverman1]# man dbmmanage(不能找到man手冊)
No manual entryfor dbmmanage
[root@rsyncserverman1]# vim /etc/man.config (修改man配置檔案)
[root@rsyncserverman1]# man dbmmanage