Linux應用程序的組成
1.普通的可執行程序文件,一般保存在/usr/bin目錄中,普通用戶即可執行。
2.服務器程序、管理程序文件,一般保存在/usr/sbin目錄中,需要管理員才能執行。
3.配置文件,一般保存在/etc目錄中,配置文件較多時會建立相應的子目錄。
4.日志文件,一般保存在/var/log目錄中。
5.關於應用程序的參考文檔等數據,一般保存在/usr/share/doc/目錄中。
6.執行文件及配置文件的man手冊頁,一般保存在/usr/share/man目錄中。
軟件包的封裝類型
1.RPM軟件包:這種軟件包文件的擴展名為".rpm",只能在使用RPM機制的Linux操作系統中安裝。RPM軟件包一般針對特定版本的系統定制,因此依賴性較強。安裝RPM包需要使用rpm命令。
2.DEB軟件包:這種軟件包文件的擴展名為".deb",只能在使用DPKG機制的Linux操作系統中安裝。安裝DEB軟件包需要使用Linux系統中的dkpg命令。
3.源代碼包:這種軟件包是程序員開發完成的原始代碼,一般被制作成".tar.gz"、".tar.bz2"等格式的壓縮包文件,因多數使用tar命令打包而成,所以經常被稱為"TarBall"。安裝源代碼軟件包需要使用相應的編譯工具,由於大部分Linux系統中都安裝有基本的編譯環境,因此使用源碼軟件包要更加靈活。
4.提供安裝程序的軟件包:這種軟件包的擴展名不一,但仍以TarBall格式的居多。軟件包中會提供用於安裝的可執行程序或腳本文件,如install.sh、setup等,只需運行安裝文件就可以根據向導完成安裝。
5.綠色免安裝的軟件包:這種軟件包直接包含有編譯好的執行程序文件,因此不需要特別安裝。
RHEL6系統的光盤中攜帶大部分軟件包都組織在Server目錄中,通過該目錄中的文件可以熟悉RPM軟件包的一般命名格式。掛載光盤的命令如下(假設sss.rpm為應用軟件包):
#mount /dev/cdrom /media/
#ls -ls /media/Server/sss.rpm
使用RPM包管理工具及命令
RPM軟件包管理機制最早由Red Hat公司提出,後來隨著版本的升級逐漸融入了更多的優秀特性,成為眾多Linux發行版中工人的軟件包管理標准。
使用RPM機制封裝的軟件包文件擁有約定俗成的命名格式,一般使用“軟件名-軟件版本-發布次數.硬件平台類型.rpm”的文件名形式。
使用rpm命令能夠實現幾乎所有對RPM軟件包的管理功能,執行"man rpm"命令可以查看關於rpm命令的幫助信息。
1.查詢RPM軟件包信息
rpm -qa
rpm -qa |grep httpd
rpm -qa |grep gcc
常用參數說明
-qa:顯示當前系統中以RPM方式安裝的所有軟件列表
-qf:查看指定文件或目錄是由哪個軟件包所安裝的。
-qd:顯示指定軟件包在當前系統中安裝的文檔文件(--docfiles)列表。
2.安裝、升級、卸載RPM軟件包
-i:在當前系統中安裝(Install)一個新的RPM軟件包。
-e:卸載指定名稱的軟件包。
-U:檢查並升級系統中某個軟件包,若該軟件包並未安裝,則等同於"-i"選項。
-F:檢查並更新系統中某個軟件包,若該軟件包並未安裝,則放棄安裝。
-h:在安裝或升級軟件包過程中以"#"號顯示安裝過程。
-v:顯示軟件安裝過程中的詳細信息。
更多選項參考man信息。
在安裝包時,千萬要注意U選項,這會升級Linux內核,有可能致linux啟動不起來。
安裝rpm命令:
rpm -ivh sss.rpm
rpm -ivh --force sss.rpm --強制安裝軟件包,但是70%的可能是裝好後不好使用;
rpm -ivh --nodeps sss.rpm 安裝時忽略軟件依賴性;
刪除RPM軟件包:
rpm -e sss ---刪除時不要帶擴展名
rpm -ivh sss.rpm
rpm -ivh --force sss.rpm 強制安裝軟件包,但是70%的可能是裝好後不好使用;
怎麼解決軟件包安裝循環依賴?
將所有的軟件包放到一個目錄下後,進入目錄後執行如下:
rpm -ivh *.rpm
rpm -ivh sss.rpm
rpm -ivh --force sss.rpm 強制安裝軟件包,但是70%的可能是裝好後不好使用;
rpm -ivh --nodeps sss.rpm 安裝時忽略軟件依賴性;
3.維護RPM數據庫
當RPM數據庫損壞時,使用rpm命令的"--rebuilddb"或"--initdb"功能進行重建。
從源代碼編譯安裝程序
現代的Linux發行版本通常使用包管理機制對軟件進行打包安裝,這樣就省去了軟件的編譯安裝過程,大大簡化了Linux系統的安裝和使用難度。但是在有些情況下,仍然需要使用源代碼編譯的方式為系統安裝新的應用程序,例如:
1.安裝較新版本的應用程序時
2.當前安裝的程序無法滿足應用需求:對於RPM格式封裝的應用程序,一般只包含了該軟件所能實現的一小部分功能,而難以由用戶自行修改、定制。通過對程序的源碼進行重新配置並編譯安裝後,可以定制更靈活、更豐富的功能。
3.為應用程序添加新功能時:當需要利用現有的應用程序源代碼進行適當的修改,以便增強新的功能時,也必須釋放出該軟件的源代碼,進行適當修改後重新編譯安裝。
編譯源代碼需要相應的開發環境,對於自由軟件來說,gcc編譯器是最佳選擇。確認系統中編譯環境:
源碼編譯安裝的基本過程
1.解包:源代碼吧一般為TallBall形式,使用tar命令進行解壓釋放。在Linux系統中,可以將各種軟件的源代碼文件保存到/usr/src/目錄中,便於集中管理,如:
#tar xzf sss.tar.gz -C /usr/src
2、預編譯,makefile
配置工作通常由源代碼目錄中的"configure"腳本文件來完成,具體參數可以在源碼目錄中執行"./configure --help"進行查看。不同的程序其配置參數會存在區別,但是"--prefix"形式的參數卻是大多數開源軟件通用的,該配置參數用於指定軟件包安裝的目標文件夾,未指定參數時,"configure"配置腳本將采用默認值。若將應用程序的相關文件安裝到同一個目錄中,需要卸載時就非常方便,一般只要將程序文件夾刪除即可
以MySql為例, tar.gz/gz tar.bz2
./configure --help
--prefix=/usr/local/soft
這步驟可能出現一些出現一些缺少庫文件。當出現錯誤時,一定要把預編譯失敗生成的makefile刪除掉。
怎麼刪除,就用rm命令刪除
3.Make編譯
編譯:編譯的過程主要是根據Makefile文件中的配置信息,將源代碼文件編譯、連接成二進制的模塊文件、執行程序等。第二步的配置完成後執行"make"命令可以完成編譯工作,一般比需配置步驟更長的時間, make 10 並行編譯,加開編譯速度,在這一步出現錯誤,要進行make clean ,將中間狀態的二進制文件都要刪除掉。
4.安裝:編譯完成後,就可以執行"make install"命令將軟件的執行程序、配置文件、幫助文檔等相關文件復制到Linux系統中了,即應用程序的最後安裝過程。
上述過程中,有時候為了簡單起見,也可以將編譯、安裝的步驟寫成一行命令執行,中間使用"&&"符合分隔即可(make && make install)
.make install
第三部很少有問題
如果源碼安裝調試的合理,性能將會提升10倍甚至幾十倍的提升。尤其是數據庫和apache類此的服務軟件。