Linux centOS軟體安裝的三種方式

Genluo發表於2018-08-06

此處輸入圖片的描述

安裝過程

window軟體安裝過程

  • 在使用者指定的安裝目錄下建立安裝程式目錄
  • 拷貝相關dll動態庫到安裝目錄
  • 拷貝exe可執行檔案到安裝目錄
  • 拷貝配置檔案到安裝目錄,比如window下的ini配置檔案
  • 把啟動配置或者程式依賴的配置放入登錄檔中
  • 如果是服務程式,註冊並啟動該服務

Linux安裝軟體大概的過程

  • 建立安裝目錄
  • 拷貝類庫
  • 拷貝可執行檔案
  • 根據需要選擇性配置和啟動服務

注意

  • linux上/usr目錄相當與window上ProgramFile目錄
  • Linux上動態庫字尾是.so,window上面的是.dll

編譯安裝

什麼是編譯

高階語言編寫的程式通過編譯器轉化為機器語言,有些編譯器直接將高階語言程式轉化為組合語言,然後使用一個彙編程式(assembler)將其轉化為機器語言。 經常與編譯一起使用的步驟就是連結,連結的好處就是多個程式共享這個。提供這種通用任務支援的功能便是庫,庫中包含多個例程,每一個實現都是許多程式能夠共享的的通用任務,一般下/lib和/usr/lib目錄中,連結器(linker)程式可以實現編譯器的輸出與編譯程式所需要庫之間的連結。該操作的最後結果就是生成一個可供使用的可執行檔案。

  • 發行版本自行安裝的原始碼一般安裝與/usr/src目錄下
  • 面向多使用者使用的原始碼一般安裝在/usr/local/src目錄中
  • 預設編譯器,gcc編譯的四個階段(預處理-編譯-彙編-連結)

下載解壓原始碼

  • 軟體一般使用c或者c++編寫,一般都可以在軟體官網上找的,使用wget進行下載
  • 下載之後一般格式為.tar.gz、.tar.baz2
  • 一般解壓之後,檔案中都會有README檔案,這個檔案軟體說明所能完成的功能、授權許可、安裝需求、安裝注意事項、安裝方式等等

分析安裝環境

軟體解壓之後,進入解壓之後目錄,一般都會存在configure這個檔案,這個檔案是一個shell指令碼,他的任務就是分析生成環境,linux下軟體的安裝受到作業系統安裝環境的影響,比如某些軟體在安裝或者執行過程中需要呼叫作業系統本身的庫檔案,或者需要執行系統的某個工具等等,但是系統中不存在這個庫檔案或者這個工具沒有安裝,那麼安裝或者執行軟體就會失敗。 為了避免這個問題的出現,在安裝軟體的時候就需要分析作業系統環境,檢測當前系統是否擁有安裝軟體所需的所有檔案和工具,如果系統缺少某個檔案,就給出提示,直到滿足軟體的所有需求為止。這個就是configure檔案的功能,configure檔案一般是個可執行檔案,可以在當前目錄下直接輸入“./configure”進行軟體安裝的環境測試,如果提示缺少某些安裝包,就需要進行安裝,直到測試通過。通常的,原始碼安裝都需要GCC或者CC編譯器,這些編譯器一般在安裝系統時定製安裝包中的開發工具選項下,其實這也是我們在第二章安裝linux系統中要求選擇開發工具包的原因所在。 一般當configure執行結束,會在源目錄建立幾個新的檔案,其中最重要的就是Makefile。Makefile是指導make命令如何生成可執行程式的配置檔案,如果沒有這個命令,下一步的make命令邊無法執行。 此外,在執行configure分析軟體需求時,還可以在“./configure”後面加上軟體的安裝路徑以及安裝所需的模組等等一些選項,來定製使用者需要的軟體功能。例如安裝nginx時的選項:

  • --prefix=PATH : 指定nginx的安裝目錄。預設 /usr/local/nginx
  • --conf-path=PATH : 設定nginx.conf配置檔案的路徑。nginx允許使用不同的配置檔案啟動,通過命令列中的-c選項。預設為prefix/conf/nginx.conf
  • --user=name: 設定nginx工作程式的使用者。安裝完成後,可以隨時在nginx.conf配置檔案更改user指令。預設的使用者名稱是nobody。--group=name類似
  • --with-pcre : 設定PCRE庫的原始碼路徑,如果已通過yum方式安裝,使用--with-pcre自動找到庫檔案。使用-* -with-pcre=PATH時,需要從PCRE網站下載pcre庫的原始碼(版本4.4 - 8.30)並解壓,剩下的就交給Nginx的./configure和make來完成。perl正規表示式使用在location指令和 ngx_http_rewrite_module模組中。
  • --with-zlib=PATH : 指定 zlib(版本1.1.3 - 1.2.5)的原始碼解壓目錄。在預設就啟用的網路傳輸壓縮模組ngx_http_gzip_module時需要使用zlib 。
  • --with-http_ssl_module : 使用https協議模組。預設情況下,該模組沒有被構建。前提是openssl與openssl-devel已安裝
  • --with-http_stub_status_module : 用來監控 Nginx 的當前狀態
  • --with-http_realip_module : 通過這個模組允許我們改變客戶端請求頭中客戶端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意義在於能夠使得後臺伺服器記錄原始客戶端的IP地址
  • --add-module=PATH : 新增第三方外部模組,如nginx-sticky-module-ng或快取模組。每次新增新的模組都要重新編譯(Tengine可以在新加入module時無需重新編譯)

