日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系统中软件的“四”种安装原理详解:源码包安装、RPM二进制安装、YUM在线安装、脚本安装包...

發(fā)布時(shí)間:2025/3/21 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统中软件的“四”种安装原理详解:源码包安装、RPM二进制安装、YUM在线安装、脚本安装包... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Linux軟件包分類

1.1 源碼包

????優(yōu)點(diǎn):

  • 開源,如果有足夠的能力,可以修改源代碼
  • 可以自由選擇所需的功能;
  • 軟件是編譯安裝,所以更加適合自己的系統(tǒng),更加穩(wěn)定、效率更高;
  • 卸載方便;
  • ????缺點(diǎn)

  • 安裝過程步驟較多,尤其安裝較大的軟件集合時(shí)(如LAMP環(huán)境搭建),容易出現(xiàn)拼寫錯(cuò)誤;
  • 編譯過程時(shí)間較長,安裝比二進(jìn)制安裝時(shí)間長;
  • 因?yàn)槭蔷幾g安裝,安裝過程中一旦報(bào)錯(cuò)新手很難解決;
  • ??注:
    ????對(duì)于要求效率的軟件,要安裝源碼包版本,因?yàn)槭潜緳C(jī)編譯,更具有兼容性和效率,而rpm包是軟件開發(fā)者提供的大眾版本,可用于不注重效率的應(yīng)用。

    1.2 二進(jìn)制包(RPM包)

    ????優(yōu)點(diǎn):

  • 包管理系統(tǒng)簡單,只通過幾個(gè)命令就可以實(shí)現(xiàn)包的安裝、升級(jí)、查詢和卸載;
  • 安裝速度比源碼包安裝快的多;
  • ????缺點(diǎn):

  • 經(jīng)過編譯,不再可以看到源代碼;
  • 功能選擇不如源碼包靈活;
  • 依賴性;
  • 1.3 yum在線安裝

    ????可以方便的解決RPM安裝依賴文件,一條命令就可以幫用戶從網(wǎng)上(本地也可以)找到安裝包進(jìn)行安裝。

    ????注:RedHat的yum是收費(fèi)服務(wù),而CentOS的yum是免費(fèi)服務(wù)。

    1.4 腳本安裝包

    ????所謂的腳本安裝包如:lnmp/lamp LNMP一鍵安裝包,就是把復(fù)雜的軟件包安裝過程寫成了程序腳本,初學(xué)者可以執(zhí)行腳本實(shí)現(xiàn)一鍵安裝。但實(shí)際安裝的還是源碼包和二進(jìn)制包。

    ????優(yōu)點(diǎn):安裝簡單、快捷;

    ????缺點(diǎn):完全喪失了自定義性;

    總結(jié):

    ????其實(shí)Linux中軟件包只有源碼包二進(jìn)制(RPM)包兩種軟件安裝包。

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

    2.1 源碼包與RPM包區(qū)別

    安裝之前的區(qū)別: 概念上的區(qū)別
    安裝之后的區(qū)別: 安裝位置不同

    ????

    2.2 安裝位置不同帶來的影響

    2.2.1 rpm包安裝位置

    ????rpm包安裝的服務(wù)可以使用系統(tǒng)服務(wù)管理命令(service)來管理,
    ????例如:RPM包安裝的apache的啟動(dòng)方法是:

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

    ????請(qǐng)注意:rpm包安裝也是可以指定安裝位置的,service命令是redhat的專有命令,所以/etc/rc.d/init.d/XXXX start是最標(biāo)準(zhǔn)的啟動(dòng)方式。如果為rpm包指定了安裝目錄,抱歉,兩個(gè)啟動(dòng)方法都不能用了。

    2.2.2 源碼包安裝位置

    ????安裝在指定位置當(dāng)中,一般是:

    /usr/local/軟件名/

    ????源碼包安裝的服務(wù),只能用絕對(duì)路徑進(jìn)行服務(wù)的管理。

    2.2.3 總結(jié)

  • 源碼包是不能使用【service】命令來啟動(dòng)服務(wù),因?yàn)樵创a包的安裝位置由用戶指定,放在哪并不統(tǒng)一。而rpm包安裝后,通常都是放在【/etc/rc.d/init.d】目錄中的,而【service】命令執(zhí)行時(shí),會(huì)自動(dòng)搜索該目錄,所以rpm包安裝的服務(wù)可以使【service】命令。
  • 綜上所述,安裝位置不同,啟動(dòng)方法是有區(qū)別的。
  • 使用絕對(duì)路徑啟動(dòng)程序的方法是通用的,通常軟件包中會(huì)寫上啟動(dòng)程序的方法的。
  • 如果將源碼包安裝后的啟動(dòng)程序復(fù)制到【/etc/rc.d/init.d】目錄中,則也是可以使用【service】命令執(zhí)行的。
  • 源碼包一定要指定安裝目錄,不指定的話,會(huì)和rpm一樣安裝的到處都是。但是,不能用-e卸載了。一般指定目錄是/usr/local(可以看出Windows的Program Files)。同時(shí),源碼包不能用service命令啟動(dòng)的,原因在于service命令是搜索/etc/rc.d/init.d/目錄來啟動(dòng)服務(wù)的。
  • 2.3 源碼包安裝步驟(重點(diǎn)

    ????

    2.3.1 安裝準(zhǔn)備和源碼包獲取

  • 由于源碼都是c語言寫的,所以要先安裝c語言編譯器:gcc
  • 從官方網(wǎng)站下載源碼包,若是下載到了windows上面,可以使用winSCP傳到linux上
  • ????注:若已安裝了二進(jìn)制包,則源碼包也是可以繼續(xù)安裝的,因?yàn)閮烧甙惭b目錄不一樣。但是,并不建議這樣做,因?yàn)槎丝跁?huì)沖突。

    ????

    2.3.2 源碼包安裝詳細(xì)過程

    ????下面以安裝apache2為例

    2.3.2.1 確保有g(shù)cc編譯器

    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 安裝

    ????安裝時(shí)必須進(jìn)入到解壓縮后的目錄【httpd-2.2.31】中

    ????安裝步驟一、 執(zhí)行【./configure】命令,該命令用于軟件配置與檢查(基本上每個(gè)源碼包都會(huì)有該命令,即使個(gè)別的沒有該命令,也會(huì)提供相關(guān)替代命令),它有以下幾點(diǎn)功能:

    • 定義需要的功能選項(xiàng);
    • 檢測(cè)系統(tǒng)環(huán)境是否符合安裝要求;
    • 把第一項(xiàng)中定義好的功能選項(xiàng)和第二項(xiàng)中檢測(cè)系統(tǒng)環(huán)境的信息都寫入Makefile文件,用于后續(xù)的編輯。(后續(xù)的【make】和【make install】命令都會(huì)依賴該文件)

    ????執(zhí)行命令【./configure --prefix=/usr/local/apache2】,該命令用于指定安裝位置為:【/usr/local/apache2】(其中的【apache2】目錄不需要提前創(chuàng)建,【make install】命令執(zhí)行時(shí)會(huì)自動(dòng)創(chuàng)建)。命令執(zhí)行后,會(huì)在當(dāng)前目錄生成Makefile文件。

    ????檢查依賴庫:make depend

    ????安裝步驟二、 執(zhí)行【make】命令,編譯源碼(這一步通常比較耗時(shí))

    ????安裝步驟三、 執(zhí)行【make install】命令,安裝程序,此時(shí)會(huì)創(chuàng)建【/usr/local/apache2】目錄

    2.3.2.4 Tips

  • 如果命令執(zhí)行過程中發(fā)生終止,并且出現(xiàn)error、warn或no提示,則表明出錯(cuò),否則,一切正常。
  • 若執(zhí)行【./configure】或【make】命令時(shí)出現(xiàn)錯(cuò)誤,是不需要?jiǎng)h除【/usr/local/apache2】目錄的,因?yàn)槌绦蜻€沒有真正安裝。只需要執(zhí)行【make clean】命令即可,該命令用于清除緩存、臨時(shí)文件等,使安裝環(huán)境恢復(fù)到未安裝狀態(tài)。
  • 若執(zhí)行【make install】命令時(shí)報(bào)錯(cuò),則需要?jiǎng)h除【/usr/local/apache2】目錄,并且執(zhí)行【make clean】命令才行。
  • 三、RPM命令管理

    3.1 RPM包的來源

    ????所有RPM包都在系統(tǒng)光盤的Packages目錄中

    3.2 RPM包命名規(guī)則

    軟件包名-軟件版本-軟件發(fā)布的次數(shù)-適合的Linux平臺(tái)-適合的硬件平臺(tái)-包擴(kuò)展名 httpd-2.2.15-15.el6.centsos.1.i686.rpm

    ????httpd軟件包名-2.2.15軟件版本-15發(fā)布的次數(shù)-el6.centos適合的Linux平臺(tái)-i686適應(yīng)的硬件平臺(tái)-rpm包擴(kuò)展名,el6是redhat的企業(yè)版

    3.3 RPM包依賴性

    a. 樹形依賴:a->b->c 解決方法:從后往前安裝
    b. 環(huán)形依賴:a->b->c->a 解決方法:放在一條命令中安裝即可
    c. 模塊依賴:庫文件依賴,庫也叫模塊,就是linux當(dāng)中的函數(shù),它有一個(gè)典型的特征,就 是以【.so.數(shù)字】結(jié)尾,它依賴的其實(shí)是一個(gè)文件,而不是軟件包。該文件藏身在某一個(gè)軟件包當(dāng)中。我們只要將該文件所在的軟件包安裝上,該文件也就安裝了。解決方法:登錄www.rpmfind.net網(wǎng)站,輸入庫文件名稱查詢到對(duì)應(yīng)的rpm包,然后安裝即可。

    ????yum在線安裝可以方便的解決依賴文件,一條命令就可以幫用戶從網(wǎng)上(本地也可以)找到安裝包進(jìn)行安裝。

    ????注:RedHat的yum是收費(fèi)服務(wù),而CentOS的yum是免費(fèi)服務(wù)。

    3.4 RPM安裝

    ????

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

    3.5 RPM升級(jí)和卸載

    ????升級(jí)命令

    rpm -Uvh 包全名(要升級(jí)到的軟件版本),如果沒有安裝這個(gè)軟件的任何版本,這個(gè)命令可以代替rpm -ivh。

    ????卸載命令

    rpm -e 包名(比如Httpd,不需要包全名)

    ????這個(gè)命令不同于安裝和升級(jí),它可以在任何目錄運(yùn)行,原理是去/var/lib/rpm目錄中的數(shù)據(jù)庫(如__db0)中查找對(duì)應(yīng)的軟件包(已經(jīng)安裝過的rpm包都在這些數(shù)據(jù)庫中),然后卸載。
    --nodeps這個(gè)選項(xiàng)不管是在安裝和卸載的時(shí)候,最好都不要使用。

    rpm安裝包安裝的位置是由軟件包開發(fā)者決定的,安裝后的位置會(huì)非常凌亂,所以最好是使用rpm -e命令卸載。

    ????相對(duì)于二進(jìn)制安裝,源碼安裝是指定安裝目錄了,卸載的時(shí)候只需要?jiǎng)h除對(duì)應(yīng)的目錄就可以完全的卸載,不留一點(diǎn)殘余。

    3.6 RPM包查詢

    1.查詢是否安裝

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

    ????查詢所有已經(jīng)安裝的RPM包

    rpm -qa | grep httpd grep 后跟正則表達(dá)式, find 后跟通配符

    2. 查詢軟件包詳細(xì)信息

    rpm -qi 包名 rpm -qip 包全名# i ==> infomation# p ==> package : 查詢**`未安裝包`**信息

    ????有時(shí)遇到問題, 可根據(jù)未安裝包信息中所提供的網(wǎng)站進(jìn)行查詢資料

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

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

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

    ????RPM 包默認(rèn)安裝位置

    ????

    4. 查詢系統(tǒng)文件屬于哪個(gè) RPM 包

    rpm -qf 系統(tǒng)文件名 # f ==> file : 查詢系統(tǒng)文件屬于哪個(gè)軟件包

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

    5. 查詢軟件包的依賴性

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

    3.7 RPM 包校驗(yàn)

    rpm -V 已安裝的包名-V ==> (verify) : 校驗(yàn)指定RPM包中的文件

    執(zhí)行 rpm -V httpd 后, 無任何提示, 代表該文件沒有被做任何修改

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

    ????修改文件 /etc/httpd/conf/httpd.conf , 在注釋行添加任意內(nèi)容后, 再次執(zhí)行
    ????提示 : S.5....T. c /etc/httpd/conf/httpd.conf

    ????驗(yàn)證內(nèi)容中的8個(gè)信息:

    S: 文件大小是否改變 M: 文件的類型或文件的權(quán)限( rwx )是否被改變 5: 文件MD5 校驗(yàn)和是否改變( 可以看成文件內(nèi)容是否改變 ) D: 設(shè)備的主從代碼是否改變 L: 文件路徑是否改變 U: 文件的屬主( 所有者 ) 是否改變 G: 文件的屬組是否改變 T: 文件的修改時(shí)間是否改變

    ????驗(yàn)證內(nèi)容中的文件類型:

    c(config file) : 配置文件 d(documentation) : 普通文檔 g(ghost file) : "鬼"文件, 很少見, 就是該文件不應(yīng)該被這個(gè)RPM包包含 L(license file) : 授權(quán)文件 r(read me) : 描述文件 MD5校驗(yàn)

    ????作用:
    ????用來校驗(yàn)文件的完整性(文件內(nèi)容是否被改變)。

    ????例如, 在官網(wǎng)下載的游戲, 官方會(huì)給出MD5校驗(yàn)碼, 將下載的游戲通過專用的MD5校驗(yàn)工具校驗(yàn)后生成一份MD5校驗(yàn)碼, 對(duì)比兩份校驗(yàn)碼是否一致, 不一致則說明,下載的文件可能丟包, 可能文件損壞, 可能被其他人動(dòng)過手腳一直木馬等。

    四、yum在線安裝

    4.1 yum源文件

    ????yum的優(yōu)點(diǎn):
    ????將所有軟件包放到官方服務(wù)器上,當(dāng)進(jìn)行yum在線安裝時(shí),可以自動(dòng)解決依賴性問題。(rpm缺點(diǎn):安裝過程中,rpm包依賴性太強(qiáng))。

    redhat的yum在線安裝需要付費(fèi),CentOS不需要。

    ????在【/etc/yum.repos.d/】目錄中,默認(rèn)有4個(gè)yum源文件,其中【CentOS-Base.repo】是基本yum源文件,如果我們能上網(wǎng),那它是默認(rèn)生效的,而其他的都是默認(rèn)不生效的。

    4.2 yum命令

  • 查詢
    yun list --查詢所有可用軟件包列表
    yum search 關(guān)鍵字 --搜索服務(wù)器上所有和關(guān)鍵字相關(guān)的包
  • 安裝

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

  • 升級(jí)/卸載
  • ????????升級(jí):yum -y update 包名

    -update:升級(jí); -y:自動(dòng)回答yes;

    ????????卸載:yum -y remove 包名

    -remove:卸載; -y:自動(dòng)回答yes;

    !!!服務(wù)器使用最小化安裝,用什么軟件安裝什么,盡量不要卸載!!!

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

    五、腳本安裝

    5.1 腳本安裝包

    ????所謂的腳本安裝包如:lnmp/lamp LNMP一鍵安裝包,就是把復(fù)雜的軟件包安裝過程寫成了程序腳本,初學(xué)者可以執(zhí)行腳本實(shí)現(xiàn)一鍵安裝。但實(shí)際安裝的還是源碼包和二進(jìn)制包。

    ????優(yōu)點(diǎn):加單,快速,方便
    ????缺點(diǎn):

    1.不能定義安裝軟件的版本; 2.不能定義所需要的軟件功能; 3.源碼包的優(yōu)勢(shì)幾乎完全喪失;

    5.2 腳本安裝包:準(zhǔn)備工作

    ????1、本節(jié)以安裝LNMP1.0為例,所以需要先停止之前安裝的apache和mysql服務(wù)(最好也將源碼包安裝的apache【/usr/local/apache2】刪除)

    nignx非常優(yōu)秀,可以支持更大的并發(fā)量。apache的默認(rèn)并發(fā)量是400,如果給它改大,比如到> 2000,就要測(cè)一測(cè)了,如果穩(wěn)定才能再繼續(xù)增加。nginx不用測(cè)試就可以設(shè)置到50000(用戶同一時(shí)刻刷新網(wǎng)頁)。可以說一臺(tái)nignx服務(wù)器頂3臺(tái)apache。

    ????2、保證yum源正常:可以使用【yum list】命令測(cè)試。(若是光盤yum源,記得掛載光盤)
    ????3、關(guān)閉SELinux和防火墻:

    a、永久關(guān)閉SELinux的方法:編輯文件【/etc/selinux/config】,將【SELINUX=enforcing】改為【SELINUX=disabled】,然后重啟系統(tǒng)即可。 b、永久關(guān)閉防火墻的方法:【chkconfig iptables off】,開啟為:【chkconfig iptables on】;臨時(shí)關(guān)閉防火墻的方法:【service iptables stop】,開啟為:【service iptables start】。

    ????4、腳本安裝過程中,會(huì)將系統(tǒng)中已有的apache、mysql、php等卸載掉。下面是安裝腳本【centOS.sh】的部分內(nèi)容:
    ......部分內(nèi)容省略......

    yum install -y ntp ntpdate -u pool.ntp.org daterpm -qa|grep httpd rpm -e httpd rpm -qa|grep mysql rpm -e mysql rpm -qa|grep php rpm -e phpyum -y remove httpd* yum -y remove php* yum -y remove mysql-server mysql yum -y remove php-mysql

    ????......部分內(nèi)容省略......
    ????注:安裝后,如果安裝卡在了【php-fpm】那里,通常表示已安裝成功,只是【php-fpm】那里卡住了(物理機(jī)少見,但虛擬機(jī)比較常見),解決的方法就是:使用命令【pkill -9 php-fpm】殺掉【php-fpm】進(jìn)程,然后重新啟動(dòng)該進(jìn)程【/etc/rc.d/init.d/php-fpm start】即可。

    LNMP一鍵安裝包安裝地址

    完!

    總結(jié)

    以上是生活随笔為你收集整理的Linux系统中软件的“四”种安装原理详解:源码包安装、RPM二进制安装、YUM在线安装、脚本安装包...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。