Linux系統中軟件的「四」種安裝原理詳解:源碼包安裝、RPM二進制安裝、YUM在線安裝、腳本安裝包

1、Linux軟件包分類

1.1 源碼包

    優勢:php

  1. 開源,若是有足夠的能力,能夠修改源代碼
  2. 能夠自由選擇所需的功能;
  3. 軟件是編譯安裝,因此更加適合本身的系統,更加穩定、效率更高;
  4. 卸載方便;

    缺點html

  1. 安裝過程步驟較多,尤爲安裝較大的軟件集合時(如LAMP環境搭建),容易出現拼寫錯誤;
  2. 編譯過程時間較長,安裝比二進制安裝時間長;
  3. 由於是編譯安裝,安裝過程當中一旦報錯新手很難解決;

  注:
    對於要求效率的軟件,要安裝源碼包版本,由於是本機編譯,更具備兼容性和效率,rpm包是軟件開發者提供的大衆版本,可用於不注重效率的應用。node

1.2 二進制包(RPM包)

    優勢:mysql

  1. 包管理系統簡單,只經過幾個命令就能夠實現包的安裝、升級、查詢和卸載;
  2. 安裝速度比源碼包安裝快的多;

    缺點:linux

  1. 通過編譯,再也不能夠看到源代碼;
  2. 功能選擇不如源碼包靈活;
  3. 依賴性;

1.3 yum在線安裝

    能夠方便的解決RPM安裝依賴文件,一條命令就能夠幫用戶從網上(本地也能夠)找到安裝包進行安裝。nginx

    注:RedHatyum是收費服務,而CentOSyum是免費服務。正則表達式

1.4 腳本安裝包

    所謂的腳本安裝包如:lnmp/lamp LNMP一鍵安裝包,就是把複雜的軟件包安裝過程寫成了程序腳本,初學者能夠執行腳本實現一鍵安裝。但實際安裝的仍是源碼包和二進制包sql

    優勢:安裝簡單、快捷;數據庫

    缺點:徹底喪失了自定義性;apache

總結:

    其實Linux中軟件包只有源碼包二進制(RPM)包兩種軟件安裝包。