編譯安裝

這裡主要分為兩個步驟,首先是編譯,使用make命令,根據Makefile自動完成所有原始碼檔案的編譯工作,這個歌過程稱之為構建(building),並且可以做到增量編譯。打包好的原始碼一般包含一個特殊的make目標程式,它便是install,該目標程式將會在系統目錄下安裝最後生成的可執行程式,通常會安裝在目錄/usr/local/bin下(未指定的話)。

  • make clean: 清除編譯過程中產生的臨時檔案和配置過程中產生的檔案。
  • Makefile教程: http://www.ruanyifeng.com/blog/2015/02/make.html

解除安裝編譯安裝的軟體(最佳實踐)

一般不推薦使用原始碼進行編譯安裝,如果軟體有rpm包儘量避免使用原始碼安裝

  • 反安裝
    • 如果安裝的時候指定安裝目錄,則刪除指定目錄即可(最優秀做法
    • 如果安裝在/usr/*,則可以去執行make install的資料夾中執行make uninstall、make distclean、make veryclean等等命令
    • 但不是每個原始碼都提供解除安裝命令,如果沒有解除安裝命令的話,可以使用如下命令
  • 藉助checkinstall進行打包生成rpm包,進行安裝
    • 安裝checkinstall
      • 安裝地址: http://asic-linux.com.mx/~izto/checkinstall/download.php
      • 出錯問題: http://www.361way.com/rpmbuild-checkinstall/3251.html
    • 將未編譯的原始碼進行打包生成rpm包,然後使用rpm進行管理。
      • 執行./configure
      • 執行make命令
      • 執行checkinstall,根據提示建立一個rpm包
      • 輸入ms-sys命令測試是否可用
    • 後面使用根據rpm規範進行使用

rpm命令安裝軟體:安裝、刪除軟體包檔案的任務的低階工具

剩下的這兩種方法其實完全沒有講的必要,只要理解rpm和yum是什麼就ojbk了,剩下的許多操作,如果you 會English,you can use man yumman rpm檢視兩條命令的具體用法,再不濟,我下面會連結兩篇優異的博文,裡面有兩條命令的具體使用方法。

RPM軟體包分為二進位制包(Binary)、原始碼包(Source)和Delta包三種。二進位制包可以直接安裝在計算機中,而原始碼包將會由RPM自動編譯、安裝。原始碼包經常以.src、.rpm作為字尾名。 其實當有了原始碼的話可以生成各種型別的包,rpm包只是其中一種,比如上面我們使用checkinstall命令生成rpm包。

yum安裝軟體:後設資料搜尋以及提供依賴性解決的高階工具

yum的宗旨是自動化地升級,安裝/移除rpm包,收集rpm包的相關資訊,檢查依賴性並自動提示使用者解決。yum的關鍵之處是要有可靠的repository,顧名思義,這是軟體的倉庫,它可以是http或ftp站點, 也可以是本地軟體池,但必須包含rpm的header, header包括了rpm包的各種資訊,包括描述,功能,提供的檔案,依賴性等.正是收集了這些 header並加以分析,才能自動化地完成餘下的任務。它能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。自己本身也可以做yum伺服器,本身可以根據光碟映象做yum伺服器。

參考文件

相關文章