2、源碼包安裝(推薦方式

2.1 源碼包與RPM包區別

安裝以前的區別: 概念上的區別
安裝以後的區別: 安裝位置不一樣

    clipboard.png

2.2 安裝位置不一樣帶來的影響

2.2.1 rpm包安裝位置

    rpm包安裝的服務可使用系統服務管理命令(service)來管理,
    例如:RPM包安裝的apache的啓動方法是:

/etc/rc.d/init.d/httpd start
service httpd start

    請注意:rpm包安裝也是能夠指定安裝位置的,service命令是redhat的專有命令,因此/etc/rc.d/init.d/XXXX start是最標準的啓動方式。若是爲rpm包指定了安裝目錄,抱歉,兩個啓動方法都不能用了。

2.2.2 源碼包安裝位置

    安裝在指定位置當中,通常是:

/usr/local/軟件名/

    源碼包安裝的服務,只能用絕對路徑進行服務的管理。

2.2.3 總結

  1. 源碼包是不能使用【service】命令來啓動服務,由於源碼包的安裝位置由用戶指定,放在哪並不統一。而rpm包安裝後,一般都是放在【/etc/rc.d/init.d】目錄中的,而【service】命令執行時,會自動搜索該目錄,因此rpm包安裝的服務可使【service】命令。
  2. 綜上所述,安裝位置不一樣,啓動方法是有區別的。
  3. 使用絕對路徑啓動程序的方法是通用的,一般軟件包中會寫上啓動程序的方法的。
  4. 若是將源碼包安裝後的啓動程序複製到【/etc/rc.d/init.d】目錄中,則也是可使用【service】命令執行的。
  5. 源碼包必定要指定安裝目錄,不指定的話,會和rpm同樣安裝的處處都是。可是,不能用-e卸載了。通常指定目錄是/usr/local(能夠看出WindowsProgram Files)。同時,源碼包不能用service命令啓動的,緣由在於service命令是搜索/etc/rc.d/init.d/目錄來啓動服務的。

2.3 源碼包安裝步驟(重點

    clipboard.png

2.3.1 安裝準備和源碼包獲取

  1. 因爲源碼都是c語言寫的,因此要先安裝c語言編譯器:gcc
  2. 從官方網站下載源碼包,如果下載到了windows上面,可使用winSCP傳到linux

    注:若已安裝了二進制包,則源碼包也是能夠繼續安裝的,由於二者安裝目錄不同。可是,並不建議這樣作,由於端口會衝突。

    clipboard.png

2.3.2 源碼包安裝詳細過程

    下面以安裝apache2爲例

2.3.2.1 確保有gcc編譯器

gcc -v # 是否能打印你使用gcc版本信息

2.3.2.2 下載源碼包,解壓

http://mirror.bit.edu.cn/apache/httpd/

    用winSCP拖到/local/usr/src目錄下保存

    解壓:tar -zvxf httpd-2.2.31.tar.gz解壓縮後的目錄爲【httpd-2.2.31

2.3.2.3 安裝

    安裝時必須進入到解壓縮後的目錄【httpd-2.2.31】中

    安裝步驟 執行【./configure】命令,該命令用於軟件配置與檢查(基本上每一個源碼包都會有該命令,即便個別的沒有該命令,也會提供相關替代命令),它有如下幾點功能:

  • 定義須要的功能選項;
  • 檢測系統環境是否符合安裝要求;
  • 把第一項中定義好的功能選項和第二項中檢測系統環境的信息都寫入Makefile文件,用於後續的編輯。(後續的【make】和【make install】命令都會依賴該文件)

    執行命令【./configure --prefix=/usr/local/apache2】,該命令用於指定安裝位置爲:【/usr/local/apache2】(其中的【apache2】目錄不須要提早建立,【make install】命令執行時會自動建立)。命令執行後,會在當前目錄生成Makefile文件。

    檢查依賴庫:make depend

    安裝步驟 執行【make】命令,編譯源碼(這一步一般比較耗時)

    安裝步驟 執行【make install】命令,安裝程序,此時會建立【/usr/local/apache2】目錄

2.3.2.4 Tips

  1. 若是命令執行過程當中發生終止,而且出現error、warnno提示,則代表出錯,不然,一切正常。
  2. 若執行【./configure】或【make】命令時出現錯誤,是不須要刪除【/usr/local/apache2】目錄的,由於程序尚未真正安裝。只須要執行【make clean】命令便可,該命令用於清除緩存、臨時文件等,使安裝環境恢復到未安裝狀態。
  3. 若執行【make install】命令時報錯,則須要刪除【/usr/local/apache2】目錄,而且執行【make clean】命令才行。

3、RPM命令管理

3.1 RPM包的來源

    全部RPM包都在系統光盤Packages目錄中

3.2 RPM包命名規則

軟件包名-軟件版本-軟件發佈的次數-適合的 Linux平臺-適合的硬件平臺-包擴展名
httpd-2.2.15-15.el6.centsos.1.i686.rpm

    httpd軟件包名-2.2.15軟件版本-15發佈的次數-el6.centos適合的Linux平臺-i686適應的硬件平臺-rpm包擴展名,el6redhat的企業版

3.3 RPM包依賴性

a. 樹形依賴:a->b->c 解決方法:從後往前安裝
b. 環形依賴:a->b->c->a 解決方法:放在一條命令中安裝便可
c. 模塊依賴:庫文件依賴,庫也叫模塊,就是linux當中的函數,它有一個典型的特徵,就 是以【.so.數字】結尾,它依賴的實際上是一個文件,而不是軟件包。該文件藏身在某一個軟件包當中。咱們只要將該文件所在的軟件包安裝上,該文件也就安裝了。解決方法:登陸www.rpmfind.net網站,輸入庫文件名稱查詢到對應的rpm包,而後安裝便可。

    yum在線安裝能夠方便的解決依賴文件,一條命令就能夠幫用戶從網上(本地也能夠)找到安裝包進行安裝。

    注:RedHatyum是收費服務,而CentOSyum是免費服務。

3.4 RPM安裝

    clipboard.png

rpm -ivh 包全名
-i(install) 安裝; -v(verbose) 詳細信息; -h(hash) 進度;

3.5 RPM升級和卸載

    升級命令

rpm -Uvh 包全名(要升級到的軟件版本),若是沒有安裝這個軟件的任何版本,這個命令能夠代替 rpm -ivh

    卸載命令

rpm -e 包名(好比Httpd,不須要包全名)

    這個命令不一樣於安裝和升級,它能夠在任何目錄運行,原理是去/var/lib/rpm目錄中的數據庫(如__db0)中查找對應的軟件包(已經安裝過的rpm包都在這些數據庫中),而後卸載。
--nodeps這個選項無論是在安裝和卸載的時候,最好都不要使用。

rpm安裝包安裝的位置是由軟件包開發者決定的,安裝後的位置會很是凌亂,因此最好是使用 rpm -e命令卸載。

    相對於二進制安裝,源碼安裝是指定安裝目錄了,卸載的時候只須要刪除對應的目錄就能夠徹底的卸載,不留一點殘餘。

3.6 RPM包查詢

1.查詢是否安裝

rpm -q  包名

rpm -qa 
# q ==> query  a ==> all

    查詢全部已經安裝的RPM包

rpm -qa | grep httpd
grep 後跟正則表達式, find 後跟通配符

2. 查詢軟件包詳細信息

rpm -qi 包名
rpm -qip 包全名

# i ==> infomation

# p ==> package : 查詢**`未安裝包`**信息

    有時遇到問題, 可根據未安裝包信息中所提供的網站進行查詢資料

3. 查詢包中文件安裝位置

rpm -ql 包名

# l ==> list
# -p ==> package : 查詢未安裝包信息

    可查看包做者欲將包安裝的位置

    RPM 包默認安裝位置

    clipboard.png

4. 查詢系統文件屬於哪一個 RPM 包

rpm -qf 系統文件名
# f ==> file : 查詢系統文件屬於哪一個軟件包

    該文件必須是經過 RPM 包安裝的

5. 查詢軟件包的依賴性

rpm -qR 包名

R ==> requires : 查詢軟件包的依賴性 
p ==> package : 查詢未安裝包的信息

3.7 RPM 包校驗

rpm -V 已安裝的包名

-V ==> (verify) : 校驗指定RPM包中的文件

執行 rpm -V httpd 後, 無任何提示, 表明該文件沒有被作任何修改

    判斷本地的apache 與官方給出的是否一致, 從而判斷是否被人修改。

    修改文件 /etc/httpd/conf/httpd.conf , 在註釋行添加任意內容後, 再次執行
    提示 : S.5....T. c /etc/httpd/conf/httpd.conf

    驗證內容中的8個信息:

S: 文件大小是否改變
M: 文件的類型或文件的權限( rwx )是否被改變
5: 文件MD5 校驗和是否改變( 能夠當作文件內容是否改變 )
D: 設備的主從代碼是否改變
L: 文件路徑是否改變
U: 文件的屬主( 全部者 ) 是否改變
G: 文件的屬組是否改變
T: 文件的修改時間是否改變

    驗證內容中的文件類型:

c(config file) : 配置文件
d(documentation) : 普通文檔
g(ghost file) : "鬼"文件, 不多見, 就是該文件不該該被這個RPM包包含
L(license file) : 受權文件
r(read me) : 描述文件
MD5校驗

    做用:
    用來校驗文件的完整性(文件內容是否被改變)。

    例如, 在官網下載的遊戲, 官方會給出MD5校驗碼, 將下載的遊戲經過專用的MD5校驗工具校驗後生成一份MD5校驗碼, 對比兩份校驗碼是否一致, 不一致則說明,下載的文件可能丟包, 可能文件損壞, 可能被其餘人動過手腳一直木馬等。

4、yum在線安裝

4.1 yum源文件

    yum的優勢:
    將全部軟件包放到官方服務器上,當進行yum在線安裝時,能夠自動解決依賴性問題。(rpm缺點:安裝過程當中,rpm包依賴性太強)。

redhatyum在線安裝須要付費, CentOS不須要。

    在【/etc/yum.repos.d/】目錄中,默認有4yum源文件,其中【CentOS-Base.repo】是基本yum源文件,若是咱們能上網,那它是默認生效的,而其餘的都是默認不生效的。

clipboard.png

4.2 yum命令

  1. 查詢
    yun list --查詢全部可用軟件包列表
    yum search 關鍵字 --搜索服務器上全部和關鍵字相關的包
  2. 安裝

    yum -y install 包名 (-y 自動回答yes)
    yum安裝只寫包名便可! eg:yum -y install gcc --c語言編譯器

  3. 升級/卸載

        升級:yum -y update 包名

-update:升級;
-y:自動回答yes;

        卸載:yum -y remove 包名

-remove:卸載;
-y:自動回答yes;

!!!服務器使用最小化安裝,用什麼軟件安裝什麼,儘可能不要卸載!!!

    ①LANG=en_US:切換至英文;(臨時生效)
    ②LANG=zh_CN.utf8:切換至中文;(臨時生效)

5、腳本安裝

5.1 腳本安裝包

    所謂的腳本安裝包如:lnmp/lamp LNMP一鍵安裝包,就是把複雜的軟件包安裝過程寫成了程序腳本,初學者能夠執行腳本實現一鍵安裝。但實際安裝的仍是源碼包和二進制包

    優勢:加單,快速,方便
    缺點:

1.不能定義安裝軟件的版本;
2.不能定義所須要的軟件功能;
3.源碼包的優點幾乎徹底喪失;

5.2 腳本安裝包:準備工做

    一、本節以安裝LNMP1.0爲例,因此須要先中止以前安裝的apachemysql服務(最好也將源碼包安裝的apache/usr/local/apache2】刪除)

nignx很是優秀,能夠支持更大的併發量。 apache的默認併發量是 400,若是給它改大,好比到> 2000,就要測一測了,若是穩定才能再繼續增長。nginx不用測試就能夠設置到 50000(用戶同一時刻刷新網頁)。能夠說一臺 nignx服務器頂 3apache

    二、保證yum源正常:可使用【yum list】命令測試。(如果光盤yum源,記得掛載光盤)
    三、關閉SELinux和防火牆:

a、永久關閉SELinux的方法:編輯文件【/etc/selinux/config】,將【SELINUX=enforcing】改成【SELINUX=disabled】,而後重啓系統便可。
b、永久關閉防火牆的方法:【chkconfig iptables off】,開啓爲:【chkconfig iptables on】;臨時關閉防火牆的方法:【service iptables stop】,開啓爲:【service iptables start】。

    四、腳本安裝過程當中,會將系統中已有的apache、mysql、php等卸載掉。下面是安裝腳本【centOS.sh】的部份內容:
......部份內容省略......

yum install -y ntp
ntpdate -u pool.ntp.org
date

rpm -qa|grep httpd
rpm -e httpd
rpm -qa|grep mysql
rpm -e mysql
rpm -qa|grep php
rpm -e php

yum -y remove httpd*
yum -y remove php*
yum -y remove mysql-server mysql
yum -y remove php-mysql

    ......部份內容省略......
    注:安裝後,若是安裝卡在了【php-fpm】那裏,一般表示已安裝成功,只是【php-fpm】那裏卡住了(物理機少見,但虛擬機比較常見),解決的方法就是:使用命令【pkill -9 php-fpm】殺掉【php-fpm】進程,而後從新啓動該進程【/etc/rc.d/init.d/php-fpm start】便可。

LNMP一鍵安裝包安裝地址

完!

相關文章
相關標籤/搜索